net: remove dead code for add/del multiple
These function to manipulate multiple addresses are not used anywhere in current net-next tree. Some out of tree code maybe using these but too bad; they should submit their code upstream.. Also, make __hw_addr_flush local since only used by dev_addr_lists.c Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
6ea09d8a09
Коммит
477bb93320
|
@ -2810,17 +2810,10 @@ int register_netdev(struct net_device *dev);
|
||||||
void unregister_netdev(struct net_device *dev);
|
void unregister_netdev(struct net_device *dev);
|
||||||
|
|
||||||
/* General hardware address lists handling functions */
|
/* General hardware address lists handling functions */
|
||||||
int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
|
|
||||||
struct netdev_hw_addr_list *from_list,
|
|
||||||
int addr_len, unsigned char addr_type);
|
|
||||||
void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
|
|
||||||
struct netdev_hw_addr_list *from_list,
|
|
||||||
int addr_len, unsigned char addr_type);
|
|
||||||
int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
|
int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
|
||||||
struct netdev_hw_addr_list *from_list, int addr_len);
|
struct netdev_hw_addr_list *from_list, int addr_len);
|
||||||
void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
|
void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
|
||||||
struct netdev_hw_addr_list *from_list, int addr_len);
|
struct netdev_hw_addr_list *from_list, int addr_len);
|
||||||
void __hw_addr_flush(struct netdev_hw_addr_list *list);
|
|
||||||
void __hw_addr_init(struct netdev_hw_addr_list *list);
|
void __hw_addr_init(struct netdev_hw_addr_list *list);
|
||||||
|
|
||||||
/* Functions used for device addresses handling */
|
/* Functions used for device addresses handling */
|
||||||
|
@ -2828,10 +2821,6 @@ int dev_addr_add(struct net_device *dev, const unsigned char *addr,
|
||||||
unsigned char addr_type);
|
unsigned char addr_type);
|
||||||
int dev_addr_del(struct net_device *dev, const unsigned char *addr,
|
int dev_addr_del(struct net_device *dev, const unsigned char *addr,
|
||||||
unsigned char addr_type);
|
unsigned char addr_type);
|
||||||
int dev_addr_add_multiple(struct net_device *to_dev,
|
|
||||||
struct net_device *from_dev, unsigned char addr_type);
|
|
||||||
int dev_addr_del_multiple(struct net_device *to_dev,
|
|
||||||
struct net_device *from_dev, unsigned char addr_type);
|
|
||||||
void dev_addr_flush(struct net_device *dev);
|
void dev_addr_flush(struct net_device *dev);
|
||||||
int dev_addr_init(struct net_device *dev);
|
int dev_addr_init(struct net_device *dev);
|
||||||
|
|
||||||
|
|
|
@ -186,47 +186,6 @@ static int __hw_addr_sync_multiple(struct netdev_hw_addr_list *to_list,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
|
|
||||||
struct netdev_hw_addr_list *from_list,
|
|
||||||
int addr_len, unsigned char addr_type)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
struct netdev_hw_addr *ha, *ha2;
|
|
||||||
unsigned char type;
|
|
||||||
|
|
||||||
list_for_each_entry(ha, &from_list->list, list) {
|
|
||||||
type = addr_type ? addr_type : ha->type;
|
|
||||||
err = __hw_addr_add(to_list, ha->addr, addr_len, type);
|
|
||||||
if (err)
|
|
||||||
goto unroll;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
unroll:
|
|
||||||
list_for_each_entry(ha2, &from_list->list, list) {
|
|
||||||
if (ha2 == ha)
|
|
||||||
break;
|
|
||||||
type = addr_type ? addr_type : ha2->type;
|
|
||||||
__hw_addr_del(to_list, ha2->addr, addr_len, type);
|
|
||||||
}
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(__hw_addr_add_multiple);
|
|
||||||
|
|
||||||
void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
|
|
||||||
struct netdev_hw_addr_list *from_list,
|
|
||||||
int addr_len, unsigned char addr_type)
|
|
||||||
{
|
|
||||||
struct netdev_hw_addr *ha;
|
|
||||||
unsigned char type;
|
|
||||||
|
|
||||||
list_for_each_entry(ha, &from_list->list, list) {
|
|
||||||
type = addr_type ? addr_type : ha->type;
|
|
||||||
__hw_addr_del(to_list, ha->addr, addr_len, type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(__hw_addr_del_multiple);
|
|
||||||
|
|
||||||
/* This function only works where there is a strict 1-1 relationship
|
/* This function only works where there is a strict 1-1 relationship
|
||||||
* between source and destionation of they synch. If you ever need to
|
* between source and destionation of they synch. If you ever need to
|
||||||
* sync addresses to more then 1 destination, you need to use
|
* sync addresses to more then 1 destination, you need to use
|
||||||
|
@ -264,7 +223,7 @@ void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__hw_addr_unsync);
|
EXPORT_SYMBOL(__hw_addr_unsync);
|
||||||
|
|
||||||
void __hw_addr_flush(struct netdev_hw_addr_list *list)
|
static void __hw_addr_flush(struct netdev_hw_addr_list *list)
|
||||||
{
|
{
|
||||||
struct netdev_hw_addr *ha, *tmp;
|
struct netdev_hw_addr *ha, *tmp;
|
||||||
|
|
||||||
|
@ -274,7 +233,6 @@ void __hw_addr_flush(struct netdev_hw_addr_list *list)
|
||||||
}
|
}
|
||||||
list->count = 0;
|
list->count = 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__hw_addr_flush);
|
|
||||||
|
|
||||||
void __hw_addr_init(struct netdev_hw_addr_list *list)
|
void __hw_addr_init(struct netdev_hw_addr_list *list)
|
||||||
{
|
{
|
||||||
|
@ -400,59 +358,6 @@ int dev_addr_del(struct net_device *dev, const unsigned char *addr,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(dev_addr_del);
|
EXPORT_SYMBOL(dev_addr_del);
|
||||||
|
|
||||||
/**
|
|
||||||
* dev_addr_add_multiple - Add device addresses from another device
|
|
||||||
* @to_dev: device to which addresses will be added
|
|
||||||
* @from_dev: device from which addresses will be added
|
|
||||||
* @addr_type: address type - 0 means type will be used from from_dev
|
|
||||||
*
|
|
||||||
* Add device addresses of the one device to another.
|
|
||||||
**
|
|
||||||
* The caller must hold the rtnl_mutex.
|
|
||||||
*/
|
|
||||||
int dev_addr_add_multiple(struct net_device *to_dev,
|
|
||||||
struct net_device *from_dev,
|
|
||||||
unsigned char addr_type)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
|
|
||||||
ASSERT_RTNL();
|
|
||||||
|
|
||||||
if (from_dev->addr_len != to_dev->addr_len)
|
|
||||||
return -EINVAL;
|
|
||||||
err = __hw_addr_add_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
|
|
||||||
to_dev->addr_len, addr_type);
|
|
||||||
if (!err)
|
|
||||||
call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(dev_addr_add_multiple);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* dev_addr_del_multiple - Delete device addresses by another device
|
|
||||||
* @to_dev: device where the addresses will be deleted
|
|
||||||
* @from_dev: device supplying the addresses to be deleted
|
|
||||||
* @addr_type: address type - 0 means type will be used from from_dev
|
|
||||||
*
|
|
||||||
* Deletes addresses in to device by the list of addresses in from device.
|
|
||||||
*
|
|
||||||
* The caller must hold the rtnl_mutex.
|
|
||||||
*/
|
|
||||||
int dev_addr_del_multiple(struct net_device *to_dev,
|
|
||||||
struct net_device *from_dev,
|
|
||||||
unsigned char addr_type)
|
|
||||||
{
|
|
||||||
ASSERT_RTNL();
|
|
||||||
|
|
||||||
if (from_dev->addr_len != to_dev->addr_len)
|
|
||||||
return -EINVAL;
|
|
||||||
__hw_addr_del_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
|
|
||||||
to_dev->addr_len, addr_type);
|
|
||||||
call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(dev_addr_del_multiple);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unicast list handling functions
|
* Unicast list handling functions
|
||||||
*/
|
*/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче