• Parav Pandit's avatar
    RDMA/core: Add GIDs while changing MAC addr only for registered ndev · d52ef88a
    Parav Pandit authored
    Currently when MAC address is changed, regardless of the netdev reg_state,
    GID entries are removed and added to reflect the new MAC address and new
    default GID entries.
    
    When a bonding device is used and the underlying PCI device is removed
    several netdevice events are generated. Two events of the interest are
    CHANGEADDR and UNREGISTER event on lower(slave) netdevice of the bond
    netdevice.
    
    Sometimes CHANGEADDR event is generated when netdev state is
    UNREGISTERING (after UNREGISTER event is generated). In this scenario, GID
    entries for default GIDs are added and never deleted because GID entries
    are deleted only when netdev state is < UNREGISTERED.
    
    This leads to non zero reference count on the netdevice. Due to this, PCI
    device unbind operation is getting stuck.
    
    To avoid it, when changing mac address, add GID entries only if netdev is
    in REGISTERED state.
    
    Fixes: 03db3a2d ("IB/core: Add RoCE GID table management")
    Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
    Reviewed-by: default avatarMark Bloch <markb@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    d52ef88a
roce_gid_mgmt.c 23.8 KB