| 217 | } |
| 218 | |
| 219 | void sff_8024_show_encoding(const uint8_t *data, int encoding_offset, |
| 220 | int sff_type, struct rte_tel_data *d) |
| 221 | { |
| 222 | char val_string[SFF_ITEM_VAL_COMPOSE_SIZE]; |
| 223 | |
| 224 | snprintf(val_string, sizeof(val_string), "0x%02x", data[encoding_offset]); |
| 225 | |
| 226 | switch (data[encoding_offset]) { |
| 227 | case SFF_8024_ENCODING_UNSPEC: |
| 228 | strlcat(val_string, " (unspecified)", sizeof(val_string)); |
| 229 | break; |
| 230 | case SFF_8024_ENCODING_8B10B: |
| 231 | strlcat(val_string, " (8B/10B)", sizeof(val_string)); |
| 232 | break; |
| 233 | case SFF_8024_ENCODING_4B5B: |
| 234 | strlcat(val_string, " (4B/5B)", sizeof(val_string)); |
| 235 | break; |
| 236 | case SFF_8024_ENCODING_NRZ: |
| 237 | strlcat(val_string, " (NRZ)", sizeof(val_string)); |
| 238 | break; |
| 239 | case SFF_8024_ENCODING_4h: |
| 240 | if (sff_type == RTE_ETH_MODULE_SFF_8472) |
| 241 | strlcat(val_string, " (Manchester)", sizeof(val_string)); |
| 242 | else if (sff_type == RTE_ETH_MODULE_SFF_8636) |
| 243 | strlcat(val_string, " (SONET Scrambled)", sizeof(val_string)); |
| 244 | break; |
| 245 | case SFF_8024_ENCODING_5h: |
| 246 | if (sff_type == RTE_ETH_MODULE_SFF_8472) |
| 247 | strlcat(val_string, " (SONET Scrambled)", sizeof(val_string)); |
| 248 | else if (sff_type == RTE_ETH_MODULE_SFF_8636) |
| 249 | strlcat(val_string, " (64B/66B)", sizeof(val_string)); |
| 250 | break; |
| 251 | case SFF_8024_ENCODING_6h: |
| 252 | if (sff_type == RTE_ETH_MODULE_SFF_8472) |
| 253 | strlcat(val_string, " (64B/66B)", sizeof(val_string)); |
| 254 | else if (sff_type == RTE_ETH_MODULE_SFF_8636) |
| 255 | strlcat(val_string, " (Manchester)", sizeof(val_string)); |
| 256 | break; |
| 257 | case SFF_8024_ENCODING_256B: |
| 258 | strlcat(val_string, |
| 259 | " ((256B/257B (transcoded FEC-enabled data))", sizeof(val_string)); |
| 260 | break; |
| 261 | case SFF_8024_ENCODING_PAM4: |
| 262 | strlcat(val_string, " (PAM4)", sizeof(val_string)); |
| 263 | break; |
| 264 | default: |
| 265 | strlcat(val_string, " (reserved or unknown)", sizeof(val_string)); |
| 266 | break; |
| 267 | } |
| 268 | ssf_add_dict_string(d, "Encoding", val_string); |
| 269 | } |
| 270 | |
| 271 | void sff_show_thresholds(struct sff_diags sd, struct rte_tel_data *d) |
| 272 | { |
no test coverage detected