patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector
@ 2021-02-19  6:20 Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 1/4] net/ixgbe: add new flag of stripped VLAN for NEON Feifei Wang
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Feifei Wang @ 2021-02-19  6:20 UTC (permalink / raw)
  To: feifei.wang2, ruifeng.wang, stable; +Cc: nd

This patch series are mainly to enable checksum offloading for IXGBE NEON
vector PMD, including good and bad checksum flags. In the meanwhile, the
first patch enable VLAN stripping flag for Arm.
Following are the test results for the patches:

NICs: 82599(igb)
Driver: ixgbe(vector)
$:./app/dpdk-testpmd -c 0x3 -w 0002:f9:00.0 -- -i --port-topology=chained
test-pmd> set fwd rxonly
test-pmd> set verbose 1
test-pmd> start

With Patch a:
enable vlan stripping:
src=00:00:00:00:00:02 - dst=00:00:00:00:00:01 - type=0x0800 - length=70 - nb_segs=1 - VLAN tci=0x1
ol_flags: PKT_RX_VLAN PKT_RX_VLAN_STRIPPED

With Patch b:
Packet: IPv4_checksum = 0xee && UDP_checksum = 0xee
src=00:00:00:00:00:02 - dst=00:00:00:00:00:01 - type=0x0800 - length=70 - nb_segs=1
ol_flags: PKT_RX_L4_CKSUM_BAD PKT_RX_IP_CKSUM_BAD

With Patch c:
Packet: IPv4_checksum = correct value && UDP_checksum = correct value
ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD

Feifei Wang (4):
  a). net/ixgbe: add new flag of stripped VLAN for NEON vector
  b). net/ixgbe: support bad checksum flag for NEON vector
  c). net/ixgbe: support good checksum flag for NEON vector
  d). net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum

 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 94 ++++++++++++++++++-------
 1 file changed, 68 insertions(+), 26 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-stable] [PATCH 19.11 1/4] net/ixgbe: add new flag of stripped VLAN for NEON
  2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
