common/sfc_efx/base: fix indication of MAE encap support
authorIvan Malov <ivan.malov@oktetlabs.ru>
Sat, 10 Apr 2021 00:51:43 +0000 (03:51 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 13 Apr 2021 10:00:22 +0000 (12:00 +0200)
The indication fields in the MCDI response are individual
bits, but the current code mistakenly compares the larger
dword with 1. This breaks encap. type discovery. Fix that.

Fixes: 891408c45a63 ("common/sfc_efx/base: indicate MAE support for encapsulation")
Cc: stable@dpdk.org
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
drivers/common/sfc_efx/base/efx_mae.c

index e615610..80fe155 100644 (file)
@@ -46,17 +46,20 @@ efx_mae_get_capabilities(
 
        maep->em_encap_types_supported = 0;
 
-       if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN) == 1) {
+       if (MCDI_OUT_DWORD_FIELD(req, MAE_GET_CAPS_OUT_ENCAP_TYPES_SUPPORTED,
+           MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN) != 0) {
                maep->em_encap_types_supported |=
                    (1U << EFX_TUNNEL_PROTOCOL_VXLAN);
        }
 
-       if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE) == 1) {
+       if (MCDI_OUT_DWORD_FIELD(req, MAE_GET_CAPS_OUT_ENCAP_TYPES_SUPPORTED,
+           MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE) != 0) {
                maep->em_encap_types_supported |=
                    (1U << EFX_TUNNEL_PROTOCOL_GENEVE);
        }
 
-       if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE) == 1) {
+       if (MCDI_OUT_DWORD_FIELD(req, MAE_GET_CAPS_OUT_ENCAP_TYPES_SUPPORTED,
+           MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE) != 0) {
                maep->em_encap_types_supported |=
                    (1U << EFX_TUNNEL_PROTOCOL_NVGRE);
        }