Merge branch 'macsec-fixes'
Sabrina Dubroca says: ==================== macsec: linkstate fixes This series fixes issues with handling administrative and operstate of macsec devices. Radu Rendec proposed another version of the first patch [0] but I'd rather not follow the behavior of vlan devices, going with macvlan does instead. Patrick Talbert also reported the same issue to me. The second patch is a follow-up. The restriction on setting the device up is a bit unreasonable, and operstate provides the information we need in this case. [0] https://patchwork.ozlabs.org/patch/971374/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
3bdf6bac58
@ -2812,9 +2812,6 @@ static int macsec_dev_open(struct net_device *dev)
|
||||
struct net_device *real_dev = macsec->real_dev;
|
||||
int err;
|
||||
|
||||
if (!(real_dev->flags & IFF_UP))
|
||||
return -ENETDOWN;
|
||||
|
||||
err = dev_uc_add(real_dev, dev->dev_addr);
|
||||
if (err < 0)
|
||||
return err;
|
||||
@ -3306,6 +3303,9 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
|
||||
if (err < 0)
|
||||
goto del_dev;
|
||||
|
||||
netif_stacked_transfer_operstate(real_dev, dev);
|
||||
linkwatch_fire_event(dev);
|
||||
|
||||
macsec_generation++;
|
||||
|
||||
return 0;
|
||||
@ -3490,6 +3490,20 @@ static int macsec_notify(struct notifier_block *this, unsigned long event,
|
||||
return NOTIFY_DONE;
|
||||
|
||||
switch (event) {
|
||||
case NETDEV_DOWN:
|
||||
case NETDEV_UP:
|
||||
case NETDEV_CHANGE: {
|
||||
struct macsec_dev *m, *n;
|
||||
struct macsec_rxh_data *rxd;
|
||||
|
||||
rxd = macsec_data_rtnl(real_dev);
|
||||
list_for_each_entry_safe(m, n, &rxd->secys, secys) {
|
||||
struct net_device *dev = m->secy.netdev;
|
||||
|
||||
netif_stacked_transfer_operstate(real_dev, dev);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NETDEV_UNREGISTER: {
|
||||
struct macsec_dev *m, *n;
|
||||
struct macsec_rxh_data *rxd;
|
||||
|
Loading…
Reference in New Issue
Block a user