[dpdk-dev] enic: set correct port ID in received mbufs

Message ID 1429021435-28414-1-git-send-email-adrien.mazarguil@6wind.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Adrien Mazarguil April 14, 2015, 2:23 p.m. UTC
  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>
---
 lib/librte_pmd_enic/enic.h        | 1 +
 lib/librte_pmd_enic/enic_ethdev.c | 1 +
 lib/librte_pmd_enic/enic_main.c   | 4 ++--
 3 files changed, 4 insertions(+), 2 deletions(-)
  

Comments

Sujith Sankar April 18, 2015, 5:49 p.m. UTC | #1
On 14/04/15 7:53 pm, "Adrien Mazarguil" <adrien.mazarguil@6wind.com> wrote:

>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>
>---
> lib/librte_pmd_enic/enic.h        | 1 +
> lib/librte_pmd_enic/enic_ethdev.c | 1 +
> lib/librte_pmd_enic/enic_main.c   | 4 ++--
> 3 files changed, 4 insertions(+), 2 deletions(-)
>
>diff --git a/lib/librte_pmd_enic/enic.h b/lib/librte_pmd_enic/enic.h
>index a50bff1..0eba334 100644
>--- a/lib/librte_pmd_enic/enic.h
>+++ b/lib/librte_pmd_enic/enic.h
>@@ -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];
>diff --git a/lib/librte_pmd_enic/enic_ethdev.c
>b/lib/librte_pmd_enic/enic_ethdev.c
>index 3e53f86..a319e1e 100644
>--- a/lib/librte_pmd_enic/enic_ethdev.c
>+++ b/lib/librte_pmd_enic/enic_ethdev.c
>@@ -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;
>diff --git a/lib/librte_pmd_enic/enic_main.c
>b/lib/librte_pmd_enic/enic_main.c
>index 0e40d46..15313c2 100644
>--- a/lib/librte_pmd_enic/enic_main.c
>+++ b/lib/librte_pmd_enic/enic_main.c
>@@ -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;
>-- 
>2.1.0

Acked-by: Sujith Sankar <ssujith@cisco.com>

Thanks,
-Sujith

>
  
Thomas Monjalon April 20, 2015, 1:23 p.m. UTC | #2
> >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>

Applied, thanks
  

Patch

diff --git a/lib/librte_pmd_enic/enic.h b/lib/librte_pmd_enic/enic.h
index a50bff1..0eba334 100644
--- a/lib/librte_pmd_enic/enic.h
+++ b/lib/librte_pmd_enic/enic.h
@@ -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];
diff --git a/lib/librte_pmd_enic/enic_ethdev.c b/lib/librte_pmd_enic/enic_ethdev.c
index 3e53f86..a319e1e 100644
--- a/lib/librte_pmd_enic/enic_ethdev.c
+++ b/lib/librte_pmd_enic/enic_ethdev.c
@@ -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;
diff --git a/lib/librte_pmd_enic/enic_main.c b/lib/librte_pmd_enic/enic_main.c
index 0e40d46..15313c2 100644
--- a/lib/librte_pmd_enic/enic_main.c
+++ b/lib/librte_pmd_enic/enic_main.c
@@ -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;