ethdev: introduce available Rx descriptors threshold
[dpdk.git] / lib / ethdev / sff_telemetry.c
index d415abd..887f07c 100644 (file)
@@ -70,6 +70,17 @@ sff_port_module_eeprom_parse(uint16_t port_id, struct rte_tel_data *d)
 
        switch (minfo.type) {
        /* parsing module EEPROM data base on different module type */
+       case RTE_ETH_MODULE_SFF_8079:
+               sff_8079_show_all(einfo.data, d);
+               break;
+       case RTE_ETH_MODULE_SFF_8472:
+               sff_8079_show_all(einfo.data, d);
+               sff_8472_show_all(einfo.data, d);
+               break;
+       case RTE_ETH_MODULE_SFF_8436:
+       case RTE_ETH_MODULE_SFF_8636:
+               sff_8636_show_all(einfo.data, einfo.length, d);
+               break;
        default:
                RTE_ETHDEV_LOG(NOTICE, "Unsupported module type: %u\n", minfo.type);
                break;
@@ -78,6 +89,36 @@ sff_port_module_eeprom_parse(uint16_t port_id, struct rte_tel_data *d)
        free(einfo.data);
 }
 
+void
+ssf_add_dict_string(struct rte_tel_data *d, const char *name_str, const char *value_str)
+{
+       struct tel_dict_entry *e = &d->data.dict[d->data_len];
+
+       if (d->type != RTE_TEL_DICT)
+               return;
+       if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) {
+               RTE_ETHDEV_LOG(ERR, "data_len has exceeded the maximum number of inserts\n");
+               return;
+       }
+
+       e->type = RTE_TEL_STRING_VAL;
+       /* append different values for same keys */
+       if (d->data_len > 0) {
+               struct tel_dict_entry *previous = &d->data.dict[d->data_len - 1];
+               if (strcmp(previous->name, name_str) == 0) {
+                       strlcat(previous->value.sval, "; ", RTE_TEL_MAX_STRING_LEN);
+                       strlcat(previous->value.sval, value_str, RTE_TEL_MAX_STRING_LEN);
+                       goto end;
+               }
+       }
+       strlcpy(e->value.sval, value_str, RTE_TEL_MAX_STRING_LEN);
+       strlcpy(e->name, name_str, RTE_TEL_MAX_STRING_LEN);
+       d->data_len++;
+
+end:
+       return;
+}
+
 int
 eth_dev_handle_port_module_eeprom(const char *cmd __rte_unused, const char *params,
                                  struct rte_tel_data *d)