linux/drivers/net
Parav Pandit 98f91c4576 net/mlx5: Fix devlink objects and devlink device unregister sequence
Current below problems exists.

1. devlink device is registered by mlx5_load_one(). But it is
not unregistered by mlx5_unload_one(). This is incorrect.

2. Above issue leads to,
When mlx5 PCI device is removed, currently devlink device is
unregistered before devlink ports are unregistered in below ladder
diagram.

remove_one()
  mlx5_devlink_unregister()
    [..]
    devlink_unregister() <- ports are still registered!
  mlx5_unload_one()
    mlx5_unregister_device()
      mlx5_remove_device()
        mlx5e_remove()
          mlx5e_devlink_port_unregister()
            devlink_port_unregister()

3. Condition checking for registering and unregister device are not
symmetric either in these routines.

Hence, fix the sequence by having load and unload routines symmetric
and in right order.
i.e.
(a) register devlink device followed by registering devlink ports
(b) unregister devlink ports followed by devlink device

Do this based on boot and cleanup flags instead of different
conditions.

Fixes: c6acd629ee ("net/mlx5e: Add support for devlink-port in non-representors mode")
Fixes: f60f315d33 ("net/mlx5e: Register devlink ports for physical link, PCI PF, VFs")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Moshe Shemesh <moshe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
2020-06-11 15:38:02 -07:00
..
appletalk
arcnet
bonding net: change addr_list_lock back to static key 2020-06-09 12:59:45 -07:00
caif
can net: Fix return value about devm_platform_ioremap_resource() 2020-05-23 16:28:25 -07:00
dsa net: dsa: lantiq_gswip: fix and improve the unsupported interface error 2020-06-07 17:09:46 -07:00
ethernet net/mlx5: Fix devlink objects and devlink device unregister sequence 2020-06-11 15:38:02 -07:00
fddi
fjes
hamradio net: change addr_list_lock back to static key 2020-06-09 12:59:45 -07:00
hippi
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-06-03 16:27:18 -07:00
ieee802154
ipa drivers: ipa: remove discription of nonexistent element 2020-05-27 14:58:28 -07:00
ipvlan
netdevsim netdevsim: Register control traps 2020-06-01 11:49:23 -07:00
phy net: dp83869: Reset return variable if PHY strap is read 2020-06-06 15:53:44 -07:00
plip
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
slip
team
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-31 17:48:46 -07:00
vmxnet3 vmxnet3: allow rx flow hash ops only when rss is enabled 2020-06-02 15:12:33 -07:00
wan
wimax
wireguard wireguard: noise: separate receive counter from send counter 2020-05-20 20:55:09 -07:00
wireless net: change addr_list_lock back to static key 2020-06-09 12:59:45 -07:00
xen-netback
bareudp.c
dummy.c
eql.c
geneve.c geneve: change from tx_error to tx_dropped on missing metadata 2020-06-04 15:45:15 -07:00
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c net: change addr_list_lock back to static key 2020-06-09 12:59:45 -07:00
macvlan.c net: change addr_list_lock back to static key 2020-06-09 12:59:45 -07:00
macvtap.c
Makefile
mdio.c
mii.c
net_failover.c net_failover: fixed rollback in net_failover_open() 2020-06-02 15:35:53 -07:00
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c xdp: Rename convert_to_xdp_frame in xdp_convert_buff_to_frame 2020-06-01 15:02:53 -07:00
veth.c xdp: Rename convert_to_xdp_frame in xdp_convert_buff_to_frame 2020-06-01 15:02:53 -07:00
virtio_net.c xdp: Rename convert_to_xdp_frame in xdp_convert_buff_to_frame 2020-06-01 15:02:53 -07:00
vrf.c
vsockmon.c
vxlan.c vxlan: Remove access to nexthop group struct 2020-06-10 13:20:20 -07:00
xen-netfront.c