@ 2021-02-19  6:20 ` Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 2/4] net/ixgbe: support bad checksum flag " Feifei Wang
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Feifei Wang @ 2021-02-19  6:20 UTC (permalink / raw)
  To: feifei.wang2, ruifeng.wang, stable; +Cc: nd

[upstream commit ff1294ca53ac0338746b7a6c818d208ef16c58a0 ]

For NEON vector of IXGBE PMD, introduce new flag PKT_RX_VLAN_STRIPPED to
show the case that the VLAN is stripped from the VLAN tagged packet.

This is because that the old flag PKT_RX_VLAN_PKT only indicates that the
packet is VLAN tagged, but cannot show whether VLAN is in m->vlan_tci or
in the packet at present. So add new flag to show the vlan has been
stripped by the hardware and its tci is saved in m->vlan_tci when vlan
stripping is enabled in the RX configuration of the IXGBE PMD.

Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM")

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 36 ++++++++++++++++---------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index b254fb0023..f71425d3e9 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -81,11 +81,9 @@ ixgbe_rxq_rearm(struct ixgbe_rx_queue *rxq)
 	IXGBE_PCI_REG_WRITE(rxq->rdt_reg_addr, rx_id);
 }
 
-#define VTAG_SHIFT     (3)
-
 static inline void
 desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
-		  uint8x16_t staterr, struct rte_mbuf **rx_pkts)
+		  uint8x16_t staterr, uint8_t vlan_flags, struct rte_mbuf **rx_pkts)
 {
 	uint8x16_t ptype;
 	uint8x16_t vtag;
@@ -95,13 +93,6 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 		uint32_t word;
 	} vol;
 
-	const uint8x16_t pkttype_msk = {
-			PKT_RX_VLAN, PKT_RX_VLAN,
-			PKT_RX_VLAN, PKT_RX_VLAN,
-			0x00, 0x00, 0x00, 0x00,
-			0x00, 0x00, 0x00, 0x00,
-			0x00, 0x00, 0x00, 0x00};
-
 	const uint8x16_t rsstype_msk = {
 			0x0F, 0x0F, 0x0F, 0x0F,
 			0x00, 0x00, 0x00, 0x00,
@@ -114,12 +105,26 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 			PKT_RX_RSS_HASH, 0, 0, 0,
 			0, 0, 0, PKT_RX_FDIR};
 
+	const uint8x16_t vlan_msk = {
+			IXGBE_RXD_STAT_VP, IXGBE_RXD_STAT_VP,
+			IXGBE_RXD_STAT_VP, IXGBE_RXD_STAT_VP,
+			0, 0, 0, 0,
+			0, 0, 0, 0,
+			0, 0, 0, 0};
+
+	const uint8x16_t vlan_map = {
+			0, 0, 0, 0,
+			0, 0, 0, 0,
+			vlan_flags, 0, 0, 0,
+			0, 0, 0, 0};
+
 	ptype = vzipq_u8(sterr_tmp1.val[0], sterr_tmp2.val[0]).val[0];
 	ptype = vandq_u8(ptype, rsstype_msk);
 	ptype = vqtbl1q_u8(rss_flags, ptype);
 
-	vtag = vshrq_n_u8(staterr, VTAG_SHIFT);
-	vtag = vandq_u8(vtag, pkttype_msk);
+	/* extract vlan_flags from IXGBE_RXD_STAT_VP bits of staterr */
+	vtag = vandq_u8(staterr, vlan_msk);
+	vtag = vqtbl1q_u8(vlan_map, vtag);
 	vtag = vorrq_u8(ptype, vtag);
 
 	vol.word = vgetq_lane_u32(vreinterpretq_u32_u8(vtag), 0);
@@ -221,6 +226,7 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		};
 	uint16x8_t crc_adjust = {0, 0, rxq->crc_len, 0,
 				 rxq->crc_len, 0, 0, 0};
+	uint8_t vlan_flags;
 
 	/* nb_pkts has to be floor-aligned to RTE_IXGBE_DESCS_PER_LOOP */
 	nb_pkts = RTE_ALIGN_FLOOR(nb_pkts, RTE_IXGBE_DESCS_PER_LOOP);
@@ -250,6 +256,10 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 	 */
 	sw_ring = &rxq->sw_ring[rxq->rx_tail];
 
+	/* ensure these 2 flags are in the lower 8 bits */
+	RTE_BUILD_BUG_ON((PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED) > UINT8_MAX);
+	vlan_flags = rxq->vlan_flags & UINT8_MAX;
+
 	/* A. load 4 packet in one loop
 	 * B. copy 4 mbuf point from swring to rx_pkts
 	 * C. calc the number of DD bits among the 4 packets
@@ -311,7 +321,7 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		staterr = vzipq_u8(sterr_tmp1.val[1], sterr_tmp2.val[1]).val[0];
 
 		/* set ol_flags with vlan packet type */
-		desc_to_olflags_v(sterr_tmp1, sterr_tmp2, staterr,
+		desc_to_olflags_v(sterr_tmp1, sterr_tmp2, staterr, vlan_flags,
 				  &rx_pkts[pos]);
 
 		/* D.2 pkt 3,4 set in_port/nb_seg and remove crc */
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-stable] [PATCH 19.11 2/4] net/ixgbe: support bad checksum flag for NEON
  2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 1/4] net/ixgbe: add new flag of stripped VLAN for NEON Feifei Wang
@ 2021-02-19  6:20 ` Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 3/4] net/ixgbe: support good " Feifei Wang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Feifei Wang @ 2021-02-19  6:20 UTC (permalink / raw)
  To: feifei.wang2, ruifeng.wang, stable; +Cc: nd

[ upstream commit f1657f97e4753efc77a331bb8aecb4f21869d7f7 ]

Updated desc_to_olflags_v() to support PKT_RX_IP_CKSUM_BAD and
PKT_RX_L4_CKSUM_BAD in the ol_flags of the mbuf.

