[dpdk-dev] [PATCH 4/6] mlx5: process offload flags only when requested

Adrien Mazarguil adrien.mazarguil at 6wind.com
Fri Jan 29 11:32:51 CET 2016


From: Nelio Laranjeiro <nelio.laranjeiro at 6wind.com>

Improve performance by processing offloads only when requested by the
application.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro at 6wind.com>
---
 drivers/net/mlx5/mlx5_rxtx.c | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
index 63ddc53..c84ec8c 100644
--- a/drivers/net/mlx5/mlx5_rxtx.c
+++ b/drivers/net/mlx5/mlx5_rxtx.c
@@ -853,14 +853,16 @@ mlx5_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
 		NB_SEGS(pkt_buf) = j;
 		PORT(pkt_buf) = rxq->port_id;
 		PKT_LEN(pkt_buf) = pkt_buf_len;
-		pkt_buf->packet_type = rxq_cq_to_pkt_type(flags);
-		pkt_buf->ol_flags = rxq_cq_to_ol_flags(rxq, flags);
+		if (rxq->csum | rxq->csum_l2tun | rxq->vlan_strip) {
+			pkt_buf->packet_type = rxq_cq_to_pkt_type(flags);
+			pkt_buf->ol_flags = rxq_cq_to_ol_flags(rxq, flags);
 #ifdef HAVE_EXP_DEVICE_ATTR_VLAN_OFFLOADS
-		if (flags & IBV_EXP_CQ_RX_CVLAN_STRIPPED_V1) {
-			pkt_buf->ol_flags |= PKT_RX_VLAN_PKT;
-			pkt_buf->vlan_tci = vlan_tci;
-		}
+			if (flags & IBV_EXP_CQ_RX_CVLAN_STRIPPED_V1) {
+				pkt_buf->ol_flags |= PKT_RX_VLAN_PKT;
+				pkt_buf->vlan_tci = vlan_tci;
+			}
 #endif /* HAVE_EXP_DEVICE_ATTR_VLAN_OFFLOADS */
+		}
 
 		/* Return packet. */
 		*(pkts++) = pkt_buf;
@@ -1006,15 +1008,16 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
 		NEXT(seg) = NULL;
 		PKT_LEN(seg) = len;
 		DATA_LEN(seg) = len;
-		seg->packet_type = rxq_cq_to_pkt_type(flags);
-		seg->ol_flags = rxq_cq_to_ol_flags(rxq, flags);
+		if (rxq->csum | rxq->csum_l2tun | rxq->vlan_strip) {
+			seg->packet_type = rxq_cq_to_pkt_type(flags);
+			seg->ol_flags = rxq_cq_to_ol_flags(rxq, flags);
 #ifdef HAVE_EXP_DEVICE_ATTR_VLAN_OFFLOADS
-		if (flags & IBV_EXP_CQ_RX_CVLAN_STRIPPED_V1) {
-			seg->ol_flags |= PKT_RX_VLAN_PKT;
-			seg->vlan_tci = vlan_tci;
-		}
+			if (flags & IBV_EXP_CQ_RX_CVLAN_STRIPPED_V1) {
+				seg->ol_flags |= PKT_RX_VLAN_PKT;
+				seg->vlan_tci = vlan_tci;
+			}
 #endif /* HAVE_EXP_DEVICE_ATTR_VLAN_OFFLOADS */
-
+		}
 		/* Return packet. */
 		*(pkts++) = seg;
 		++pkts_ret;
-- 
2.1.4



More information about the dev mailing list