enic: fix port id in received mbufs
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Tue, 14 Apr 2015 14:23:55 +0000 (16:23 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 20 Apr 2015 13:21:31 +0000 (15:21 +0200)
This field is not supposed to contain the RX queue index. Applications can
rely on it to determine the port a given mbuf comes from.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Sujith Sankar <ssujith@cisco.com>
lib/librte_pmd_enic/enic.h
lib/librte_pmd_enic/enic_ethdev.c
lib/librte_pmd_enic/enic_main.c

index a50bff1..0eba334 100644 (file)
@@ -99,6 +99,7 @@ struct enic {
        struct vnic_dev_bar bar0;
        struct vnic_dev *vdev;
 
+       unsigned int port_id;
        struct rte_eth_dev *rte_dev;
        struct enic_fdir fdir;
        char bdf_name[ENICPMD_BDF_LENGTH];
index 3e53f86..a319e1e 100644 (file)
@@ -567,6 +567,7 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev)
 
        ENICPMD_FUNC_TRACE();
 
+       enic->port_id = eth_dev->data->port_id;
        enic->rte_dev = eth_dev;
        eth_dev->dev_ops = &enicpmd_eth_dev_ops;
        eth_dev->rx_pkt_burst = &enicpmd_recv_pkts;
index 0e40d46..15313c2 100644 (file)
@@ -344,7 +344,7 @@ static int enic_rq_alloc_buf(struct vnic_rq *rq)
                hdr_mbuf->data_off = RTE_PKTMBUF_HEADROOM;
 
                hdr_mbuf->nb_segs = 2;
-               hdr_mbuf->port = rq->index;
+               hdr_mbuf->port = enic->port_id;
                hdr_mbuf->next = mbuf;
 
                dma_addr = (dma_addr_t)
@@ -359,7 +359,7 @@ static int enic_rq_alloc_buf(struct vnic_rq *rq)
                type = RQ_ENET_TYPE_NOT_SOP;
        } else {
                mbuf->nb_segs = 1;
-               mbuf->port = rq->index;
+               mbuf->port = enic->port_id;
        }
 
        mbuf->data_off = RTE_PKTMBUF_HEADROOM;