VXLAN and GRE FW features have to currently be both advertised
for the driver to enable them.  Separate the handling.

Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vanderme...@netronome.com>
---
 .../net/ethernet/netronome/nfp/nfp_net_common.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c 
b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index a8b9fbab5f73..9b7f28c2e221 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -3745,15 +3745,18 @@ static void nfp_net_netdev_init(struct nfp_net *nn)
        }
        if (nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)
                netdev->hw_features |= NETIF_F_RXHASH;
-       if (nn->cap & NFP_NET_CFG_CTRL_VXLAN &&
-           nn->cap & NFP_NET_CFG_CTRL_NVGRE) {
+       if (nn->cap & NFP_NET_CFG_CTRL_VXLAN) {
                if (nn->cap & NFP_NET_CFG_CTRL_LSO)
-                       netdev->hw_features |= NETIF_F_GSO_GRE |
-                                              NETIF_F_GSO_UDP_TUNNEL;
-               nn->dp.ctrl |= NFP_NET_CFG_CTRL_VXLAN | NFP_NET_CFG_CTRL_NVGRE;
-
-               netdev->hw_enc_features = netdev->hw_features;
+                       netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL;
+               nn->dp.ctrl |= NFP_NET_CFG_CTRL_VXLAN;
        }
+       if (nn->cap & NFP_NET_CFG_CTRL_NVGRE) {
+               if (nn->cap & NFP_NET_CFG_CTRL_LSO)
+                       netdev->hw_features |= NETIF_F_GSO_GRE;
+               nn->dp.ctrl |= NFP_NET_CFG_CTRL_NVGRE;
+       }
+       if (nn->cap & (NFP_NET_CFG_CTRL_VXLAN | NFP_NET_CFG_CTRL_NVGRE))
+               netdev->hw_enc_features = netdev->hw_features;
 
        netdev->vlan_features = netdev->hw_features;
 
-- 
2.17.1

Reply via email to