X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fpcap%2Frte_eth_pcap.c;h=075e3bed55e3ef545482fb06d46daf1c5dec1163;hb=8dc7358b286e79d0acac5e0eb6e1a70a9b8652b0;hp=48d96fae50971ef499dd1e3dc6e8fd9b86f77dff;hpb=1445e83ca49515963b4ec72a38e788b772bf7ba0;p=dpdk.git diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 48d96fae50..075e3bed55 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -119,7 +119,6 @@ static struct ether_addr eth_addr = { .addr_bytes = { 0, 0, 0, 0x1, 0x2, 0x3 } }; -static const char *drivername = "Pcap PMD"; static struct rte_eth_link pmd_link = { .link_speed = ETH_SPEED_NUM_10G, .link_duplex = ETH_LINK_FULL_DUPLEX, @@ -222,8 +221,10 @@ eth_pcap_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) if (unlikely(eth_pcap_rx_jumbo(pcap_q->mb_pool, mbuf, packet, - header.caplen) == -1)) + header.caplen) == -1)) { + rte_pktmbuf_free(mbuf); break; + } } mbuf->pkt_len = (uint16_t)header.caplen; @@ -245,7 +246,7 @@ calculate_timestamp(struct timeval *ts) { cycles = rte_get_timer_cycles() - start_cycles; cur_time.tv_sec = cycles / hz; - cur_time.tv_usec = (cycles % hz) * 10e6 / hz; + cur_time.tv_usec = (cycles % hz) * 1e6 / hz; timeradd(&start_time, &cur_time, ts); } @@ -292,9 +293,9 @@ eth_pcap_tx_dumper(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) } } - rte_pktmbuf_free(mbuf); num_tx++; tx_bytes += mbuf->pkt_len; + rte_pktmbuf_free(mbuf); } /* @@ -550,14 +551,12 @@ eth_dev_info(struct rte_eth_dev *dev, { struct pmd_internals *internals = dev->data->dev_private; - dev_info->driver_name = drivername; dev_info->if_index = internals->if_index; dev_info->max_mac_addrs = 1; dev_info->max_rx_pktlen = (uint32_t) -1; dev_info->max_rx_queues = dev->data->nb_rx_queues; dev_info->max_tx_queues = dev->data->nb_tx_queues; dev_info->min_rx_bufsize = 0; - dev_info->pci_dev = NULL; } static void @@ -788,6 +787,8 @@ open_tx_iface(const char *key, const char *value, void *extra_args) return 0; } +static struct rte_vdev_driver pmd_pcap_drv; + static int pmd_init_internals(const char *name, const unsigned int nb_rx_queues, const unsigned int nb_tx_queues, @@ -840,7 +841,7 @@ pmd_init_internals(const char *name, const unsigned int nb_rx_queues, (*eth_dev)->driver = NULL; data->dev_flags = RTE_ETH_DEV_DETACHABLE; data->kdrv = RTE_KDRV_NONE; - data->drv_name = drivername; + data->drv_name = pmd_pcap_drv.driver.name; data->numa_node = numa_node; return 0; @@ -935,7 +936,7 @@ eth_from_pcaps(const char *name, struct pmd_devargs *rx_queues, } static int -pmd_pcap_devinit(const char *name, const char *params) +pmd_pcap_probe(const char *name, const char *params) { unsigned int is_rx_pcap = 0, is_tx_pcap = 0; struct rte_kvargs *kvlist; @@ -1034,7 +1035,7 @@ free_kvlist: } static int -pmd_pcap_devuninit(const char *name) +pmd_pcap_remove(const char *name) { struct rte_eth_dev *eth_dev = NULL; @@ -1058,12 +1059,13 @@ pmd_pcap_devuninit(const char *name) } static struct rte_vdev_driver pmd_pcap_drv = { - .init = pmd_pcap_devinit, - .uninit = pmd_pcap_devuninit, + .probe = pmd_pcap_probe, + .remove = pmd_pcap_remove, }; -DRIVER_REGISTER_VDEV(net_pcap, pmd_pcap_drv); -DRIVER_REGISTER_PARAM_STRING(net_pcap, +RTE_PMD_REGISTER_VDEV(net_pcap, pmd_pcap_drv); +RTE_PMD_REGISTER_ALIAS(net_pcap, eth_pcap); +RTE_PMD_REGISTER_PARAM_STRING(net_pcap, ETH_PCAP_RX_PCAP_ARG "= " ETH_PCAP_TX_PCAP_ARG "= " ETH_PCAP_RX_IFACE_ARG "= "