And then the NEON vector RX function can be called with hw_ip_checksum
enabled.

Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM")

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 47 +++++++++++++++++++------
 1 file changed, 36 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index f71425d3e9..23c1e56ca4 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -87,6 +87,8 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 {
 	uint8x16_t ptype;
 	uint8x16_t vtag;
+	uint8x16_t temp_csum;
+	uint32x4_t csum = {0, 0, 0, 0};
 
 	union {
 		uint8_t e[4];
@@ -105,26 +107,51 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 			PKT_RX_RSS_HASH, 0, 0, 0,
 			0, 0, 0, PKT_RX_FDIR};
 
-	const uint8x16_t vlan_msk = {
+	/* mask everything except vlan present and l4/ip csum error */
+	const uint8x16_t vlan_csum_msk = {
 			IXGBE_RXD_STAT_VP, IXGBE_RXD_STAT_VP,
 			IXGBE_RXD_STAT_VP, IXGBE_RXD_STAT_VP,
 			0, 0, 0, 0,
 			0, 0, 0, 0,
-			0, 0, 0, 0};
-
-	const uint8x16_t vlan_map = {
+			(IXGBE_RXDADV_ERR_TCPE | IXGBE_RXDADV_ERR_IPE) >> 24,
+			(IXGBE_RXDADV_ERR_TCPE | IXGBE_RXDADV_ERR_IPE) >> 24,
+			(IXGBE_RXDADV_ERR_TCPE | IXGBE_RXDADV_ERR_IPE) >> 24,
+			(IXGBE_RXDADV_ERR_TCPE | IXGBE_RXDADV_ERR_IPE) >> 24};
+
+	/* map vlan present (0x8), IPE (0x2), L4E (0x1) to ol_flags */
+	const uint8x16_t vlan_csum_map = {
+			0,
+			PKT_RX_L4_CKSUM_BAD,
+			PKT_RX_IP_CKSUM_BAD,
+			PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD,
 			0, 0, 0, 0,
-			0, 0, 0, 0,
-			vlan_flags, 0, 0, 0,
+			vlan_flags,
+			vlan_flags | PKT_RX_L4_CKSUM_BAD,
+			vlan_flags | PKT_RX_IP_CKSUM_BAD,
+			vlan_flags | PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD,
 			0, 0, 0, 0};
 
 	ptype = vzipq_u8(sterr_tmp1.val[0], sterr_tmp2.val[0]).val[0];
 	ptype = vandq_u8(ptype, rsstype_msk);
 	ptype = vqtbl1q_u8(rss_flags, ptype);
 
-	/* extract vlan_flags from IXGBE_RXD_STAT_VP bits of staterr */
-	vtag = vandq_u8(staterr, vlan_msk);
-	vtag = vqtbl1q_u8(vlan_map, vtag);
+	/* extract vlan_flags and csum_error from staterr */
+	vtag = vandq_u8(staterr, vlan_csum_msk);
+
+	/* csum bits are in the most significant, to use shuffle we need to
+	 * shift them. Change mask from 0xc0 to 0x03.
+	 */
+	temp_csum = vshrq_n_u8(vtag, 6);
+
+	/* 'OR' the most significant 32 bits containing the checksum
+	 * flags with the vlan present flags
+	 * Then bits layout of each lane(8bits) will be 'xxxx,VP,x,IPE,L4E'
+	 */
+	csum = vsetq_lane_u32(vgetq_lane_u32(vreinterpretq_u32_u8(temp_csum), 3), csum, 0);
+	vtag = vorrq_u8(vreinterpretq_u8_u32(csum), vtag);
+
+	/* convert VP, IPE, L4E to ol_flags */
+	vtag = vqtbl1q_u8(vlan_csum_map, vtag);
 	vtag = vorrq_u8(ptype, vtag);
 
 	vol.word = vgetq_lane_u32(vreinterpretq_u32_u8(vtag), 0);
@@ -391,7 +418,6 @@ _recv_raw_pkts_vec(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  * Notice:
  * - nb_pkts < RTE_IXGBE_DESCS_PER_LOOP, just return no packet
  * - floor align nb_pkts to a RTE_IXGBE_DESC_PER_LOOP power-of-two
- * - don't support ol_flags for rss and csum err
  */
 uint16_t
 ixgbe_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
@@ -404,7 +430,6 @@ ixgbe_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
  * vPMD receive routine that reassembles scattered packets
  *
  * Notice:
- * - don't support ol_flags for rss and csum err
  * - nb_pkts < RTE_IXGBE_DESCS_PER_LOOP, just return no packet
  * - floor align nb_pkts to a RTE_IXGBE_DESC_PER_LOOP power-of-two
  */
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-stable] [PATCH 19.11 3/4] net/ixgbe: support good checksum flag for NEON
  2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 1/4] net/ixgbe: add new flag of stripped VLAN for NEON Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 2/4] net/ixgbe: support bad checksum flag " Feifei Wang
