examples: take promiscuous mode switch result into account
[dpdk.git] / examples / ipsec-secgw / ipsec-secgw.c
index fcd656b..dac0d18 100644 (file)
@@ -549,8 +549,10 @@ send_single_packet(struct rte_mbuf *m, uint16_t port, uint8_t proto)
                len++;
 
        /* need to fragment the packet */
-       } else
+       } else if (frag_tbl_sz > 0)
                len = send_fragment_packet(qconf, m, port, proto);
+       else
+               rte_pktmbuf_free(m);
 
        /* enough pkts to be sent */
        if (unlikely(len == MAX_PKT_BURST)) {
@@ -1912,7 +1914,11 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
        struct rte_ether_addr ethaddr;
        struct rte_eth_conf local_port_conf = port_conf;
 
-       rte_eth_dev_info_get(portid, &dev_info);
+       ret = rte_eth_dev_info_get(portid, &dev_info);
+       if (ret != 0)
+               rte_exit(EXIT_FAILURE,
+                       "Error during getting device (port %u) info: %s\n",
+                       portid, strerror(-ret));
 
        /* limit allowed HW offloafs, as user requested */
        dev_info.rx_offload_capa &= dev_rx_offload;
@@ -2464,8 +2470,13 @@ main(int32_t argc, char **argv)
                 * to itself through 2 cross-connected  ports of the
                 * target machine.
                 */
-               if (promiscuous_on)
-                       rte_eth_promiscuous_enable(portid);
+               if (promiscuous_on) {
+                       ret = rte_eth_promiscuous_enable(portid);
+                       if (ret != 0)
+                               rte_exit(EXIT_FAILURE,
+                                       "rte_eth_promiscuous_enable: err=%s, port=%d\n",
+                                       rte_strerror(-ret), portid);
+               }
 
                rte_eth_dev_callback_register(portid,
                        RTE_ETH_EVENT_IPSEC, inline_ipsec_event_callback, NULL);