* [RFC 2/8] backports: add eth_prepare_mac_addr_change() and eth_commit_mac_addr_change()
@ 2013-07-30 11:50 Patrick Ziegler
0 siblings, 0 replies; only message in thread
From: Patrick Ziegler @ 2013-07-30 11:50 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: backports
These functions are required by qmi_wwan device driver.
Signed-off-by: Patrick Ziegler <patrick.ziegler@fh-kl.de>
---
backport/backport-include/linux/etherdevice.h | 7 ++++++
backport/backport-include/linux/if.h | 4 ++++
backport/compat/compat-3.9.c | 33 +++++++++++++++++++++++++++
3 files changed, 44 insertions(+)
diff --git a/backport/backport-include/linux/etherdevice.h b/backport/backport-include/linux/etherdevice.h
index 5c82fc4..b6617f0 100644
--- a/backport/backport-include/linux/etherdevice.h
+++ b/backport/backport-include/linux/etherdevice.h
@@ -114,6 +114,13 @@ static inline int is_unicast_ether_addr(const u8 *addr)
}
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
+#define eth_prepare_mac_addr_change LINUX_BACKPORT(eth_prepare_mac_addr_change)
+extern int eth_prepare_mac_addr_change(struct net_device *dev, void *p);
+#define eth_commit_mac_addr_change LINUX_BACKPORT(eth_commit_mac_addr_change)
+extern void eth_commit_mac_addr_change(struct net_device *dev, void *p);
+#endif /* < 3.9 */
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
#define eth_mac_addr LINUX_BACKPORT(eth_mac_addr)
extern int eth_mac_addr(struct net_device *dev, void *p);
diff --git a/backport/backport-include/linux/if.h b/backport/backport-include/linux/if.h
index 7926082..8f85b83 100644
--- a/backport/backport-include/linux/if.h
+++ b/backport/backport-include/linux/if.h
@@ -29,4 +29,8 @@
#define IFF_TX_SKB_SHARING 0x10000
#endif
+#ifndef IFF_LIVE_ADDR_CHANGE
+#define IFF_LIVE_ADDR_CHANGE 0x100000
+#endif
+
#endif /* _BACKPORT_LINUX_IF_H */
diff --git a/backport/compat/compat-3.9.c b/backport/compat/compat-3.9.c
index 03f3af8..1ce2dad 100644
--- a/backport/compat/compat-3.9.c
+++ b/backport/compat/compat-3.9.c
@@ -12,6 +12,9 @@
#include <linux/scatterlist.h>
#include <linux/device.h>
#include <linux/err.h>
+#include <linux/netdevice.h>
+#include <linux/if.h>
+#include <linux/if_ether.h>
#ifdef __sg_page_iter_next
@@ -64,4 +67,34 @@ void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res)
}
EXPORT_SYMBOL_GPL(devm_ioremap_resource);
+/**
+ * eth_prepare_mac_addr_change - prepare for mac change
+ * @dev: network device
+ * @p: socket address
+ */
+int eth_prepare_mac_addr_change(struct net_device *dev, void *p)
+{
+ struct sockaddr *addr = p;
+
+ if (!(dev->priv_flags & IFF_LIVE_ADDR_CHANGE) && netif_running(dev))
+ return -EBUSY;
+ if (!is_valid_ether_addr(addr->sa_data))
+ return -EADDRNOTAVAIL;
+ return 0;
+}
+EXPORT_SYMBOL(eth_prepare_mac_addr_change);
+
+/**
+ * eth_commit_mac_addr_change - commit mac change
+ * @dev: network device
+ * @p: socket address
+ */
+void eth_commit_mac_addr_change(struct net_device *dev, void *p)
+{
+ struct sockaddr *addr = p;
+
+ memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+}
+EXPORT_SYMBOL(eth_commit_mac_addr_change);
+
#endif /* __sg_page_iter_next */
--
1.8.1.2
--
Dipl.-Inf. (FH) Patrick Ziegler
University Of Applied Sciences
Kaiserslautern
Amerikastrasse 1
D-66482 Zweibruecken
Germany
Phone: +49 631 3724 5526
Mail: patrick.ziegler@fh-kl.de
PGP KeyID 0xB4796B8C
http://www.fh-kl.de
http://www.fh-kl.de/fachbereiche/imst/iuk-knowhow.html
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-07-30 12:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-30 11:50 [RFC 2/8] backports: add eth_prepare_mac_addr_change() and eth_commit_mac_addr_change() Patrick Ziegler
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.