net/mlx5e: Enable TC offload for ingress MACVLAN over bond
authorMaor Dickman <maord@nvidia.com>
Tue, 14 Mar 2023 05:42:33 +0000 (22:42 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 16 Mar 2023 05:12:09 +0000 (22:12 -0700)
Support offloading of TC rules that filter ingress traffic from a MACVLAN
device, which is attached to bond device.

Signed-off-by: Maor Dickman <maord@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Link: https://lore.kernel.org/r/20230314054234.267365-15-saeed@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c

index b4af006dc4940ad6ece6132cd87f7b3bf68141d6..19c4a83982ca554698cad5f3b482119fe189e22f 100644 (file)
@@ -433,6 +433,7 @@ mlx5e_rep_check_indr_block_supported(struct mlx5e_rep_priv *rpriv,
 {
        struct mlx5e_priv *priv = netdev_priv(rpriv->netdev);
        struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
+       struct net_device *macvlan_real_dev;
 
        if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS &&
            f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS)
@@ -450,7 +451,11 @@ mlx5e_rep_check_indr_block_supported(struct mlx5e_rep_priv *rpriv,
                        return false;
                }
 
-               if (macvlan_dev_real_dev(netdev) == rpriv->netdev)
+               macvlan_real_dev = macvlan_dev_real_dev(netdev);
+
+               if (macvlan_real_dev == rpriv->netdev)
+                       return true;
+               if (netif_is_bond_master(macvlan_real_dev))
                        return true;
        }