From ce07b1514d5961baf59ead7d030b522eb06ea527 Mon Sep 17 00:00:00 2001 From: Ophir Munk Date: Tue, 8 May 2018 12:26:03 +0000 Subject: [PATCH] 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 received 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 second capability was falsely returned by the mentioned API. This commit fixes it by returning the first capability. mlx4 HW performs CRC stripping by default and this capability is always reported as "true". The ability to enable/disable CRC stripping is supported since this commit and requires OFED version 4.3-1.5.0.0 or rdma-core version v18. CRC stripping will be done by default regardless of its configuration when working with OFED or rdma-core versions earlier than those previously specified or before this commit. Fixes: de1df14e6e6ec ("net/mlx4: support CRC strip toggling") Cc: stable@dpdk.org Signed-off-by: Ophir Munk --- doc/guides/nics/mlx4.rst | 7 +++++++ drivers/net/mlx4/mlx4_rxq.c | 5 ++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/guides/nics/mlx4.rst b/doc/guides/nics/mlx4.rst index 9564f890a9..509ac221cd 100644 --- a/doc/guides/nics/mlx4.rst +++ b/doc/guides/nics/mlx4.rst @@ -143,6 +143,13 @@ below. following limitation: VLAN filtering is not supported with this mode. This is the recommended mode in case VLAN filter is not needed. +Limitations +----------- + +- CRC stripping is supported by default and always reported as "true". + The ability to enable/disable CRC stripping requires OFED version + 4.3-1.5.0.0 and above or rdma-core version v18 and above. + Prerequisites ------------- diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c index 65f0994231..0650b104e0 100644 --- a/drivers/net/mlx4/mlx4_rxq.c +++ b/drivers/net/mlx4/mlx4_rxq.c @@ -665,10 +665,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.20.1