On 17/05/2019 11:21, 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 for the non indr > rejistor 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) && > !is_vlan_dev(netdev)) > return NOTIFY_OK; > >
hmm. is this the only thing blocked you from offloading indirect from bond? when u add the rule from bond like this this also need to make sure the rule is duplicated to both eswitches in is_peer_flow_needed(). today we support bond offloading by using shared tc block. i.e. you add a shared tc block to bond and its slaves. then all rules you add to the shared block instead of a specific interface. this is also how OVS currently offload the rules with bond. when u add a bond port, ovs adds a shared tc block to the slaves. then new rules added to the tc block instead of the bond interface.