X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Faf_packet%2Frte_eth_af_packet.c;h=767f36b656eda673c125825dd0899152117b3e52;hb=6069d815bc4dd73e82396a607882fe8395e592ed;hp=cac26e533813b820181661851032d5775ccf1de3;hpb=43254a336780a7d21c525097794a70a21a7fa2c4;p=dpdk.git diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index cac26e5338..767f36b656 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -5,7 +5,7 @@ * * Originally based upon librte_pmd_pcap code: * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * Copyright(c) 2014 6WIND S.A. * All rights reserved. * @@ -74,6 +74,7 @@ struct pkt_rx_queue { unsigned int framenum; struct rte_mempool *mb_pool; + uint8_t in_port; volatile unsigned long rx_pkts; volatile unsigned long err_pkts; @@ -160,6 +161,7 @@ eth_af_packet_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) ppd->tp_status = TP_STATUS_KERNEL; if (++framenum >= framecount) framenum = 0; + mbuf->port = pkt_q->in_port; /* account for the receive frame */ bufs[i] = mbuf; @@ -220,7 +222,8 @@ eth_af_packet_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) } /* kick-off transmits */ - sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0); + if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1) + return 0; /* error sending -- no packets transmitted */ pkt_q->framenum = framenum; pkt_q->tx_pkts += num_tx; @@ -364,6 +367,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, } dev->data->rx_queues[rx_queue_id] = pkt_q; + pkt_q->in_port = dev->data->port_id; return 0; } @@ -431,7 +435,6 @@ rte_pmd_init_internals(const char *name, struct rte_kvargs *kvlist) { struct rte_eth_dev_data *data = NULL; - struct rte_pci_device *pci_dev = NULL; struct rte_kvargs_pair *pair = NULL; struct ifreq ifr; size_t ifnamelen; @@ -469,10 +472,6 @@ rte_pmd_init_internals(const char *name, if (data == NULL) goto error_early; - pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node); - if (pci_dev == NULL) - goto error_early; - *internals = rte_zmalloc_socket(name, sizeof(**internals), 0, numa_node); if (*internals == NULL) @@ -655,8 +654,8 @@ rte_pmd_init_internals(const char *name, /* * now put it all together * - store queue data in internals, - * - store numa_node info in pci_driver - * - point eth_dev_data to internals and pci_driver + * - store numa_node in eth_dev + * - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ @@ -669,11 +668,13 @@ rte_pmd_init_internals(const char *name, data->dev_link = pmd_link; data->mac_addrs = &(*internals)->eth_addr; - pci_dev->numa_node = numa_node; - (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; - (*eth_dev)->pci_dev = pci_dev; + (*eth_dev)->driver = NULL; + (*eth_dev)->data->dev_flags = 0; + (*eth_dev)->data->drv_name = drivername; + (*eth_dev)->data->kdrv = RTE_KDRV_NONE; + (*eth_dev)->data->numa_node = numa_node; return 0; @@ -692,7 +693,6 @@ error: } rte_free(*internals); error_early: - rte_free(pci_dev); rte_free(data); return -1; }