On 5/17/2019 20:17, wenxu wrote:
>
> 在 2019/5/18 6:11, Mark Bloch 写道:
>>
>> On 5/17/19 2:17 AM, [email protected] wrote:
>>> From: wenxu <[email protected]>
>>>
>>> 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 <[email protected]>
>>> ---
>>> 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