Skip to content

Commit

Permalink
net: move address list functions to a separate file
Browse files Browse the repository at this point in the history
+little renaming of unicast functions to be smooth with multicast ones

Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Pirko authored and davem330 committed Apr 3, 2010
1 parent 9fc4178 commit a748ee2
Show file tree
Hide file tree
Showing 11 changed files with 524 additions and 464 deletions.
2 changes: 1 addition & 1 deletion drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1491,7 +1491,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
}

/* Flush unicast and multicast addresses */
dev_unicast_flush(bond_dev);
dev_uc_flush(bond_dev);
dev_addr_discard(bond_dev);

if (slave_dev->type != ARPHRD_ETHER)
Expand Down
10 changes: 5 additions & 5 deletions drivers/net/macvlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ static int macvlan_open(struct net_device *dev)
if (macvlan_addr_busy(vlan->port, dev->dev_addr))
goto out;

err = dev_unicast_add(lowerdev, dev->dev_addr);
err = dev_uc_add(lowerdev, dev->dev_addr);
if (err < 0)
goto out;
if (dev->flags & IFF_ALLMULTI) {
Expand All @@ -294,7 +294,7 @@ static int macvlan_open(struct net_device *dev)
return 0;

del_unicast:
dev_unicast_delete(lowerdev, dev->dev_addr);
dev_uc_del(lowerdev, dev->dev_addr);
out:
return err;
}
Expand All @@ -308,7 +308,7 @@ static int macvlan_stop(struct net_device *dev)
if (dev->flags & IFF_ALLMULTI)
dev_set_allmulti(lowerdev, -1);

dev_unicast_delete(lowerdev, dev->dev_addr);
dev_uc_del(lowerdev, dev->dev_addr);

macvlan_hash_del(vlan);
return 0;
Expand All @@ -332,11 +332,11 @@ static int macvlan_set_mac_address(struct net_device *dev, void *p)
if (macvlan_addr_busy(vlan->port, addr->sa_data))
return -EBUSY;

err = dev_unicast_add(lowerdev, addr->sa_data);
err = dev_uc_add(lowerdev, addr->sa_data);
if (err)
return err;

dev_unicast_delete(lowerdev, dev->dev_addr);
dev_uc_del(lowerdev, dev->dev_addr);

macvlan_hash_change_addr(vlan, addr->sa_data);
}
Expand Down
14 changes: 7 additions & 7 deletions drivers/scsi/fcoe/fcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,9 +308,9 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe,
* for multiple unicast MACs.
*/
memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN);
dev_unicast_add(netdev, flogi_maddr);
dev_uc_add(netdev, flogi_maddr);
if (fip->spma)
dev_unicast_add(netdev, fip->ctl_src_addr);
dev_uc_add(netdev, fip->ctl_src_addr);
dev_mc_add(netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0);

/*
Expand Down Expand Up @@ -394,9 +394,9 @@ void fcoe_interface_cleanup(struct fcoe_interface *fcoe)

/* Delete secondary MAC addresses */
memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN);
dev_unicast_delete(netdev, flogi_maddr);
dev_uc_del(netdev, flogi_maddr);
if (fip->spma)
dev_unicast_delete(netdev, fip->ctl_src_addr);
dev_uc_del(netdev, fip->ctl_src_addr);
dev_mc_delete(netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0);

/* Tell the LLD we are done w/ FCoE */
Expand Down Expand Up @@ -490,9 +490,9 @@ static void fcoe_update_src_mac(struct fc_lport *lport, u8 *addr)

rtnl_lock();
if (!is_zero_ether_addr(port->data_src_addr))
dev_unicast_delete(fcoe->netdev, port->data_src_addr);
dev_uc_del(fcoe->netdev, port->data_src_addr);
if (!is_zero_ether_addr(addr))
dev_unicast_add(fcoe->netdev, addr);
dev_uc_add(fcoe->netdev, addr);
memcpy(port->data_src_addr, addr, ETH_ALEN);
rtnl_unlock();
}
Expand Down Expand Up @@ -819,7 +819,7 @@ static void fcoe_if_destroy(struct fc_lport *lport)

rtnl_lock();
if (!is_zero_ether_addr(port->data_src_addr))
dev_unicast_delete(netdev, port->data_src_addr);
dev_uc_del(netdev, port->data_src_addr);
rtnl_unlock();

