mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 16:26:46 +07:00
net: dev: Add NETDEV_PRE_CHANGEADDR
The NETDEV_CHANGEADDR notification is emitted after a device address changes. Extending this message to allow vetoing is certainly possible, but several other notification types have instead adopted a simple two-stage approach: first a "pre" notification is sent to make sure all interested parties are OK with a change that's about to be done. Then the change is done, and afterwards a "post" notification is sent. This dual approach is easier to use: when the change is vetoed, nothing has changed yet, and it's therefore unnecessary to roll anything back. Therefore adopt it for NETDEV_CHANGEADDR as well. To that end, add NETDEV_PRE_CHANGEADDR and an info structure to go along with it. Signed-off-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3a37a9636c
commit
1570415f08
@ -2450,7 +2450,8 @@ enum netdev_cmd {
|
||||
NETDEV_REGISTER,
|
||||
NETDEV_UNREGISTER,
|
||||
NETDEV_CHANGEMTU, /* notify after mtu change happened */
|
||||
NETDEV_CHANGEADDR,
|
||||
NETDEV_CHANGEADDR, /* notify after the address change */
|
||||
NETDEV_PRE_CHANGEADDR, /* notify before the address change */
|
||||
NETDEV_GOING_DOWN,
|
||||
NETDEV_CHANGENAME,
|
||||
NETDEV_FEAT_CHANGE,
|
||||
@ -2512,6 +2513,11 @@ struct netdev_notifier_changelowerstate_info {
|
||||
void *lower_state_info; /* is lower dev state */
|
||||
};
|
||||
|
||||
struct netdev_notifier_pre_changeaddr_info {
|
||||
struct netdev_notifier_info info; /* must be first */
|
||||
const unsigned char *dev_addr;
|
||||
};
|
||||
|
||||
static inline void netdev_notifier_info_init(struct netdev_notifier_info *info,
|
||||
struct net_device *dev)
|
||||
{
|
||||
|
@ -1589,6 +1589,7 @@ const char *netdev_cmd_to_name(enum netdev_cmd cmd)
|
||||
N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
|
||||
N(CVLAN_FILTER_PUSH_INFO) N(CVLAN_FILTER_DROP_INFO)
|
||||
N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
|
||||
N(PRE_CHANGEADDR)
|
||||
}
|
||||
#undef N
|
||||
return "UNKNOWN_NETDEV_EVENT";
|
||||
|
Loading…
Reference in New Issue
Block a user