On 08/02/2013 01:29 PM, Patrick Ziegler wrote: > These functions are required by qmi_wwan device driver. > > Signed-off-by: Patrick Ziegler <patrick.ziegler@xxxxxxxx> > --- > 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); Please add a empty line here to make it easier to read. > +#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..ba8e3cf 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_GPL(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_GPL(eth_commit_mac_addr_change); > + > #endif /* __sg_page_iter_next */ > -- To unsubscribe from this list: send the line "unsubscribe backports" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html