/* receives may not be stopped until after this */
Expand Down
15 changes: 10 additions & 5 deletions include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -1991,15 +1991,20 @@ extern int dev_addr_add_multiple(struct net_device *to_dev,
extern int dev_addr_del_multiple(struct net_device *to_dev,
struct net_device *from_dev,
unsigned char addr_type);
extern void dev_addr_flush(struct net_device *dev);
extern int dev_addr_init(struct net_device *dev);

/* Functions used for unicast addresses handling */
extern int dev_uc_add(struct net_device *dev, unsigned char *addr);
extern int dev_uc_del(struct net_device *dev, unsigned char *addr);
extern int dev_uc_sync(struct net_device *to, struct net_device *from);
extern void dev_uc_unsync(struct net_device *to, struct net_device *from);
extern void dev_uc_flush(struct net_device *dev);
extern void dev_uc_init(struct net_device *dev);

/* Functions used for secondary unicast and multicast support */
extern void dev_set_rx_mode(struct net_device *dev);
extern void __dev_set_rx_mode(struct net_device *dev);
extern int dev_unicast_delete(struct net_device *dev, void *addr);
extern int dev_unicast_add(struct net_device *dev, void *addr);
extern int dev_unicast_sync(struct net_device *to, struct net_device *from);
extern void dev_unicast_unsync(struct net_device *to, struct net_device *from);
extern void dev_unicast_flush(struct net_device *dev);
extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
extern int dev_mc_sync(struct net_device *to, struct net_device *from);
Expand Down
4 changes: 2 additions & 2 deletions net/8021q/vlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -356,13 +356,13 @@ static void vlan_sync_address(struct net_device *dev,
* the new address */
if (compare_ether_addr(vlandev->dev_addr, vlan->real_dev_addr) &&
!compare_ether_addr(vlandev->dev_addr, dev->dev_addr))
dev_unicast_delete(dev, vlandev->dev_addr);
dev_uc_del(dev, vlandev->dev_addr);

/* vlan address was equal to the old address and is different from
* the new address */
if (!compare_ether_addr(vlandev->dev_addr, vlan->real_dev_addr) &&
compare_ether_addr(vlandev->dev_addr, dev->dev_addr))
dev_unicast_add(dev, vlandev->dev_addr);
dev_uc_add(dev, vlandev->dev_addr);

memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN);
}
Expand Down
14 changes: 7 additions & 7 deletions net/8021q/vlan_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ static int vlan_dev_open(struct net_device *dev)
return -ENETDOWN;

if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr)) {
err = dev_unicast_add(real_dev, dev->dev_addr);
err = dev_uc_add(real_dev, dev->dev_addr);
if (err < 0)
goto out;
}
Expand Down Expand Up @@ -490,7 +490,7 @@ static int vlan_dev_open(struct net_device *dev)
dev_set_allmulti(real_dev, -1);
del_unicast:
if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
dev_unicast_delete(real_dev, dev->dev_addr);
dev_uc_del(real_dev, dev->dev_addr);
out:
netif_carrier_off(dev);
return err;
Expand All @@ -505,14 +505,14 @@ static int vlan_dev_stop(struct net_device *dev)
vlan_gvrp_request_leave(dev);

dev_mc_unsync(real_dev, dev);
dev_unicast_unsync(real_dev, dev);
dev_uc_unsync(real_dev, dev);
if (dev->flags & IFF_ALLMULTI)
dev_set_allmulti(real_dev, -1);
if (dev->flags & IFF_PROMISC)
dev_set_promiscuity(real_dev, -1);

if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
dev_unicast_delete(real_dev, dev->dev_addr);
dev_uc_del(real_dev, dev->dev_addr);

netif_carrier_off(dev);
return 0;
Expand All @@ -531,13 +531,13 @@ static int vlan_dev_set_mac_address(struct net_device *dev, void *p)
goto out;

if (compare_ether_addr(addr->sa_data, real_dev->dev_addr)) {
err = dev_unicast_add(real_dev, addr->sa_data);
err = dev_uc_add(real_dev, addr->sa_data);
if (err < 0)
return err;
}

if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
dev_unicast_delete(real_dev, dev->dev_addr);
dev_uc_del(real_dev, dev->dev_addr);

out:
memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
Expand Down Expand Up @@ -654,7 +654,7 @@ static void vlan_dev_change_rx_flags(struct net_device *dev, int change)
static void vlan_dev_set_rx_mode(struct net_device *vlan_dev)
{
dev_mc_sync(vlan_dev_info(vlan_dev)->real_dev, vlan_dev);
dev_unicast_sync(vlan_dev_info(vlan_dev)->real_dev, vlan_dev);
dev_uc_sync(vlan_dev_info(vlan_dev)->real_dev, vlan_dev);
}

/*
Expand Down
3 changes: 2 additions & 1 deletion net/core/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ obj-y := sock.o request_sock.o skbuff.o iovec.o datagram.o stream.o scm.o \
obj-$(CONFIG_SYSCTL) += sysctl_net_core.o

obj-y += dev.o ethtool.o dev_mcast.o dst.o netevent.o \
neighbour.o rtnetlink.o utils.o link_watch.o filter.o
neighbour.o rtnetlink.o utils.o link_watch.o filter.o \
dev_addr_lists.o

obj-$(CONFIG_XFRM) += flow.o
obj-y += net-sysfs.o
Expand Down
Loading

0 comments on commit a748ee2

Please sign in to comment.