aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/netdevice.h
diff options
context:
space:
mode:
authorJiri Pirko <jpirko@redhat.com>2009-06-16 21:12:19 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-18 03:29:08 -0400
commit31278e71471399beaff9280737e52b47db4dc345 (patch)
tree25fe2ff8e48a75b7f569dccc463f3bd2561c6c66 /include/linux/netdevice.h
parent7b85576d15bf2574b0a451108f59f9ad4170dd3f (diff)
net: group address list and its count
This patch is inspired by patch recently posted by Johannes Berg. Basically what my patch does is to group list and a count of addresses into newly introduced structure netdev_hw_addr_list. This brings us two benefits: 1) struct net_device becames a bit nicer. 2) in the future there will be a possibility to operate with lists independently on netdevices (with exporting right functions). I wanted to introduce this patch before I'll post a multicast lists conversion. Signed-off-by: Jiri Pirko <jpirko@redhat.com> drivers/net/bnx2.c | 4 +- drivers/net/e1000/e1000_main.c | 4 +- drivers/net/ixgbe/ixgbe_main.c | 6 +- drivers/net/mv643xx_eth.c | 2 +- drivers/net/niu.c | 4 +- drivers/net/virtio_net.c | 10 ++-- drivers/s390/net/qeth_l2_main.c | 2 +- include/linux/netdevice.h | 17 +++-- net/core/dev.c | 130 ++++++++++++++++++-------------------- 9 files changed, 89 insertions(+), 90 deletions(-) Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r--include/linux/netdevice.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9ea8d6dfe540..d4a4d9867794 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -224,6 +224,11 @@ struct netdev_hw_addr {
224 struct rcu_head rcu_head; 224 struct rcu_head rcu_head;
225}; 225};
226 226
227struct netdev_hw_addr_list {
228 struct list_head list;
229 int count;
230};
231
227struct hh_cache 232struct hh_cache
228{ 233{
229 struct hh_cache *hh_next; /* Next entry */ 234 struct hh_cache *hh_next; /* Next entry */
@@ -776,9 +781,8 @@ struct net_device
776 unsigned char addr_len; /* hardware address length */ 781 unsigned char addr_len; /* hardware address length */
777 unsigned short dev_id; /* for shared network cards */ 782 unsigned short dev_id; /* for shared network cards */
778 783
779 struct list_head uc_list; /* Secondary unicast mac 784 struct netdev_hw_addr_list uc; /* Secondary unicast
780 addresses */ 785 mac addresses */
781 int uc_count; /* Number of installed ucasts */
782 int uc_promisc; 786 int uc_promisc;
783 spinlock_t addr_list_lock; 787 spinlock_t addr_list_lock;
784 struct dev_addr_list *mc_list; /* Multicast mac addresses */ 788 struct dev_addr_list *mc_list; /* Multicast mac addresses */
@@ -810,7 +814,8 @@ struct net_device
810 because most packets are 814 because most packets are
811 unicast) */ 815 unicast) */
812 816
813 struct list_head dev_addr_list; /* list of device hw addresses */ 817 struct netdev_hw_addr_list dev_addrs; /* list of device
818 hw addresses */
814 819
815 unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ 820 unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */
816 821
@@ -1806,11 +1811,11 @@ static inline void netif_addr_unlock_bh(struct net_device *dev)
1806} 1811}
1807 1812
1808/* 1813/*
1809 * dev_addr_list walker. Should be used only for read access. Call with 1814 * dev_addrs walker. Should be used only for read access. Call with
1810 * rcu_read_lock held. 1815 * rcu_read_lock held.
1811 */ 1816 */
1812#define for_each_dev_addr(dev, ha) \ 1817#define for_each_dev_addr(dev, ha) \
1813 list_for_each_entry_rcu(ha, &dev->dev_addr_list, list) 1818 list_for_each_entry_rcu(ha, &dev->dev_addrs.list, list)
1814 1819
1815/* These functions live elsewhere (drivers/net/net_init.c, but related) */ 1820/* These functions live elsewhere (drivers/net/net_init.c, but related) */
1816 1821