]> git.baikalelectronics.ru Git - kernel.git/commit
ionic: don't remove netdev->dev_addr when syncing uc list
authorShannon Nelson <snelson@pensando.io>
Fri, 8 Oct 2021 19:38:01 +0000 (12:38 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Oct 2021 09:40:17 +0000 (11:40 +0200)
commit848f299c82297ae2dcfebb4354ce3dd2abce10c7
tree08c4edabf09f686f1ceced29d1329fd9ef3676da
parent180ec1c78553cbc9c848a9a46b5d609def189e80
ionic: don't remove netdev->dev_addr when syncing uc list

commit 447bc3f7dddc927946b9fc8ffd32e144e81f8cb4 upstream.

Bridging, and possibly other upper stack gizmos, adds the
lower device's netdev->dev_addr to its own uc list, and
then requests it be deleted when the upper bridge device is
removed.  This delete request also happens with the bridging
vlan_filtering is enabled and then disabled.

Bonding has a similar behavior with the uc list, but since it
also uses set_mac to manage netdev->dev_addr, it doesn't have
the same the failure case.

Because we store our netdev->dev_addr in our uc list, we need
to ignore the delete request from dev_uc_sync so as to not
lose the address and all hope of communicating.  Note that
ndo_set_mac_address is expressly changing netdev->dev_addr,
so no limitation is set there.

Fixes: 5da11f2fd009 ("ionic: Add Rx filter and rx_mode ndo support")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/pensando/ionic/ionic_lif.c