nfp: flower: Allow ipv6gretap interface for offloading
authorYu Xiao <yu.xiao@corigine.com>
Fri, 29 Oct 2021 15:04:29 +0000 (17:04 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Nov 2021 13:09:55 +0000 (13:09 +0000)
The tunnel_type check only allows for "netif_is_gretap", but for
OVS the port is actually "netif_is_ip6gretap" when setting up GRE
for ipv6, which means offloading request was rejected before.

Therefore, adding "netif_is_ip6gretap" allow ipv6gretap interface
for offloading.

Signed-off-by: Yu Xiao <yu.xiao@corigine.com>
Signed-off-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/flower/action.c
drivers/net/ethernet/netronome/nfp/flower/cmsg.h
drivers/net/ethernet/netronome/nfp/flower/offload.c

index 2a432de11858da852710412964cf43be9aad39ed..a3242b36e216ecc81e7173970fa564e9652e7c22 100644 (file)
@@ -272,7 +272,8 @@ nfp_flower_tun_is_gre(struct flow_rule *rule, int start_idx)
        for (act_idx = start_idx + 1; act_idx < num_act; act_idx++)
                if (act[act_idx].id == FLOW_ACTION_REDIRECT ||
                    act[act_idx].id == FLOW_ACTION_MIRRED)
-                       return netif_is_gretap(act[act_idx].dev);
+                       return netif_is_gretap(act[act_idx].dev) ||
+                              netif_is_ip6gretap(act[act_idx].dev);
 
        return false;
 }
index a2926b1b3cff4a3c03a3f27688bab0f5256276cd..784292b162907001899727cf413726360ce82655 100644 (file)
@@ -703,7 +703,7 @@ nfp_fl_netdev_is_tunnel_type(struct net_device *netdev,
 {
        if (netif_is_vxlan(netdev))
                return tun_type == NFP_FL_TUNNEL_VXLAN;
-       if (netif_is_gretap(netdev))
+       if (netif_is_gretap(netdev) || netif_is_ip6gretap(netdev))
                return tun_type == NFP_FL_TUNNEL_GRE;
        if (netif_is_geneve(netdev))
                return tun_type == NFP_FL_TUNNEL_GENEVE;
index 64c0ef57ad42634a0d521f5d521084e5d44a1662..224089d04d983187a81e8b781460eaa6a6dcd220 100644 (file)
@@ -360,7 +360,7 @@ nfp_flower_calculate_key_layers(struct nfp_app *app,
 
                if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
                        /* check if GRE, which has no enc_ports */
-                       if (!netif_is_gretap(netdev)) {
+                       if (!netif_is_gretap(netdev) && !netif_is_ip6gretap(netdev)) {
                                NL_SET_ERR_MSG_MOD(extack, "unsupported offload: an exact match on L4 destination port is required for non-GRE tunnels");
                                return -EOPNOTSUPP;
                        }