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

Reply via email to