On 5/17/2019 20:17, wenxu wrote: > > 在 2019/5/18 6:11, Mark Bloch 写道: >> >> On 5/17/19 2:17 AM, we...@ucloud.cn wrote: >>> From: wenxu <we...@ucloud.cn> >>> >>> The mlx5e support the lag mode. When add mlx_p0 and mlx_p1 to bond0. >>> packet received from mlx_p0 or mlx_p1 and in the ingress tc flower >>> forward to vf0. The tc rule can't be offloaded because there is >>> no indr_register_block for the bonding device. >>> >>> Signed-off-by: wenxu <we...@ucloud.cn> >>> --- >>> drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c >>> b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c >>> index 91e24f1..134fa0b 100644 >>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c >>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c >>> @@ -796,6 +796,7 @@ static int mlx5e_nic_rep_netdevice_event(struct >>> notifier_block *nb, >>> struct net_device *netdev = netdev_notifier_info_to_dev(ptr); >>> >>> if (!mlx5e_tc_tun_device_to_offload(priv, netdev) && >>> + !netif_is_bond_master(netdev) && >> I'm not that familiar with this code path, but shouldn't you check the mlx5e >> netdevices are slaves of the bond device (what if you have multiple >> bond devices in the system?) > > The bonding device is not simlilar with vlan device, when vlan device is > register, the real device is defintived. But the when the bonding device is > register, there maybe not slave device.
I know how bonding works, that's why I asked what I asked. It seems there is a piece of code missing which filters the rules (probably in mlx5e_configure_flower()) > > As the following codes. Any NETDEV_REGISTER EVENT will do indr register block. > > if (!mlx5e_tc_tun_device_to_offload(priv, netdev) && > !netif_is_bond_master(netdev) && > !is_vlan_dev(netdev)) > return NOTIFY_OK; > > switch (event) { > case NETDEV_REGISTER: > mlx5e_rep_indr_register_block(rpriv, netdev); > >>> !is_vlan_dev(netdev)) >>> return NOTIFY_OK; >>> >>> >> Mark Mark