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

Message ID 1525091101-10782-1-git-send-email-ophirmu@mellanox.com (mailing list archive)
State Superseded, archived
Delegated to: Shahaf Shuler
Headers

Checks

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

Commit Message

Ophir Munk April 30, 2018, 12:25 p.m. UTC
  There are two capabilities related to CRC stripping:
1. mlx4 HW capability to perform CRC stripping on a recieved packet.
This capability is built in mlx4 HW. It should be returned by the API
call mlx4_get_rx_queue_offloads().
2. mlx4 driver capability to enable/disable HW CRC stripping. This
capability is dependent on the driver version.
Before this commit the seccond capability was falsely returned by
the mentioned API. This commit fixes it by returning the first
capability.

Fixes: de1df14e6e6ec ("net/mlx4: support CRC strip toggling")
Cc: stable@dpdk.org

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
---
 drivers/net/mlx4/mlx4_rxq.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
  

Comments

Shahaf Shuler May 3, 2018, 5:47 a.m. UTC | #1
Hi Ophir,

Monday, April 30, 2018 3:25 PM, Ophir Munk:
> stable@dpdk.org
> Subject: [dpdk-stable] [PATCH v1] net/mlx4: fix CRC stripping capability
> report
> 
> There are two capabilities related to CRC stripping:
> 1. mlx4 HW capability to perform CRC stripping on a recieved packet.
> This capability is built in mlx4 HW. It should be returned by the API call
> mlx4_get_rx_queue_offloads().
> 2. mlx4 driver capability to enable/disable HW CRC stripping. This capability is
> dependent on the driver version.
> Before this commit the seccond capability was falsely returned by the
> mentioned API. This commit fixes it by returning the first capability.
> 

In this fix I also expect documentation update to say it is not possible to toggle CRC with OFED/rdma-core version less than XXX.

Because before this patch:
"if CRC offload is set application can set/disable the CRC strip. Otherwise it is always to strip"

With this patch:
"if ofed/rdma-core version is > XXX application can disable CRC strip. Otherwise it is always to strip"



> Fixes: de1df14e6e6ec ("net/mlx4: support CRC strip toggling")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
> ---
>  drivers/net/mlx4/mlx4_rxq.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c
> index b430678..88e5912 100644
> --- a/drivers/net/mlx4/mlx4_rxq.c
> +++ b/drivers/net/mlx4/mlx4_rxq.c
> @@ -658,10 +658,9 @@ mlx4_rxq_detach(struct rxq *rxq)  uint64_t
> mlx4_get_rx_queue_offloads(struct priv *priv)  {
> -	uint64_t offloads = DEV_RX_OFFLOAD_SCATTER;
> +	uint64_t offloads = DEV_RX_OFFLOAD_SCATTER |
> +			    DEV_RX_OFFLOAD_CRC_STRIP;
> 
> -	if (priv->hw_fcs_strip)
> -		offloads |= DEV_RX_OFFLOAD_CRC_STRIP;
>  	if (priv->hw_csum)
>  		offloads |= DEV_RX_OFFLOAD_CHECKSUM;
>  	return offloads;
> --
> 2.7.4
  

Patch

diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c
index b430678..88e5912 100644
--- a/drivers/net/mlx4/mlx4_rxq.c
+++ b/drivers/net/mlx4/mlx4_rxq.c
@@ -658,10 +658,9 @@  mlx4_rxq_detach(struct rxq *rxq)
 uint64_t
 mlx4_get_rx_queue_offloads(struct priv *priv)
 {
-	uint64_t offloads = DEV_RX_OFFLOAD_SCATTER;
+	uint64_t offloads = DEV_RX_OFFLOAD_SCATTER |
+			    DEV_RX_OFFLOAD_CRC_STRIP;
 
-	if (priv->hw_fcs_strip)
-		offloads |= DEV_RX_OFFLOAD_CRC_STRIP;
 	if (priv->hw_csum)
 		offloads |= DEV_RX_OFFLOAD_CHECKSUM;
 	return offloads;