summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@gmail.com>2013-01-21 02:17:22 +0100
committerDavid S. Miller <davem@davemloft.net>2013-01-21 20:07:44 +0100
commitfa0879e37b59e8e3f130a30a9e6fa515717c5bdd (patch)
tree04a7a3b6464b582a86d8193692a1588bf7049e53 /include
parentmove virtnet_send_command() above virtnet_set_mac_address() (diff)
downloadlinux-fa0879e37b59e8e3f130a30a9e6fa515717c5bdd.tar.xz
linux-fa0879e37b59e8e3f130a30a9e6fa515717c5bdd.zip
net: split eth_mac_addr for better error handling
When we set mac address, software mac address in system and hardware mac address all need to be updated. Current eth_mac_addr() doesn't allow callers to implement error handling nicely. This patch split eth_mac_addr() to prepare part and real commit part, then we can prepare first, and try to change hardware address, then do the real commit if hardware address is set successfully. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Amos Kong <akong@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/etherdevice.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index 1a43e1b4f7ad..c623861964e4 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -40,6 +40,8 @@ extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh,
extern void eth_header_cache_update(struct hh_cache *hh,
const struct net_device *dev,
const unsigned char *haddr);
+extern int eth_prepare_mac_addr_change(struct net_device *dev, void *p);
+extern void eth_commit_mac_addr_change(struct net_device *dev, void *p);
extern int eth_mac_addr(struct net_device *dev, void *p);
extern int eth_change_mtu(struct net_device *dev, int new_mtu);
extern int eth_validate_addr(struct net_device *dev);