@ 2021-02-19  6:20 ` Feifei Wang
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 4/4] net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum Feifei Wang
  2021-02-22 13:21 ` [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Christian Ehrhardt
  4 siblings, 0 replies; 6+ messages in thread
From: Feifei Wang @ 2021-02-19  6:20 UTC (permalink / raw)
  To: feifei.wang2, ruifeng.wang, stable; +Cc: nd

[ upstream commit 4b194d481b8f1c42ec4b58d217effca7eecad621 ]

Add CKSUM_GOOD flag to distinguish a good checksum from an unknown one
in neon vertor RX function.

Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM")

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 37 +++++++++++++++++--------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index 23c1e56ca4..3aa5a1e056 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -86,13 +86,13 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 		  uint8x16_t staterr, uint8_t vlan_flags, struct rte_mbuf **rx_pkts)
 {
 	uint8x16_t ptype;
-	uint8x16_t vtag;
+	uint8x16_t vtag_lo, vtag_hi, vtag;
 	uint8x16_t temp_csum;
 	uint32x4_t csum = {0, 0, 0, 0};
 
 	union {
-		uint8_t e[4];
-		uint32_t word;
+		uint16_t e[4];
+		uint64_t word;
 	} vol;
 
 	const uint8x16_t rsstype_msk = {
@@ -119,18 +119,26 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 			(IXGBE_RXDADV_ERR_TCPE | IXGBE_RXDADV_ERR_IPE) >> 24};
 
 	/* map vlan present (0x8), IPE (0x2), L4E (0x1) to ol_flags */
-	const uint8x16_t vlan_csum_map = {
-			0,
-			PKT_RX_L4_CKSUM_BAD,
+	const uint8x16_t vlan_csum_map_lo = {
+			PKT_RX_IP_CKSUM_GOOD,
+			PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_BAD,
 			PKT_RX_IP_CKSUM_BAD,
 			PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD,
 			0, 0, 0, 0,
-			vlan_flags,
-			vlan_flags | PKT_RX_L4_CKSUM_BAD,
+			vlan_flags | PKT_RX_IP_CKSUM_GOOD,
+			vlan_flags | PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_BAD,
 			vlan_flags | PKT_RX_IP_CKSUM_BAD,
 			vlan_flags | PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD,
 			0, 0, 0, 0};
 
+	const uint8x16_t vlan_csum_map_hi = {
+			PKT_RX_L4_CKSUM_GOOD >> sizeof(uint8_t), 0,
+			PKT_RX_L4_CKSUM_GOOD >> sizeof(uint8_t), 0,
+			0, 0, 0, 0,
+			PKT_RX_L4_CKSUM_GOOD >> sizeof(uint8_t), 0,
+			PKT_RX_L4_CKSUM_GOOD >> sizeof(uint8_t), 0,
+			0, 0, 0, 0};
+
 	ptype = vzipq_u8(sterr_tmp1.val[0], sterr_tmp2.val[0]).val[0];
 	ptype = vandq_u8(ptype, rsstype_msk);
 	ptype = vqtbl1q_u8(rss_flags, ptype);
@@ -150,11 +158,16 @@ desc_to_olflags_v(uint8x16x2_t sterr_tmp1, uint8x16x2_t sterr_tmp2,
 	csum = vsetq_lane_u32(vgetq_lane_u32(vreinterpretq_u32_u8(temp_csum), 3), csum, 0);
 	vtag = vorrq_u8(vreinterpretq_u8_u32(csum), vtag);
 
-	/* convert VP, IPE, L4E to ol_flags */
-	vtag = vqtbl1q_u8(vlan_csum_map, vtag);
-	vtag = vorrq_u8(ptype, vtag);
+	/* convert L4 checksum correct type to vtag_hi */
+	vtag_hi = vqtbl1q_u8(vlan_csum_map_hi, vtag);
+	vtag_hi = vshrq_n_u8(vtag_hi, 7);
+
+	/* convert VP, IPE, L4E to vtag_lo */
+	vtag_lo = vqtbl1q_u8(vlan_csum_map_lo, vtag);
+	vtag_lo = vorrq_u8(ptype, vtag_lo);
 
-	vol.word = vgetq_lane_u32(vreinterpretq_u32_u8(vtag), 0);
+	vtag = vzipq_u8(vtag_lo, vtag_hi).val[0];
+	vol.word = vgetq_lane_u64(vreinterpretq_u64_u8(vtag), 0);
 
 	rx_pkts[0]->ol_flags = vol.e[0];
 	rx_pkts[1]->ol_flags = vol.e[1];
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-stable] [PATCH 19.11 4/4] net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum
  2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
                   ` (2 preceding siblings ...)
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 3/4] net/ixgbe: support good " Feifei Wang
@ 2021-02-19  6:20 ` Feifei Wang
  2021-02-22 13:21 ` [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Christian Ehrhardt
  4 siblings, 0 replies; 6+ messages in thread
From: Feifei Wang @ 2021-02-19  6:20 UTC (permalink / raw)
  To: feifei.wang2, ruifeng.wang, stable; +Cc: nd

[ upstream commit cf96160a0a95a8a9b99c14a1bf08ce4a417e6922 ]

IXGBE NEON vector PMD now supports checksum offloading, hence can be used
when DEV_RX_OFFLOAD_CHECKSUM is set.

Fixes: b4f3c136a179 ("net/ixgbe: support checksum flags in SSE vector Rx")

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index 3aa5a1e056..d6d941cbc6 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -638,11 +638,5 @@ ixgbe_txq_vec_setup(struct ixgbe_tx_queue *txq)
 int __attribute__((cold))
 ixgbe_rx_vec_dev_conf_condition_check(struct rte_eth_dev *dev)
 {
-	struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
-
-	/* no csum error report support */
-	if (rxmode->offloads & DEV_RX_OFFLOAD_CHECKSUM)
-		return -1;
-
 	return ixgbe_rx_vec_dev_conf_condition_check_default(dev);
 }
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector
  2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
                   ` (3 preceding siblings ...)
  2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 4/4] net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum Feifei Wang
@ 2021-02-22 13:21 ` Christian Ehrhardt
  4 siblings, 0 replies; 6+ messages in thread
From: Christian Ehrhardt @ 2021-02-22 13:21 UTC (permalink / raw)
  To: Feifei Wang; +Cc: ruifeng.wang, dpdk stable, nd

On Fri, Feb 19, 2021 at 7:20 AM Feifei Wang <feifei.wang2@arm.com> wrote:
>
> This patch series are mainly to enable checksum offloading for IXGBE NEON
> vector PMD, including good and bad checksum flags. In the meanwhile, the
> first patch enable VLAN stripping flag for Arm.
> Following are the test results for the patches:
>
> NICs: 82599(igb)
> Driver: ixgbe(vector)
> $:./app/dpdk-testpmd -c 0x3 -w 0002:f9:00.0 -- -i --port-topology=chained
> test-pmd> set fwd rxonly
> test-pmd> set verbose 1
> test-pmd> start
>
> With Patch a:
> enable vlan stripping:
> src=00:00:00:00:00:02 - dst=00:00:00:00:00:01 - type=0x0800 - length=70 - nb_segs=1 - VLAN tci=0x1
> ol_flags: PKT_RX_VLAN PKT_RX_VLAN_STRIPPED
>
> With Patch b:
> Packet: IPv4_checksum = 0xee && UDP_checksum = 0xee
> src=00:00:00:00:00:02 - dst=00:00:00:00:00:01 - type=0x0800 - length=70 - nb_segs=1
> ol_flags: PKT_RX_L4_CKSUM_BAD PKT_RX_IP_CKSUM_BAD
>
> With Patch c:
> Packet: IPv4_checksum = correct value && UDP_checksum = correct value
> ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD
>
> Feifei Wang (4):
>   a). net/ixgbe: add new flag of stripped VLAN for NEON vector
>   b). net/ixgbe: support bad checksum flag for NEON vector
>   c). net/ixgbe: support good checksum flag for NEON vector
>   d). net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum

Applied, thank you!

>  drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 94 ++++++++++++++++++-------
>  1 file changed, 68 insertions(+), 26 deletions(-)
>
> --
> 2.25.1
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-02-22 13:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-19  6:20 [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Feifei Wang
2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 1/4] net/ixgbe: add new flag of stripped VLAN for NEON Feifei Wang
2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 2/4] net/ixgbe: support bad checksum flag " Feifei Wang
2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 3/4] net/ixgbe: support good " Feifei Wang
2021-02-19  6:20 ` [dpdk-stable] [PATCH 19.11 4/4] net/ixgbe: enable IXGBE NEON vector PMD when CHECKSUM need to checksum Feifei Wang
2021-02-22 13:21 ` [dpdk-stable] [PATCH 19.11 0/4] Enable Checksum Offloading for NEON vector Christian Ehrhardt

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git