[dpdk-dev,v1] net/tap: fix CRC stripping capability report

Message ID 1518446598-24238-1-git-send-email-ophirmu@mellanox.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ophir Munk Feb. 12, 2018, 2:43 p.m. UTC
  CRC stripping is executed outside of TAP PMD scope. There is no
prevention that TAP reports on Rx CRC stripping capability.
It is especially required when TAP is operating as failsafe sub-device
with another PCI sub-device which supports CRC stripping.
In the corrupted code TAP did not report on this capability which
caused failsafe to not report on it as well.
The fix is for TAP to report that Rx CRC stripping is supported.

Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API")
Cc: stable@dpdk.org

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
---
 drivers/net/tap/rte_eth_tap.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Thomas Monjalon Feb. 12, 2018, 5:55 p.m. UTC | #1
The title should be "add CRC stripping capability".

12/02/2018 15:43, Ophir Munk:
> CRC stripping is executed outside of TAP PMD scope. There is no
> prevention that TAP reports on Rx CRC stripping capability.

We could mention that the CRC stripping is done in the kernel.

> It is especially required when TAP is operating as failsafe sub-device
> with another PCI sub-device which supports CRC stripping.
> In the corrupted code TAP did not report on this capability which
> caused failsafe to not report on it as well.

You discover the bug with failsafe but it is not related at all.
I think you squeeze this part of the explanation.

> The fix is for TAP to report that Rx CRC stripping is supported.
> 
> Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API")

I don't think it is a root cause.
This capability is missing from day one:
Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD")

> Cc: stable@dpdk.org
> 
> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
  
Ophir Munk Feb. 12, 2018, 10:34 p.m. UTC | #2
Will issue v2 with commit message updated

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Monday, February 12, 2018 7:55 PM
> To: Ophir Munk <ophirmu@mellanox.com>
> Cc: dev@dpdk.org; Pascal Mazon <pascal.mazon@6wind.com>; Olga Shern
> <olgas@mellanox.com>
> Subject: Re: [dpdk-stable] [PATCH v1] net/tap: fix CRC stripping capability
> report
> 
> The title should be "add CRC stripping capability".
> 
> 12/02/2018 15:43, Ophir Munk:
> > CRC stripping is executed outside of TAP PMD scope. There is no
> > prevention that TAP reports on Rx CRC stripping capability.
> 
> We could mention that the CRC stripping is done in the kernel.
> 
> > It is especially required when TAP is operating as failsafe sub-device
> > with another PCI sub-device which supports CRC stripping.
> > In the corrupted code TAP did not report on this capability which
> > caused failsafe to not report on it as well.
> 
> You discover the bug with failsafe but it is not related at all.
> I think you squeeze this part of the explanation.
> 
> > The fix is for TAP to report that Rx CRC stripping is supported.
> >
> > Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API")
> 
> I don't think it is a root cause.
> This capability is missing from day one:
> Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD")
> 
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
  

Patch

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 9d39384..f09db0e 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -261,7 +261,8 @@  tap_rx_offload_get_port_capa(void)
 	return DEV_RX_OFFLOAD_SCATTER |
 	       DEV_RX_OFFLOAD_IPV4_CKSUM |
 	       DEV_RX_OFFLOAD_UDP_CKSUM |
-	       DEV_RX_OFFLOAD_TCP_CKSUM;
+	       DEV_RX_OFFLOAD_TCP_CKSUM |
+	       DEV_RX_OFFLOAD_CRC_STRIP;
 }
 
 static uint64_t
@@ -270,7 +271,8 @@  tap_rx_offload_get_queue_capa(void)
 	return DEV_RX_OFFLOAD_SCATTER |
 	       DEV_RX_OFFLOAD_IPV4_CKSUM |
 	       DEV_RX_OFFLOAD_UDP_CKSUM |
-	       DEV_RX_OFFLOAD_TCP_CKSUM;
+	       DEV_RX_OFFLOAD_TCP_CKSUM |
+	       DEV_RX_OFFLOAD_CRC_STRIP;
 }
 
 static bool