On 08/02/2013 01:29 PM, Patrick Ziegler wrote:
> These functions are required by qmi_wwan device driver.
>
> Signed-off-by: Patrick Ziegler <[email protected]>
> ---
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html