net: remove ndo_set_multicast_list callback
Remove no longer used operation. Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
afc4b13df1
commit
b81693d914
@ -73,7 +73,7 @@ dev->hard_start_xmit:
|
|||||||
has to lock by itself when needed. It is recommended to use a try lock
|
has to lock by itself when needed. It is recommended to use a try lock
|
||||||
for this and return NETDEV_TX_LOCKED when the spin lock fails.
|
for this and return NETDEV_TX_LOCKED when the spin lock fails.
|
||||||
The locking there should also properly protect against
|
The locking there should also properly protect against
|
||||||
set_multicast_list. Note that the use of NETIF_F_LLTX is deprecated.
|
set_rx_mode. Note that the use of NETIF_F_LLTX is deprecated.
|
||||||
Don't use it for new drivers.
|
Don't use it for new drivers.
|
||||||
|
|
||||||
Context: Process with BHs disabled or BH (timer),
|
Context: Process with BHs disabled or BH (timer),
|
||||||
@ -92,7 +92,7 @@ dev->tx_timeout:
|
|||||||
Context: BHs disabled
|
Context: BHs disabled
|
||||||
Notes: netif_queue_stopped() is guaranteed true
|
Notes: netif_queue_stopped() is guaranteed true
|
||||||
|
|
||||||
dev->set_multicast_list:
|
dev->set_rx_mode:
|
||||||
Synchronization: netif_tx_lock spinlock.
|
Synchronization: netif_tx_lock spinlock.
|
||||||
Context: BHs disabled
|
Context: BHs disabled
|
||||||
|
|
||||||
|
@ -726,9 +726,6 @@ struct netdev_tc_txq {
|
|||||||
* If driver handles unicast address filtering, it should set
|
* If driver handles unicast address filtering, it should set
|
||||||
* IFF_UNICAST_FLT to its priv_flags.
|
* IFF_UNICAST_FLT to its priv_flags.
|
||||||
*
|
*
|
||||||
* void (*ndo_set_multicast_list)(struct net_device *dev);
|
|
||||||
* This function is called when the multicast address list changes.
|
|
||||||
*
|
|
||||||
* int (*ndo_set_mac_address)(struct net_device *dev, void *addr);
|
* int (*ndo_set_mac_address)(struct net_device *dev, void *addr);
|
||||||
* This function is called when the Media Access Control address
|
* This function is called when the Media Access Control address
|
||||||
* needs to be changed. If this interface is not defined, the
|
* needs to be changed. If this interface is not defined, the
|
||||||
@ -870,7 +867,6 @@ struct net_device_ops {
|
|||||||
void (*ndo_change_rx_flags)(struct net_device *dev,
|
void (*ndo_change_rx_flags)(struct net_device *dev,
|
||||||
int flags);
|
int flags);
|
||||||
void (*ndo_set_rx_mode)(struct net_device *dev);
|
void (*ndo_set_rx_mode)(struct net_device *dev);
|
||||||
void (*ndo_set_multicast_list)(struct net_device *dev);
|
|
||||||
int (*ndo_set_mac_address)(struct net_device *dev,
|
int (*ndo_set_mac_address)(struct net_device *dev,
|
||||||
void *addr);
|
void *addr);
|
||||||
int (*ndo_validate_addr)(struct net_device *dev);
|
int (*ndo_validate_addr)(struct net_device *dev);
|
||||||
|
@ -4537,8 +4537,6 @@ void __dev_set_rx_mode(struct net_device *dev)
|
|||||||
|
|
||||||
if (ops->ndo_set_rx_mode)
|
if (ops->ndo_set_rx_mode)
|
||||||
ops->ndo_set_rx_mode(dev);
|
ops->ndo_set_rx_mode(dev);
|
||||||
else if (ops->ndo_set_multicast_list)
|
|
||||||
ops->ndo_set_multicast_list(dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dev_set_rx_mode(struct net_device *dev)
|
void dev_set_rx_mode(struct net_device *dev)
|
||||||
@ -4888,7 +4886,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
case SIOCADDMULTI:
|
case SIOCADDMULTI:
|
||||||
if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
|
if (!ops->ndo_set_rx_mode ||
|
||||||
ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
|
ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (!netif_device_present(dev))
|
if (!netif_device_present(dev))
|
||||||
@ -4896,7 +4894,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
|
|||||||
return dev_mc_add_global(dev, ifr->ifr_hwaddr.sa_data);
|
return dev_mc_add_global(dev, ifr->ifr_hwaddr.sa_data);
|
||||||
|
|
||||||
case SIOCDELMULTI:
|
case SIOCDELMULTI:
|
||||||
if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
|
if (!ops->ndo_set_rx_mode ||
|
||||||
ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
|
ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (!netif_device_present(dev))
|
if (!netif_device_present(dev))
|
||||||
|
@ -591,8 +591,8 @@ EXPORT_SYMBOL(dev_mc_del_global);
|
|||||||
* addresses that have no users left. The source device must be
|
* addresses that have no users left. The source device must be
|
||||||
* locked by netif_tx_lock_bh.
|
* locked by netif_tx_lock_bh.
|
||||||
*
|
*
|
||||||
* This function is intended to be called from the dev->set_multicast_list
|
* This function is intended to be called from the ndo_set_rx_mode
|
||||||
* or dev->set_rx_mode function of layered software devices.
|
* function of layered software devices.
|
||||||
*/
|
*/
|
||||||
int dev_mc_sync(struct net_device *to, struct net_device *from)
|
int dev_mc_sync(struct net_device *to, struct net_device *from)
|
||||||
{
|
{
|
||||||
|
@ -1009,7 +1009,7 @@ static void ip_mc_filter_add(struct in_device *in_dev, __be32 addr)
|
|||||||
|
|
||||||
/* Checking for IFF_MULTICAST here is WRONG-WRONG-WRONG.
|
/* Checking for IFF_MULTICAST here is WRONG-WRONG-WRONG.
|
||||||
We will get multicast token leakage, when IFF_MULTICAST
|
We will get multicast token leakage, when IFF_MULTICAST
|
||||||
is changed. This check should be done in dev->set_multicast_list
|
is changed. This check should be done in ndo_set_rx_mode
|
||||||
routine. Something sort of:
|
routine. Something sort of:
|
||||||
if (dev->mc_list && dev->flags&IFF_MULTICAST) { do it; }
|
if (dev->mc_list && dev->flags&IFF_MULTICAST) { do it; }
|
||||||
--ANK
|
--ANK
|
||||||
|
Reference in New Issue
Block a user