pcap: fix Tx mbuf corruption
[dpdk.git] / lib / librte_pmd_pcap / rte_eth_pcap.c
index 680dfdc..6a411a9 100644 (file)
@@ -40,7 +40,7 @@
 #include <rte_string_fns.h>
 #include <rte_cycles.h>
 #include <rte_kvargs.h>
-#include <rte_vdev.h>
+#include <rte_dev.h>
 
 #include <net/if.h>
 
@@ -239,8 +239,9 @@ eth_pcap_tx(void *queue,
                mbuf = bufs[i];
                ret = pcap_sendpacket(tx_queue->pcap, (u_char*) mbuf->pkt.data,
                                mbuf->pkt.data_len);
-               if(likely(!ret))
-                       num_tx++;
+               if (unlikely(ret != 0))
+                       break;
+               num_tx++;
                rte_pktmbuf_free(mbuf);
        }
 
@@ -767,14 +768,10 @@ rte_pmd_pcap_devinit(const char *name, const char *params)
 
 }
 
-static struct rte_vdev_driver pmd_pcap_drv = {
+static struct rte_driver pmd_pcap_drv = {
        .name = "eth_pcap",
+       .type = PMD_VDEV,
        .init = rte_pmd_pcap_devinit,
 };
 
-__attribute__((constructor))
-static void
-rte_pmd_pcap_init(void)
-{
-       rte_eal_vdev_driver_register(&pmd_pcap_drv);
-}
+PMD_REGISTER_DRIVER(pmd_pcap_drv);