app/testpmd: add SW L4 checksum in multi-segments
[dpdk.git] / app / test-pmd / config.c
index f87d9d5..e812f57 100644 (file)
@@ -912,10 +912,15 @@ port_eeprom_display(portid_t port_id)
                return;
        }
 
-       char buf[len_eeprom];
        einfo.offset = 0;
        einfo.length = len_eeprom;
-       einfo.data = buf;
+       einfo.data = calloc(1, len_eeprom);
+       if (!einfo.data) {
+               fprintf(stderr,
+                       "Allocation of port %u eeprom data failed\n",
+                       port_id);
+               return;
+       }
 
        ret = rte_eth_dev_get_eeprom(port_id, &einfo);
        if (ret != 0) {
@@ -933,10 +938,12 @@ port_eeprom_display(portid_t port_id)
                        fprintf(stderr, "Unable to get EEPROM: %d\n", ret);
                        break;
                }
+               free(einfo.data);
                return;
        }
        rte_hexdump(stdout, "hexdump", einfo.data, einfo.length);
        printf("Finish -- Port: %d EEPROM length: %d bytes\n", port_id, len_eeprom);
+       free(einfo.data);
 }
 
 void
@@ -972,10 +979,15 @@ port_module_eeprom_display(portid_t port_id)
                return;
        }
 
-       char buf[minfo.eeprom_len];
        einfo.offset = 0;
        einfo.length = minfo.eeprom_len;
-       einfo.data = buf;
+       einfo.data = calloc(1, minfo.eeprom_len);
+       if (!einfo.data) {
+               fprintf(stderr,
+                       "Allocation of port %u eeprom data failed\n",
+                       port_id);
+               return;
+       }
 
        ret = rte_eth_dev_get_module_eeprom(port_id, &einfo);
        if (ret != 0) {
@@ -994,11 +1006,13 @@ port_module_eeprom_display(portid_t port_id)
                                ret);
                        break;
                }
+               free(einfo.data);
                return;
        }
 
        rte_hexdump(stdout, "hexdump", einfo.data, einfo.length);
        printf("Finish -- Port: %d MODULE EEPROM length: %d bytes\n", port_id, einfo.length);
+       free(einfo.data);
 }
 
 int
@@ -1971,6 +1985,7 @@ port_flow_validate(portid_t port_id,
 {
        struct rte_flow_error error;
        struct port_flow_tunnel *pft = NULL;
+       int ret;
 
        /* Poisoning to make sure PMDs update it in case of error. */
        memset(&error, 0x11, sizeof(error));
@@ -1984,10 +1999,11 @@ port_flow_validate(portid_t port_id,
                if (pft->actions)
                        actions = pft->actions;
        }
-       if (rte_flow_validate(port_id, attr, pattern, actions, &error))
-               return port_flow_complain(&error);
+       ret = rte_flow_validate(port_id, attr, pattern, actions, &error);
        if (tunnel_ops->enabled)
                port_flow_tunnel_offload_cmd_release(port_id, tunnel_ops, pft);
+       if (ret)
+               return port_flow_complain(&error);
        printf("Flow rule validated\n");
        return 0;
 }