* [RFC] net: refactor multicast/unicast address list
@ 2009-06-13 10:41 Johannes Berg
2009-06-13 12:28 ` Johannes Berg
0 siblings, 1 reply; 16+ messages in thread
From: Johannes Berg @ 2009-06-13 10:41 UTC (permalink / raw)
To: Netdev
I'm trying to use address lists without netdevs, but as
a first step I thought it would be good to reduce the
amount duplicated code between unicast and multicast
lists.
After introducing a new 'struct address_list', we can
unify a lot between these. The next step will probably
be exporting the __dev_addr_sync and __dev_addr_unsync
functions so I can use them without a netdev, but this
cleanup can stand on its own.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
Also reduces the number of exported symbols by 4.
arch/xtensa/platforms/iss/network.c | 2
drivers/infiniband/hw/nes/nes_nic.c | 4
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 2
drivers/media/dvb/dvb-core/dvb_net.c | 10 -
drivers/net/3c501.c | 2
drivers/net/3c505.c | 8 -
drivers/net/3c509.c | 8 -
drivers/net/3c515.c | 2
drivers/net/3c523.c | 6
drivers/net/3c527.c | 12 -
drivers/net/3c59x.c | 2
drivers/net/7990.c | 4
drivers/net/8139cp.c | 4
drivers/net/8139too.c | 4
drivers/net/82596.c | 10 -
drivers/net/a2065.c | 4
drivers/net/acenic.c | 2
drivers/net/amd8111e.c | 10 -
drivers/net/appletalk/ltpc.c | 2
drivers/net/ariadne.c | 2
drivers/net/arm/am79c961a.c | 2
drivers/net/arm/at91_ether.c | 6
drivers/net/arm/ether3.c | 2
drivers/net/arm/ixp4xx_eth.c | 4
drivers/net/arm/ks8695net.c | 6
drivers/net/at1700.c | 6
drivers/net/atarilance.c | 2
drivers/net/atl1c/atl1c_main.c | 2
drivers/net/atl1e/atl1e_main.c | 2
drivers/net/atlx/atl2.c | 2
drivers/net/atlx/atlx.c | 2
drivers/net/atp.c | 6
drivers/net/au1000_eth.c | 4
drivers/net/b44.c | 6
drivers/net/benet/be_main.c | 2
drivers/net/bfin_mac.c | 6
drivers/net/bmac.c | 12 -
drivers/net/bnx2.c | 8 -
drivers/net/bnx2x_main.c | 10 -
drivers/net/bonding/bond_main.c | 16 +-
drivers/net/cassini.c | 2
drivers/net/chelsio/common.h | 4
drivers/net/chelsio/cxgb2.c | 2
drivers/net/cpmac.c | 2
drivers/net/cris/eth_v10.c | 4
drivers/net/cs89x0.c | 2
drivers/net/cxgb3/common.h | 2
drivers/net/cxgb3/cxgb3_main.c | 4
drivers/net/de620.c | 2
drivers/net/declance.c | 4
drivers/net/defxx.c | 6
drivers/net/depca.c | 4
drivers/net/dl2k.c | 6
drivers/net/dm9000.c | 4
drivers/net/e100.c | 8 -
drivers/net/e1000/e1000_main.c | 6
drivers/net/e1000e/netdev.c | 8 -
drivers/net/eepro.c | 16 +-
drivers/net/eexpress.c | 8 -
drivers/net/ehea/ehea_main.c | 6
drivers/net/enc28j60.c | 2
drivers/net/enic/enic_main.c | 6
drivers/net/epic100.c | 6
drivers/net/eth16i.c | 2
drivers/net/ethoc.c | 2
drivers/net/ewrk3.c | 4
drivers/net/fealnx.c | 4
drivers/net/fec.c | 4
drivers/net/fec_mpc52xx.c | 4
drivers/net/forcedeth.c | 4
drivers/net/fs_enet/mac-fcc.c | 4
drivers/net/fs_enet/mac-fec.c | 4
drivers/net/fs_enet/mac-scc.c | 4
drivers/net/gianfar.c | 4
drivers/net/hamachi.c | 6
drivers/net/hp100.c | 6
drivers/net/ibm_newemac/core.c | 8 -
drivers/net/ibmlana.c | 2
drivers/net/ibmveth.c | 6
drivers/net/igb/igb_main.c | 8 -
drivers/net/igbvf/netdev.c | 8 -
drivers/net/ioc3-eth.c | 6
drivers/net/ipg.c | 6
drivers/net/isa-skeleton.c | 6
drivers/net/iseries_veth.c | 6
drivers/net/ixgb/ixgb_main.c | 8 -
drivers/net/ixgbe/ixgbe_main.c | 8 -
drivers/net/jme.c | 4
drivers/net/korina.c | 8 -
drivers/net/lance.c | 2
drivers/net/lib82596.c | 10 -
drivers/net/lib8390.c | 6
drivers/net/lp486e.c | 12 -
drivers/net/mac89x0.c | 2
drivers/net/macb.c | 6
drivers/net/mace.c | 4
drivers/net/macmace.c | 4
drivers/net/mlx4/en_netdev.c | 2
drivers/net/mv643xx_eth.c | 4
drivers/net/myri10ge/myri10ge.c | 2
drivers/net/natsemi.c | 4
drivers/net/netxen/netxen_nic_hw.c | 14 -
drivers/net/ni5010.c | 2
drivers/net/ni52.c | 4
drivers/net/ni65.c | 2
drivers/net/niu.c | 10 -
drivers/net/ns83820.c | 2
drivers/net/pci-skeleton.c | 4
drivers/net/pcmcia/3c574_cs.c | 2
drivers/net/pcmcia/3c589_cs.c | 2
drivers/net/pcmcia/axnet_cs.c | 6
drivers/net/pcmcia/fmvj18x_cs.c | 6
drivers/net/pcmcia/nmclan_cs.c | 16 +-
drivers/net/pcmcia/smc91c92_cs.c | 4
drivers/net/pcmcia/xirc2ps_cs.c | 10 -
drivers/net/pcnet32.c | 4
drivers/net/ps3_gelic_net.c | 4
drivers/net/qlge/qlge_main.c | 6
drivers/net/r6040.c | 12 -
drivers/net/r8169.c | 4
drivers/net/s2io.c | 8 -
drivers/net/sb1250-mac.c | 2
drivers/net/sc92031.c | 4
drivers/net/sfc/efx.c | 4
drivers/net/sgiseeq.c | 2
drivers/net/sis190.c | 4
drivers/net/sis900.c | 6
drivers/net/skfp/skfddi.c | 8 -
drivers/net/skge.c | 10 -
drivers/net/sky2.c | 6
drivers/net/smc911x.c | 8 -
drivers/net/smc9194.c | 4
drivers/net/smc91x.c | 8 -
drivers/net/smsc911x.c | 8 -
drivers/net/smsc9420.c | 4
drivers/net/sonic.c | 8 -
drivers/net/spider_net.c | 2
drivers/net/starfire.c | 8 -
drivers/net/sun3_82586.c | 4
drivers/net/sun3lance.c | 2
drivers/net/sunbmac.c | 6
drivers/net/sundance.c | 6
drivers/net/sungem.c | 6
drivers/net/sunhme.c | 12 -
drivers/net/sunlance.c | 4
drivers/net/sunqe.c | 6
drivers/net/sunvnet.c | 2
drivers/net/tc35815.c | 8 -
drivers/net/tehuti.c | 6
drivers/net/tg3.c | 4
drivers/net/tlan.c | 4
drivers/net/tokenring/3c359.c | 2
drivers/net/tokenring/ibmtr.c | 4
drivers/net/tokenring/lanstreamer.c | 2
drivers/net/tokenring/olympic.c | 2
drivers/net/tokenring/tms380tr.c | 4
drivers/net/tsi108_eth.c | 4
drivers/net/tulip/de2104x.c | 8 -
drivers/net/tulip/de4x5.c | 8 -
drivers/net/tulip/dmfe.c | 18 +-
drivers/net/tulip/tulip_core.c | 12 -
drivers/net/tulip/uli526x.c | 12 -
drivers/net/tulip/winbond-840.c | 4
drivers/net/typhoon.c | 6
drivers/net/ucc_geth.c | 4
drivers/net/usb/asix.c | 16 +-
drivers/net/usb/catc.c | 2
drivers/net/usb/dm9601.c | 8 -
drivers/net/usb/kaweth.c | 2
drivers/net/usb/mcs7830.c | 8 -
drivers/net/usb/pegasus.c | 2
drivers/net/usb/rtl8150.c | 2
drivers/net/usb/smsc95xx.c | 8 -
drivers/net/via-rhine.c | 4
drivers/net/via-velocity.c | 4
drivers/net/virtio_net.c | 20 +-
drivers/net/vxge/vxge-main.c | 6
drivers/net/wireless/airo.c | 2
drivers/net/wireless/arlan-main.c | 4
drivers/net/wireless/libertas/main.c | 2
drivers/net/wireless/netwave_cs.c | 8 -
drivers/net/wireless/orinoco/main.c | 6
drivers/net/wireless/ray_cs.c | 4
drivers/net/wireless/rndis_wlan.c | 8 -
drivers/net/wireless/wavelan.c | 14 -
drivers/net/wireless/wavelan_cs.c | 16 +-
drivers/net/wireless/zd1201.c | 8 -
drivers/net/yellowfin.c | 6
drivers/net/znet.c | 2
drivers/s390/net/qeth_l2_main.c | 4
drivers/staging/et131x/et131x_netdev.c | 14 -
drivers/staging/slicoss/slicoss.c | 4
drivers/staging/sxg/sxg.c | 4
include/linux/netdevice.h | 143 +++++++++++++++++--
net/bluetooth/bnep/netdev.c | 6
net/core/dev.c | 180 +++++++++----------------
net/core/dev_mcast.c | 96 -------------
net/irda/irlan/irlan_eth.c | 4
net/mac80211/main.c | 4
net/mac80211/scan.c | 8 -
200 files changed, 743 insertions(+), 778 deletions(-)
--- wireless-testing.orig/include/linux/netdevice.h 2009-06-13 12:29:25.000000000 +0200
+++ wireless-testing/include/linux/netdevice.h 2009-06-13 12:30:21.000000000 +0200
@@ -200,6 +200,11 @@ struct dev_addr_list
int da_gusers;
};
+struct address_list {
+ struct dev_addr_list *list;
+ int count;
+};
+
/*
* We tag multicasts with these structures.
*/
@@ -748,11 +753,9 @@ struct net_device
unsigned short dev_id; /* for shared network cards */
spinlock_t addr_list_lock;
- struct dev_addr_list *uc_list; /* Secondary unicast mac addresses */
- int uc_count; /* Number of installed ucasts */
- int uc_promisc;
- struct dev_addr_list *mc_list; /* Multicast mac addresses */
- int mc_count; /* Number of installed mcasts */
+ struct address_list uc; /* secondary unicast mac addresses */
+ int uc_promisc; /* Multicast mac addresses */
+ struct address_list mc;
unsigned int promiscuity;
unsigned int allmulti;
@@ -1792,24 +1795,128 @@ extern int register_netdev(struct net_d
extern void unregister_netdev(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, int alen);
-extern int dev_unicast_add(struct net_device *dev, void *addr, int alen);
-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 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);
-extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
-extern int __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all);
-extern int __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly);
-extern int __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
-extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
extern int dev_set_promiscuity(struct net_device *dev, int inc);
extern int dev_set_allmulti(struct net_device *dev, int inc);
extern void netdev_state_change(struct net_device *dev);
extern void netdev_bonding_change(struct net_device *dev);
extern void netdev_features_change(struct net_device *dev);
+
+int dev_addr_add(struct net_device *dev, struct address_list *alist,
+ void *addr, int alen, int glbl);
+int dev_addr_delete(struct net_device *dev, struct address_list *alist,
+ void *addr, int alen, int glbl);
+int dev_addr_sync(struct net_device *todev, struct address_list *to,
+ struct address_list *from);
+void dev_addr_unsync(struct net_device *todev, struct net_device *fromdev,
+ struct address_list *to, struct address_list *from);
+
+static inline int dev_mc_delete(struct net_device *dev, void *addr,
+ int alen, int glbl)
+{
+ return dev_addr_delete(dev, &dev->mc, addr, alen, glbl);
+}
+
+static inline int dev_mc_add(struct net_device *dev, void *addr,
+ int alen, int glbl)
+{
+ return dev_addr_add(dev, &dev->mc, addr, alen, glbl);
+}
+
+/**
+ * dev_mc_sync - Synchronize device's multicast list to another device
+ * @to: destination device
+ * @from: source device
+ *
+ * Add newly added addresses to the destination device and release
+ * addresses that have no users left. The source device must be
+ * locked by netif_tx_lock_bh.
+ *
+ * This function is intended to be called from the dev->set_multicast_list
+ * or dev->set_rx_mode function of layered software devices.
+ */
+static inline int dev_mc_sync(struct net_device *to, struct net_device *from)
+{
+ return dev_addr_sync(to, &to->mc, &from->mc);
+}
+
+/**
+ * dev_mc_unsync - Remove synchronized addresses from the destination
+ * device
+ * @to: destination device
+ * @from: source device
+ *
+ * Remove all addresses that were added to the destination device by
+ * dev_mc_sync(). This function is intended to be called from the
+ * dev->stop function of layered software devices.
+ */
+static inline void dev_mc_unsync(struct net_device *to, struct net_device *from)
+{
+ dev_addr_unsync(to, from, &to->mc, &from->mc);
+}
+
+/**
+ * dev_unicast_delete - Release secondary unicast address.
+ * @dev: device
+ * @addr: address to delete
+ * @alen: length of @addr
+ *
+ * Release reference to a secondary unicast address and remove it
+ * from the device if the reference count drops to zero.
+ *
+ * The caller must hold the rtnl_mutex.
+ */
+static inline int dev_unicast_delete(struct net_device *dev, void *addr, int alen)
+{
+ return dev_addr_delete(dev, &dev->uc, addr, alen, 0);
+}
+
+/**
+ * dev_unicast_add - add a secondary unicast address
+ * @dev: device
+ * @addr: address to add
+ * @alen: length of @addr
+ *
+ * Add a secondary unicast address to the device or increase
+ * the reference count if it already exists.
+ *
+ * The caller must hold the rtnl_mutex.
+ */
+static inline int dev_unicast_add(struct net_device *dev, void *addr, int alen)
+{
+ return dev_addr_add(dev, &dev->uc, addr, alen, 0);
+}
+
+/**
+ * dev_unicast_sync - Synchronize device's unicast list to another device
+ * @to: destination device
+ * @from: source device
+ *
+ * Add newly added addresses to the destination device and release
+ * addresses that have no users left. The source device must be
+ * locked by netif_tx_lock_bh.
+ *
+ * This function is intended to be called from the dev->set_rx_mode
+ * function of layered software devices.
+ */
+static inline int dev_unicast_sync(struct net_device *to, struct net_device *from)
+{
+ return dev_addr_sync(to, &to->uc, &from->uc);
+}
+
+/**
+ * dev_unicast_unsync - Remove synchronized addresses from the destination device
+ * @to: destination device
+ * @from: source device
+ *
+ * Remove all addresses that were added to the destination device by
+ * dev_unicast_sync(). This function is intended to be called from the
+ * dev->stop function of layered software devices.
+ */
+static inline void dev_unicast_unsync(struct net_device *to, struct net_device *from)
+{
+ dev_addr_unsync(to, from, &to->uc, &from->uc);
+}
+
/* Load a device via the kmod */
extern void dev_load(struct net *net, const char *name);
extern void dev_mcast_init(void);
--- wireless-testing.orig/net/bluetooth/bnep/netdev.c 2009-01-13 15:05:23.000000000 +0100
+++ wireless-testing/net/bluetooth/bnep/netdev.c 2009-06-13 12:29:32.000000000 +0200
@@ -64,7 +64,7 @@ static void bnep_net_set_mc_list(struct
struct sk_buff *skb;
int size;
- BT_DBG("%s mc_count %d", dev->name, dev->mc_count);
+ BT_DBG("%s mc_count %d", dev->name, dev->mc.count);
size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2;
skb = alloc_skb(size, GFP_ATOMIC);
@@ -87,7 +87,7 @@ static void bnep_net_set_mc_list(struct
memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
r->len = htons(ETH_ALEN * 2);
} else {
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
int i, len = skb->len;
if (dev->flags & IFF_BROADCAST) {
@@ -97,7 +97,7 @@ static void bnep_net_set_mc_list(struct
/* FIXME: We should group addresses here. */
- for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
+ for (i = 0; i < dev->mc.count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
dmi = dmi->next;
--- wireless-testing.orig/net/core/dev.c 2009-06-01 22:33:04.000000000 +0200
+++ wireless-testing/net/core/dev.c 2009-06-13 12:29:32.000000000 +0200
@@ -3412,7 +3412,7 @@ int dev_set_allmulti(struct net_device *
* filtering it is put in promiscuous mode while unicast addresses
* are present.
*/
-void __dev_set_rx_mode(struct net_device *dev)
+static void __dev_set_rx_mode(struct net_device *dev)
{
const struct net_device_ops *ops = dev->netdev_ops;
@@ -3429,10 +3429,10 @@ void __dev_set_rx_mode(struct net_device
/* Unicast addresses changes may only happen under the rtnl,
* therefore calling __dev_set_promiscuity here is safe.
*/
- if (dev->uc_count > 0 && !dev->uc_promisc) {
+ if (dev->uc.count > 0 && !dev->uc_promisc) {
__dev_set_promiscuity(dev, 1);
dev->uc_promisc = 1;
- } else if (dev->uc_count == 0 && dev->uc_promisc) {
+ } else if (dev->uc.count == 0 && dev->uc_promisc) {
__dev_set_promiscuity(dev, -1);
dev->uc_promisc = 0;
}
@@ -3449,9 +3449,10 @@ void dev_set_rx_mode(struct net_device *
netif_addr_unlock_bh(dev);
}
-int __dev_addr_delete(struct dev_addr_list **list, int *count,
- void *addr, int alen, int glbl)
+static int __dev_addr_delete(struct address_list *alist,
+ void *addr, int alen, int glbl)
{
+ struct dev_addr_list **list = &alist->list;
struct dev_addr_list *da;
for (; (da = *list) != NULL; list = &da->next) {
@@ -3468,16 +3469,32 @@ int __dev_addr_delete(struct dev_addr_li
*list = da->next;
kfree(da);
- (*count)--;
+ alist->count--;
return 0;
}
}
return -ENOENT;
}
-int __dev_addr_add(struct dev_addr_list **list, int *count,
- void *addr, int alen, int glbl)
+int dev_addr_delete(struct net_device *dev, struct address_list *alist,
+ void *addr, int alen, int glbl)
{
+ int err;
+
+ netif_addr_lock_bh(dev);
+ err = __dev_addr_delete(alist, addr, alen, glbl);
+ if (!err)
+ __dev_set_rx_mode(dev);
+ netif_addr_unlock_bh(dev);
+
+ return err;
+}
+EXPORT_SYMBOL(dev_addr_delete);
+
+static int __dev_addr_add(struct address_list *alist,
+ void *addr, int alen, int glbl)
+{
+ struct dev_addr_list **list = &alist->list;
struct dev_addr_list *da;
for (da = *list; da != NULL; da = da->next) {
@@ -3503,156 +3520,91 @@ int __dev_addr_add(struct dev_addr_list
da->da_gusers = glbl ? 1 : 0;
da->next = *list;
*list = da;
- (*count)++;
+ alist->count++;
return 0;
}
-/**
- * dev_unicast_delete - Release secondary unicast address.
- * @dev: device
- * @addr: address to delete
- * @alen: length of @addr
- *
- * Release reference to a secondary unicast address and remove it
- * from the device if the reference count drops to zero.
- *
- * The caller must hold the rtnl_mutex.
- */
-int dev_unicast_delete(struct net_device *dev, void *addr, int alen)
+int dev_addr_add(struct net_device *dev, struct address_list *alist,
+ void *addr, int alen, int glbl)
{
int err;
- ASSERT_RTNL();
-
netif_addr_lock_bh(dev);
- err = __dev_addr_delete(&dev->uc_list, &dev->uc_count, addr, alen, 0);
+ err = __dev_addr_add(alist, addr, alen, glbl);
if (!err)
__dev_set_rx_mode(dev);
netif_addr_unlock_bh(dev);
- return err;
-}
-EXPORT_SYMBOL(dev_unicast_delete);
-
-/**
- * dev_unicast_add - add a secondary unicast address
- * @dev: device
- * @addr: address to add
- * @alen: length of @addr
- *
- * Add a secondary unicast address to the device or increase
- * the reference count if it already exists.
- *
- * The caller must hold the rtnl_mutex.
- */
-int dev_unicast_add(struct net_device *dev, void *addr, int alen)
-{
- int err;
-
- ASSERT_RTNL();
- netif_addr_lock_bh(dev);
- err = __dev_addr_add(&dev->uc_list, &dev->uc_count, addr, alen, 0);
- if (!err)
- __dev_set_rx_mode(dev);
- netif_addr_unlock_bh(dev);
return err;
}
-EXPORT_SYMBOL(dev_unicast_add);
+EXPORT_SYMBOL(dev_addr_add);
-int __dev_addr_sync(struct dev_addr_list **to, int *to_count,
- struct dev_addr_list **from, int *from_count)
+static int __dev_addr_sync(struct address_list *to, struct address_list *from)
{
struct dev_addr_list *da, *next;
int err = 0;
- da = *from;
+ da = from->list;
while (da != NULL) {
next = da->next;
if (!da->da_synced) {
- err = __dev_addr_add(to, to_count,
- da->da_addr, da->da_addrlen, 0);
+ err = __dev_addr_add(to, da->da_addr, da->da_addrlen, 0);
if (err < 0)
break;
da->da_synced = 1;
da->da_users++;
} else if (da->da_users == 1) {
- __dev_addr_delete(to, to_count,
- da->da_addr, da->da_addrlen, 0);
- __dev_addr_delete(from, from_count,
- da->da_addr, da->da_addrlen, 0);
+ __dev_addr_delete(to, da->da_addr, da->da_addrlen, 0);
+ __dev_addr_delete(from, da->da_addr, da->da_addrlen, 0);
}
da = next;
}
return err;
}
-void __dev_addr_unsync(struct dev_addr_list **to, int *to_count,
- struct dev_addr_list **from, int *from_count)
+int dev_addr_sync(struct net_device *todev, struct address_list *to,
+ struct address_list *from)
+{
+ int err = 0;
+
+ netif_addr_lock_bh(todev);
+ err = __dev_addr_sync(to, from);
+ if (!err)
+ __dev_set_rx_mode(todev);
+ netif_addr_unlock_bh(todev);
+ return err;
+}
+EXPORT_SYMBOL(dev_addr_sync);
+
+static void __dev_addr_unsync(struct address_list *to, struct address_list *from)
{
struct dev_addr_list *da, *next;
- da = *from;
+ da = from->list;
while (da != NULL) {
next = da->next;
if (da->da_synced) {
- __dev_addr_delete(to, to_count,
- da->da_addr, da->da_addrlen, 0);
+ __dev_addr_delete(to, da->da_addr, da->da_addrlen, 0);
da->da_synced = 0;
- __dev_addr_delete(from, from_count,
- da->da_addr, da->da_addrlen, 0);
+ __dev_addr_delete(from, da->da_addr, da->da_addrlen, 0);
}
da = next;
}
}
-/**
- * dev_unicast_sync - Synchronize device's unicast list to another device
- * @to: destination device
- * @from: source device
- *
- * Add newly added addresses to the destination device and release
- * addresses that have no users left. The source device must be
- * locked by netif_tx_lock_bh.
- *
- * This function is intended to be called from the dev->set_rx_mode
- * function of layered software devices.
- */
-int dev_unicast_sync(struct net_device *to, struct net_device *from)
-{
- int err = 0;
-
- netif_addr_lock_bh(to);
- err = __dev_addr_sync(&to->uc_list, &to->uc_count,
- &from->uc_list, &from->uc_count);
- if (!err)
- __dev_set_rx_mode(to);
- netif_addr_unlock_bh(to);
- return err;
-}
-EXPORT_SYMBOL(dev_unicast_sync);
-
-/**
- * dev_unicast_unsync - Remove synchronized addresses from the destination device
- * @to: destination device
- * @from: source device
- *
- * Remove all addresses that were added to the destination device by
- * dev_unicast_sync(). This function is intended to be called from the
- * dev->stop function of layered software devices.
- */
-void dev_unicast_unsync(struct net_device *to, struct net_device *from)
+void dev_addr_unsync(struct net_device *todev, struct net_device *fromdev,
+ struct address_list *to, struct address_list *from)
{
- netif_addr_lock_bh(from);
- netif_addr_lock(to);
+ netif_addr_lock_bh(fromdev);
+ netif_addr_lock(todev);
- __dev_addr_unsync(&to->uc_list, &to->uc_count,
- &from->uc_list, &from->uc_count);
- __dev_set_rx_mode(to);
+ __dev_addr_unsync(to, from);
+ __dev_set_rx_mode(todev);
- netif_addr_unlock(to);
- netif_addr_unlock_bh(from);
+ netif_addr_unlock(todev);
+ netif_addr_unlock_bh(fromdev);
}
-EXPORT_SYMBOL(dev_unicast_unsync);
+EXPORT_SYMBOL(dev_addr_unsync);
static void __dev_addr_discard(struct dev_addr_list **list)
{
@@ -3672,11 +3624,11 @@ static void dev_addr_discard(struct net_
{
netif_addr_lock_bh(dev);
- __dev_addr_discard(&dev->uc_list);
- dev->uc_count = 0;
+ __dev_addr_discard(&dev->uc.list);
+ dev->uc.count = 0;
- __dev_addr_discard(&dev->mc_list);
- dev->mc_count = 0;
+ __dev_addr_discard(&dev->mc.list);
+ dev->mc.count = 0;
netif_addr_unlock_bh(dev);
}
--- wireless-testing.orig/net/core/dev_mcast.c 2009-06-13 12:29:25.000000000 +0200
+++ wireless-testing/net/core/dev_mcast.c 2009-06-13 12:29:32.000000000 +0200
@@ -64,97 +64,6 @@
* We block accesses to device mc filters with netif_tx_lock.
*/
-/*
- * Delete a device level multicast
- */
-
-int dev_mc_delete(struct net_device *dev, void *addr, int alen, int glbl)
-{
- int err;
-
- netif_addr_lock_bh(dev);
- err = __dev_addr_delete(&dev->mc_list, &dev->mc_count,
- addr, alen, glbl);
- if (!err) {
- /*
- * We have altered the list, so the card
- * loaded filter is now wrong. Fix it
- */
-
- __dev_set_rx_mode(dev);
- }
- netif_addr_unlock_bh(dev);
- return err;
-}
-
-/*
- * Add a device level multicast
- */
-
-int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl)
-{
- int err;
-
- netif_addr_lock_bh(dev);
- err = __dev_addr_add(&dev->mc_list, &dev->mc_count, addr, alen, glbl);
- if (!err)
- __dev_set_rx_mode(dev);
- netif_addr_unlock_bh(dev);
- return err;
-}
-
-/**
- * dev_mc_sync - Synchronize device's multicast list to another device
- * @to: destination device
- * @from: source device
- *
- * Add newly added addresses to the destination device and release
- * addresses that have no users left. The source device must be
- * locked by netif_tx_lock_bh.
- *
- * This function is intended to be called from the dev->set_multicast_list
- * or dev->set_rx_mode function of layered software devices.
- */
-int dev_mc_sync(struct net_device *to, struct net_device *from)
-{
- int err = 0;
-
- netif_addr_lock_bh(to);
- err = __dev_addr_sync(&to->mc_list, &to->mc_count,
- &from->mc_list, &from->mc_count);
- if (!err)
- __dev_set_rx_mode(to);
- netif_addr_unlock_bh(to);
-
- return err;
-}
-EXPORT_SYMBOL(dev_mc_sync);
-
-
-/**
- * dev_mc_unsync - Remove synchronized addresses from the destination
- * device
- * @to: destination device
- * @from: source device
- *
- * Remove all addresses that were added to the destination device by
- * dev_mc_sync(). This function is intended to be called from the
- * dev->stop function of layered software devices.
- */
-void dev_mc_unsync(struct net_device *to, struct net_device *from)
-{
- netif_addr_lock_bh(from);
- netif_addr_lock(to);
-
- __dev_addr_unsync(&to->mc_list, &to->mc_count,
- &from->mc_list, &from->mc_count);
- __dev_set_rx_mode(to);
-
- netif_addr_unlock(to);
- netif_addr_unlock_bh(from);
-}
-EXPORT_SYMBOL(dev_mc_unsync);
-
#ifdef CONFIG_PROC_FS
static int dev_mc_seq_show(struct seq_file *seq, void *v)
{
@@ -165,7 +74,7 @@ static int dev_mc_seq_show(struct seq_fi
return 0;
netif_addr_lock_bh(dev);
- for (m = dev->mc_list; m; m = m->next) {
+ for (m = dev->mc.list; m; m = m->next) {
int i;
seq_printf(seq, "%-4d %-15s %-5d %-5d ", dev->ifindex,
@@ -224,6 +133,3 @@ void __init dev_mcast_init(void)
{
register_pernet_subsys(&dev_mc_net_ops);
}
-
-EXPORT_SYMBOL(dev_mc_add);
-EXPORT_SYMBOL(dev_mc_delete);
--- wireless-testing.orig/net/irda/irlan/irlan_eth.c 2009-04-09 10:00:39.000000000 +0200
+++ wireless-testing/net/irda/irlan/irlan_eth.c 2009-06-13 12:29:32.000000000 +0200
@@ -318,14 +318,14 @@ static void irlan_eth_set_multicast_list
/* Enable promiscuous mode */
IRDA_WARNING("Promiscuous mode not implemented by IrLAN!\n");
}
- else if ((dev->flags & IFF_ALLMULTI) || dev->mc_count > HW_MAX_ADDRS) {
+ else if ((dev->flags & IFF_ALLMULTI) || dev->mc.count > HW_MAX_ADDRS) {
/* Disable promiscuous mode, use normal mode. */
IRDA_DEBUG(4, "%s(), Setting multicast filter\n", __func__ );
/* hardware_set_filter(NULL); */
irlan_set_multicast_filter(self, TRUE);
}
- else if (dev->mc_count) {
+ else if (dev->mc.count) {
IRDA_DEBUG(4, "%s(), Setting multicast filter\n", __func__ );
/* Walk the address list, and load the filter */
/* hardware_set_filter(dev->mc_list); */
--- wireless-testing.orig/net/mac80211/main.c 2009-06-11 11:34:09.000000000 +0200
+++ wireless-testing/net/mac80211/main.c 2009-06-13 12:29:32.000000000 +0200
@@ -83,8 +83,8 @@ void ieee80211_configure_filter(struct i
new_flags |= (1<<31);
drv_configure_filter(local, changed_flags, &new_flags,
- local->mdev->mc_count,
- local->mdev->mc_list);
+ local->mdev->mc.count,
+ local->mdev->mc.list);
WARN_ON(new_flags & (1<<31));
--- wireless-testing.orig/net/mac80211/scan.c 2009-06-11 11:34:09.000000000 +0200
+++ wireless-testing/net/mac80211/scan.c 2009-06-13 12:29:32.000000000 +0200
@@ -312,8 +312,8 @@ void ieee80211_scan_completed(struct iee
local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC;
drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC,
&local->filter_flags,
- local->mdev->mc_count,
- local->mdev->mc_list);
+ local->mdev->mc.count,
+ local->mdev->mc.list);
netif_addr_unlock(local->mdev);
netif_tx_unlock_bh(local->mdev);
@@ -399,8 +399,8 @@ static int ieee80211_start_sw_scan(struc
local->filter_flags |= FIF_BCN_PRBRESP_PROMISC;
drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC,
&local->filter_flags,
- local->mdev->mc_count,
- local->mdev->mc_list);
+ local->mdev->mc.count,
+ local->mdev->mc.list);
netif_addr_unlock_bh(local->mdev);
/* TODO: start scan as soon as all nullfunc frames are ACKed */
--- wireless-testing.orig/drivers/infiniband/hw/nes/nes_nic.c 2009-04-16 02:16:34.000000000 +0200
+++ wireless-testing/drivers/infiniband/hw/nes/nes_nic.c 2009-06-13 12:29:33.000000000 +0200
@@ -862,10 +862,10 @@ static void nes_netdev_set_multicast_lis
}
nes_debug(NES_DBG_NIC_RX, "Number of MC entries = %d, Promiscous = %d, All Multicast = %d.\n",
- netdev->mc_count, !!(netdev->flags & IFF_PROMISC),
+ netdev->mc.count, !!(netdev->flags & IFF_PROMISC),
!!(netdev->flags & IFF_ALLMULTI));
if (!mc_all_on) {
- multicast_addr = netdev->mc_list;
+ multicast_addr = netdev->mc.list;
perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +
pft_entries_preallocated * 0x8;
for (mc_index = 0; mc_index < max_pft_entries_avaiable;
--- wireless-testing.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2009-01-29 20:09:53.000000000 +0100
+++ wireless-testing/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2009-06-13 12:29:33.000000000 +0200
@@ -788,7 +788,7 @@ void ipoib_mcast_restart_task(struct wor
clear_bit(IPOIB_MCAST_FLAG_FOUND, &mcast->flags);
/* Mark all of the entries that are found or don't exist */
- for (mclist = dev->mc_list; mclist; mclist = mclist->next) {
+ for (mclist = dev->mc.list; mclist; mclist = mclist->next) {
union ib_gid mgid;
memcpy(mgid.raw, mclist->dmi_addr + 4, sizeof mgid);
--- wireless-testing.orig/drivers/media/dvb/dvb-core/dvb_net.c 2009-04-09 10:00:09.000000000 +0200
+++ wireless-testing/drivers/media/dvb/dvb-core/dvb_net.c 2009-06-13 12:29:33.000000000 +0200
@@ -1140,18 +1140,18 @@ static void wq_set_multicast_list (struc
} else if ((dev->flags & IFF_ALLMULTI)) {
dprintk("%s: allmulti mode\n", dev->name);
priv->rx_mode = RX_MODE_ALL_MULTI;
- } else if (dev->mc_count) {
+ } else if (dev->mc.count) {
int mci;
struct dev_mc_list *mc;
dprintk("%s: set_mc_list, %d entries\n",
- dev->name, dev->mc_count);
+ dev->name, dev->mc.count);
priv->rx_mode = RX_MODE_MULTI;
priv->multi_num = 0;
- for (mci = 0, mc=dev->mc_list;
- mci < dev->mc_count;
+ for (mci = 0, mc=dev->mc.list;
+ mci < dev->mc.count;
mc = mc->next, mci++) {
dvb_set_mc_filter(dev, mc);
}
@@ -1238,7 +1238,7 @@ static void dvb_net_setup(struct net_dev
dev->header_ops = &dvb_header_ops;
dev->netdev_ops = &dvb_netdev_ops;
dev->mtu = 4096;
- dev->mc_count = 0;
+ dev->mc.count = 0;
dev->flags |= IFF_NOARP;
}
--- wireless-testing.orig/drivers/net/3c501.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c501.c 2009-06-13 12:29:33.000000000 +0200
@@ -819,7 +819,7 @@ static void set_multicast_list(struct ne
if (dev->flags & IFF_PROMISC) {
outb(RX_PROM, RX_CMD);
inb(RX_STATUS);
- } else if (dev->mc_list || dev->flags & IFF_ALLMULTI) {
+ } else if (dev->mc.list || dev->flags & IFF_ALLMULTI) {
/* Multicast or all multicast is the same */
outb(RX_MULT, RX_CMD);
inb(RX_STATUS); /* Clear status. */
--- wireless-testing.orig/drivers/net/3c505.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c505.c 2009-06-13 12:29:33.000000000 +0200
@@ -1208,7 +1208,7 @@ static int elp_close(struct net_device *
static void elp_set_mc_list(struct net_device *dev)
{
elp_device *adapter = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_addr_list *dmi = dev->mc.list;
int i;
unsigned long flags;
@@ -1221,8 +1221,8 @@ static void elp_set_mc_list(struct net_d
/* send a "load multicast list" command to the board, max 10 addrs/cmd */
/* if num_addrs==0 the list will be cleared */
adapter->tx_pcb.command = CMD_LOAD_MULTICAST_LIST;
- adapter->tx_pcb.length = 6 * dev->mc_count;
- for (i = 0; i < dev->mc_count; i++) {
+ adapter->tx_pcb.length = 6 * dev->mc.count;
+ for (i = 0; i < dev->mc.count; i++) {
memcpy(adapter->tx_pcb.data.multicast[i], dmi->dmi_addr, 6);
dmi = dmi->next;
}
@@ -1236,7 +1236,7 @@ static void elp_set_mc_list(struct net_d
TIMEOUT_MSG(__LINE__);
}
}
- if (dev->mc_count)
+ if (dev->mc.count)
adapter->tx_pcb.data.configure = NO_LOOPBACK | RECV_BROAD | RECV_MULTI;
else /* num_addrs == 0 */
adapter->tx_pcb.data.configure = NO_LOOPBACK | RECV_BROAD;
--- wireless-testing.orig/drivers/net/3c509.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/3c509.c 2009-06-13 12:29:33.000000000 +0200
@@ -1116,9 +1116,9 @@ set_multicast_list(struct net_device *de
if (el3_debug > 1) {
static int old;
- if (old != dev->mc_count) {
- old = dev->mc_count;
- printk("%s: Setting Rx mode to %d addresses.\n", dev->name, dev->mc_count);
+ if (old != dev->mc.count) {
+ old = dev->mc.count;
+ printk("%s: Setting Rx mode to %d addresses.\n", dev->name, dev->mc.count);
}
}
spin_lock_irqsave(&lp->lock, flags);
@@ -1126,7 +1126,7 @@ set_multicast_list(struct net_device *de
outw(SetRxFilter | RxStation | RxMulticast | RxBroadcast | RxProm,
ioaddr + EL3_CMD);
}
- else if (dev->mc_count || (dev->flags&IFF_ALLMULTI)) {
+ else if (dev->mc.count || (dev->flags&IFF_ALLMULTI)) {
outw(SetRxFilter | RxStation | RxMulticast | RxBroadcast, ioaddr + EL3_CMD);
}
else
--- wireless-testing.orig/drivers/net/3c515.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c515.c 2009-06-13 12:29:33.000000000 +0200
@@ -1537,7 +1537,7 @@ static void set_rx_mode(struct net_devic
printk("%s: Setting promiscuous mode.\n",
dev->name);
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast | RxProm;
- } else if ((dev->mc_list) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.list) || (dev->flags & IFF_ALLMULTI)) {
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast;
} else
new_mode = SetRxFilter | RxStation | RxBroadcast;
--- wireless-testing.orig/drivers/net/3c523.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c523.c 2009-06-13 12:29:33.000000000 +0200
@@ -625,8 +625,8 @@ static int init586(struct net_device *de
volatile struct iasetup_cmd_struct *ias_cmd;
volatile struct tdr_cmd_struct *tdr_cmd;
volatile struct mcsetup_cmd_struct *mc_cmd;
- struct dev_mc_list *dmi = dev->mc_list;
- int num_addrs = dev->mc_count;
+ struct dev_mc_list *dmi = dev->mc.list;
+ int num_addrs = dev->mc.count;
ptr = (void *) ((char *) p->scb + sizeof(struct scb_struct));
@@ -770,7 +770,7 @@ static int init586(struct net_device *de
* Multicast setup
*/
- if (dev->mc_count) {
+ if (dev->mc.count) {
/* I don't understand this: do we really need memory after the init? */
int len = ((char *) p->iscp - (char *) ptr - 8) / 6;
if (len <= 0) {
--- wireless-testing.orig/drivers/net/3c527.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c527.c 2009-06-13 12:29:33.000000000 +0200
@@ -1528,14 +1528,14 @@ static void do_mc32_set_multicast_list(s
if ((dev->flags&IFF_PROMISC) ||
(dev->flags&IFF_ALLMULTI) ||
- dev->mc_count > 10)
+ dev->mc.count > 10)
/* Enable promiscuous mode */
filt |= 1;
- else if(dev->mc_count)
+ else if(dev->mc.count)
{
unsigned char block[62];
unsigned char *bp;
- struct dev_mc_list *dmc=dev->mc_list;
+ struct dev_mc_list *dmc=dev->mc.list;
int i;
@@ -1544,16 +1544,16 @@ static void do_mc32_set_multicast_list(s
if(!lp->mc_list_valid)
{
block[1]=0;
- block[0]=dev->mc_count;
+ block[0]=dev->mc.count;
bp=block+2;
- for(i=0;i<dev->mc_count;i++)
+ for(i=0;i<dev->mclcount;i++)
{
memcpy(bp, dmc->dmi_addr, 6);
bp+=6;
dmc=dmc->next;
}
- if(mc32_command_nowait(dev, 2, block, 2+6*dev->mc_count)==-1)
+ if(mc32_command_nowait(dev, 2, block, 2+6*dev->mclcount)==-1)
{
lp->mc_reload_wait = 1;
return;
--- wireless-testing.orig/drivers/net/3c59x.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/3c59x.c 2009-06-13 12:29:33.000000000 +0200
@@ -2972,7 +2972,7 @@ static void set_rx_mode(struct net_devic
if (vortex_debug > 3)
printk(KERN_NOTICE "%s: Setting promiscuous mode.\n", dev->name);
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast|RxProm;
- } else if ((dev->mc_list) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.list) || (dev->flags & IFF_ALLMULTI)) {
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast;
} else
new_mode = SetRxFilter | RxStation | RxBroadcast;
--- wireless-testing.orig/drivers/net/7990.c 2009-01-13 15:05:05.000000000 +0100
+++ wireless-testing/drivers/net/7990.c 2009-06-13 12:29:33.000000000 +0200
@@ -595,7 +595,7 @@ static void lance_load_multicast (struct
struct lance_private *lp = netdev_priv(dev);
volatile struct lance_init_block *ib = lp->init_block;
volatile u16 *mcast_table = (u16 *)&ib->filter;
- struct dev_mc_list *dmi=dev->mc_list;
+ struct dev_mc_list *dmi=dev->mc.list;
char *addrs;
int i;
u32 crc;
@@ -611,7 +611,7 @@ static void lance_load_multicast (struct
ib->filter [1] = 0;
/* Add addresses */
- for (i = 0; i < dev->mc_count; i++){
+ for (i = 0; i < dev->mc.count; i++){
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/8139cp.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/8139cp.c 2009-06-13 12:29:33.000000000 +0200
@@ -912,7 +912,7 @@ static void __cp_set_rx_mode (struct net
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
@@ -921,7 +921,7 @@ static void __cp_set_rx_mode (struct net
struct dev_mc_list *mclist;
rx_mode = AcceptBroadcast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/8139too.c 2009-04-30 23:07:17.000000000 +0200
+++ wireless-testing/drivers/net/8139too.c 2009-06-13 12:29:33.000000000 +0200
@@ -2536,7 +2536,7 @@ static void __set_rx_mode (struct net_de
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
@@ -2545,7 +2545,7 @@ static void __set_rx_mode (struct net_de
struct dev_mc_list *mclist;
rx_mode = AcceptBroadcast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/82596.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/82596.c 2009-06-13 12:29:33.000000000 +0200
@@ -1506,7 +1506,7 @@ static void set_multicast_list(struct ne
int config = 0, cnt;
DEB(DEB_MULTI,printk(KERN_DEBUG "%s: set multicast list, %d entries, promisc %s, allmulti %s\n",
- dev->name, dev->mc_count,
+ dev->name, dev->mc.count,
dev->flags & IFF_PROMISC ? "ON" : "OFF",
dev->flags & IFF_ALLMULTI ? "ON" : "OFF"));
@@ -1534,7 +1534,7 @@ static void set_multicast_list(struct ne
i596_add_cmd(dev, &lp->cf_cmd.cmd);
}
- cnt = dev->mc_count;
+ cnt = dev->mc.count;
if (cnt > MAX_MC_CNT)
{
cnt = MAX_MC_CNT;
@@ -1542,7 +1542,7 @@ static void set_multicast_list(struct ne
dev->name, cnt);
}
- if (dev->mc_count > 0) {
+ if (dev->mc.count > 0) {
struct dev_mc_list *dmi;
unsigned char *cp;
struct mc_cmd *cmd;
@@ -1551,9 +1551,9 @@ static void set_multicast_list(struct ne
return;
cmd = &lp->mc_cmd;
cmd->cmd.command = CmdMulticastList;
- cmd->mc_cnt = dev->mc_count * 6;
+ cmd->mc_cnt = dev->mc.count * 6;
cp = cmd->mc_addrs;
- for (dmi = dev->mc_list; cnt && dmi != NULL; dmi = dmi->next, cnt--, cp += 6) {
+ for (dmi = dev->mc.list; cnt && dmi != NULL; dmi = dmi->next, cnt--, cp += 6) {
memcpy(cp, dmi->dmi_addr, 6);
if (i596_debug > 1)
DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address %pM\n",
--- wireless-testing.orig/drivers/net/a2065.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/a2065.c 2009-06-13 12:29:33.000000000 +0200
@@ -610,7 +610,7 @@ static void lance_load_multicast (struct
struct lance_private *lp = netdev_priv(dev);
volatile struct lance_init_block *ib = lp->init_block;
volatile u16 *mcast_table = (u16 *)&ib->filter;
- struct dev_mc_list *dmi=dev->mc_list;
+ struct dev_mc_list *dmi=dev->mc.list;
char *addrs;
int i;
u32 crc;
@@ -626,7 +626,7 @@ static void lance_load_multicast (struct
ib->filter [1] = 0;
/* Add addresses */
- for (i = 0; i < dev->mc_count; i++){
+ for (i = 0; i < dev->mc.count; i++){
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/acenic.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/acenic.c 2009-06-13 12:29:33.000000000 +0200
@@ -2844,7 +2844,7 @@ static void ace_set_multicast_list(struc
* set the entire multicast list at a time and keeping track of
* it here is going to be messy.
*/
- if ((dev->mc_count) && !(ap->mcast_all)) {
+ if ((dev->mc.count) && !(ap->mcast_all)) {
cmd.evt = C_SET_MULTICAST_MODE;
cmd.code = C_C_MCAST_ENABLE;
cmd.idx = 0;
--- wireless-testing.orig/drivers/net/amd8111e.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/amd8111e.c 2009-06-13 12:29:33.000000000 +0200
@@ -1387,15 +1387,15 @@ static void amd8111e_set_multicast_list(
}
else
writel( PROM, lp->mmio + CMD2);
- if(dev->flags & IFF_ALLMULTI || dev->mc_count > MAX_FILTER_SIZE){
+ if(dev->flags & IFF_ALLMULTI || dev->mc.count > MAX_FILTER_SIZE){
/* get all multicast packet */
mc_filter[1] = mc_filter[0] = 0xffffffff;
- lp->mc_list = dev->mc_list;
+ lp->mc_list = dev->mc.list;
lp->options |= OPTION_MULTICAST_ENABLE;
amd8111e_writeq(*(u64*)mc_filter,lp->mmio + LADRF);
return;
}
- if( dev->mc_count == 0 ){
+ if( dev->mc.count == 0 ){
/* get only own packets */
mc_filter[1] = mc_filter[0] = 0;
lp->mc_list = NULL;
@@ -1407,9 +1407,9 @@ static void amd8111e_set_multicast_list(
}
/* load all the multicast addresses in the logic filter */
lp->options |= OPTION_MULTICAST_ENABLE;
- lp->mc_list = dev->mc_list;
+ lp->mc_list = dev->mc.list;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mc_ptr = dev->mc_list; mc_ptr && i < dev->mc_count;
+ for (i = 0, mc_ptr = dev->mc.list; mc_ptr && i < dev->mc.count;
i++, mc_ptr = mc_ptr->next) {
bit_num = (ether_crc_le(ETH_ALEN, mc_ptr->dmi_addr) >> 26) & 0x3f;
mc_filter[bit_num >> 5] |= 1 << (bit_num & 31);
--- wireless-testing.orig/drivers/net/appletalk/ltpc.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/appletalk/ltpc.c 2009-06-13 12:29:33.000000000 +0200
@@ -1125,7 +1125,7 @@ struct net_device * __init ltpc_probe(vo
printk(KERN_INFO "Apple/Farallon LocalTalk-PC card at %03x, DMA%d. Using polled mode.\n",io,dma);
dev->netdev_ops = <pc_netdev;
- dev->mc_list = NULL;
+ dev->mc.list = NULL;
dev->base_addr = io;
dev->irq = irq;
dev->dma = dma;
--- wireless-testing.orig/drivers/net/ariadne.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/ariadne.c 2009-06-13 12:29:33.000000000 +0200
@@ -819,7 +819,7 @@ static void set_multicast_list(struct ne
lance->RDP = PROM; /* Set promiscuous mode */
} else {
short multicast_table[4];
- int num_addrs = dev->mc_count;
+ int num_addrs = dev->mc.count;
int i;
/* We don't use the multicast table, but rely on upper-layer filtering. */
memset(multicast_table, (num_addrs == 0) ? 0 : -1,
--- wireless-testing.orig/drivers/net/arm/am79c961a.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/arm/am79c961a.c 2009-06-13 12:29:33.000000000 +0200
@@ -387,7 +387,7 @@ static void am79c961_setmulticastlist (s
memset(multi_hash, 0x00, sizeof(multi_hash));
- for (dmi = dev->mc_list; dmi; dmi = dmi->next)
+ for (dmi = dev->mc.list; dmi; dmi = dmi->next)
am79c961_mc_hash(dmi, multi_hash);
}
--- wireless-testing.orig/drivers/net/arm/at91_ether.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/arm/at91_ether.c 2009-06-13 12:29:34.000000000 +0200
@@ -562,8 +562,8 @@ static void at91ether_sethashtable(struc
mc_filter[0] = mc_filter[1] = 0;
- curr = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++, curr = curr->next) {
+ curr = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++, curr = curr->next) {
if (!curr) break; /* unexpected end of list */
bitnr = hash_get_index(curr->dmi_addr);
@@ -592,7 +592,7 @@ static void at91ether_set_multicast_list
at91_emac_write(AT91_EMAC_HSH, -1);
at91_emac_write(AT91_EMAC_HSL, -1);
cfg |= AT91_EMAC_MTI;
- } else if (dev->mc_count > 0) { /* Enable specific multicasts */
+ } else if (dev->mc.count > 0) { /* Enable specific multicasts */
at91ether_sethashtable(dev);
cfg |= AT91_EMAC_MTI;
} else if (dev->flags & (~IFF_ALLMULTI)) { /* Disable all multicast mode */
--- wireless-testing.orig/drivers/net/arm/ether3.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/arm/ether3.c 2009-06-13 12:29:34.000000000 +0200
@@ -463,7 +463,7 @@ static void ether3_setmulticastlist(stru
if (dev->flags & IFF_PROMISC) {
/* promiscuous mode */
priv(dev)->regs.config1 |= CFG1_RECVPROMISC;
- } else if (dev->flags & IFF_ALLMULTI || dev->mc_count) {
+ } else if (dev->flags & IFF_ALLMULTI || dev->mc.count) {
priv(dev)->regs.config1 |= CFG1_RECVSPECBRMULTI;
} else
priv(dev)->regs.config1 |= CFG1_RECVSPECBROAD;
--- wireless-testing.orig/drivers/net/arm/ixp4xx_eth.c 2009-05-18 12:02:00.000000000 +0200
+++ wireless-testing/drivers/net/arm/ixp4xx_eth.c 2009-06-13 12:29:34.000000000 +0200
@@ -733,9 +733,9 @@ static int eth_xmit(struct sk_buff *skb,
static void eth_set_mcast_list(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
- struct dev_mc_list *mclist = dev->mc_list;
+ struct dev_mc_list *mclist = dev->mc.list;
u8 diffs[ETH_ALEN], *addr;
- int cnt = dev->mc_count, i;
+ int cnt = dev->mc.count, i;
if ((dev->flags & IFF_PROMISC) || !mclist || !cnt) {
__raw_writel(DEFAULT_RX_CNTRL0 & ~RX_CNTRL0_ADDR_FLTR_EN,
--- wireless-testing.orig/drivers/net/arm/ks8695net.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/arm/ks8695net.c 2009-06-13 12:29:34.000000000 +0200
@@ -1127,7 +1127,7 @@ ks8695_set_multicast(struct net_device *
if (ndev->flags & IFF_ALLMULTI) {
/* enable all multicast mode */
ctrl |= DRXC_RM;
- } else if (ndev->mc_count > KS8695_NR_ADDRESSES) {
+ } else if (ndev->mc.count > KS8695_NR_ADDRESSES) {
/* more specific multicast addresses than can be
* handled in hardware
*/
@@ -1135,8 +1135,8 @@ ks8695_set_multicast(struct net_device *
} else {
/* enable specific multicasts */
ctrl &= ~DRXC_RM;
- ks8695_init_partial_multicast(ksp, ndev->mc_list,
- ndev->mc_count);
+ ks8695_init_partial_multicast(ksp, ndev->mc.list,
+ ndev->mc.count);
}
ks8695_writereg(ksp, KS8695_DRXC, ctrl);
--- wireless-testing.orig/drivers/net/at1700.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/at1700.c 2009-06-13 12:29:34.000000000 +0200
@@ -837,12 +837,12 @@ set_rx_mode(struct net_device *dev)
if (dev->flags & IFF_PROMISC) {
memset(mc_filter, 0xff, sizeof(mc_filter));
outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */
- } else if (dev->mc_count > MC_FILTERBREAK
+ } else if (dev->mc.count > MC_FILTERBREAK
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
outb(2, ioaddr + RX_MODE); /* Use normal mode. */
- } else if (dev->mc_count == 0) {
+ } else if (dev->mc.count == 0) {
memset(mc_filter, 0x00, sizeof(mc_filter));
outb(1, ioaddr + RX_MODE); /* Ignore almost all multicasts. */
} else {
@@ -850,7 +850,7 @@ set_rx_mode(struct net_device *dev)
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit =
ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/atarilance.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/atarilance.c 2009-06-13 12:29:34.000000000 +0200
@@ -1097,7 +1097,7 @@ static void set_multicast_list( struct n
REGA( CSR15 ) = 0x8000; /* Set promiscuous mode */
} else {
short multicast_table[4];
- int num_addrs = dev->mc_count;
+ int num_addrs = dev->mc.count;
int i;
/* We don't use the multicast table, but rely on upper-layer
* filtering. */
--- wireless-testing.orig/drivers/net/atl1c/atl1c_main.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/atl1c/atl1c_main.c 2009-06-13 12:29:34.000000000 +0200
@@ -355,7 +355,7 @@ static void atl1c_set_multi(struct net_d
AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0);
/* comoute mc addresses' hash value ,and put it into hash table */
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
hash_value = atl1c_hash_mc_addr(hw, mc_ptr->dmi_addr);
atl1c_hash_set(hw, hash_value);
}
--- wireless-testing.orig/drivers/net/atl1e/atl1e_main.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/atl1e/atl1e_main.c 2009-06-13 12:29:35.000000000 +0200
@@ -311,7 +311,7 @@ static void atl1e_set_multi(struct net_d
AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0);
/* comoute mc addresses' hash value ,and put it into hash table */
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
hash_value = atl1e_hash_mc_addr(hw, mc_ptr->dmi_addr);
atl1e_hash_set(hw, hash_value);
}
--- wireless-testing.orig/drivers/net/atlx/atl2.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/atlx/atl2.c 2009-06-13 12:29:35.000000000 +0200
@@ -157,7 +157,7 @@ static void atl2_set_multi(struct net_de
ATL2_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0);
/* comoute mc addresses' hash value ,and put it into hash table */
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
hash_value = atl2_hash_mc_addr(hw, mc_ptr->dmi_addr);
atl2_hash_set(hw, hash_value);
}
--- wireless-testing.orig/drivers/net/atlx/atlx.c 2009-01-13 15:05:05.000000000 +0100
+++ wireless-testing/drivers/net/atlx/atlx.c 2009-06-13 12:29:35.000000000 +0200
@@ -144,7 +144,7 @@ static void atlx_set_multi(struct net_de
iowrite32(0, (hw->hw_addr + REG_RX_HASH_TABLE) + (1 << 2));
/* compute mc addresses' hash value ,and put it into hash table */
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
hash_value = atlx_hash_mc_addr(hw, mc_ptr->dmi_addr);
atlx_hash_set(hw, hash_value);
}
--- wireless-testing.orig/drivers/net/atp.c 2009-01-13 15:05:05.000000000 +0100
+++ wireless-testing/drivers/net/atp.c 2009-06-13 12:29:35.000000000 +0200
@@ -859,7 +859,7 @@ static void set_rx_mode_8002(struct net_
struct net_local *lp = netdev_priv(dev);
long ioaddr = dev->base_addr;
- if (dev->mc_count > 0 || (dev->flags & (IFF_ALLMULTI|IFF_PROMISC)))
+ if (dev->mc.count > 0 || (dev->flags & (IFF_ALLMULTI|IFF_PROMISC)))
lp->addr_mode = CMR2h_PROMISC;
else
lp->addr_mode = CMR2h_Normal;
@@ -875,7 +875,7 @@ static void set_rx_mode_8012(struct net_
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
new_mode = CMR2h_PROMISC;
- } else if ((dev->mc_count > 1000) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.count > 1000) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
new_mode = CMR2h_Normal;
@@ -883,7 +883,7 @@ static void set_rx_mode_8012(struct net_
struct dev_mc_list *mclist;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next)
{
int filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f;
--- wireless-testing.orig/drivers/net/au1000_eth.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/au1000_eth.c 2009-06-13 12:29:35.000000000 +0200
@@ -1014,7 +1014,7 @@ static void au1000_multicast_list(struct
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
aup->mac->control |= MAC_PROMISCUOUS;
} else if ((dev->flags & IFF_ALLMULTI) ||
- dev->mc_count > MULTICAST_FILTER_LIMIT) {
+ dev->mc.count > MULTICAST_FILTER_LIMIT) {
aup->mac->control |= MAC_PASS_ALL_MULTI;
aup->mac->control &= ~MAC_PROMISCUOUS;
printk(KERN_INFO "%s: Pass all multicast\n", dev->name);
@@ -1024,7 +1024,7 @@ static void au1000_multicast_list(struct
u32 mc_filter[2]; /* Multicast hash filter */
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
set_bit(ether_crc(ETH_ALEN, mclist->dmi_addr)>>26,
(long *)mc_filter);
--- wireless-testing.orig/drivers/net/b44.c 2009-04-09 10:00:10.000000000 +0200
+++ wireless-testing/drivers/net/b44.c 2009-06-13 12:29:35.000000000 +0200
@@ -1691,8 +1691,8 @@ static int __b44_load_mcast(struct b44 *
struct dev_mc_list *mclist;
int i, num_ents;
- num_ents = min_t(int, dev->mc_count, B44_MCAST_TABLE_SIZE);
- mclist = dev->mc_list;
+ num_ents = min_t(int, dev->mc.count, B44_MCAST_TABLE_SIZE);
+ mclist = dev->mc.list;
for (i = 0; mclist && i < num_ents; i++, mclist = mclist->next) {
__b44_cam_write(bp, mclist->dmi_addr, i + 1);
}
@@ -1716,7 +1716,7 @@ static void __b44_set_rx_mode(struct net
__b44_set_mac_addr(bp);
if ((dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > B44_MCAST_TABLE_SIZE))
+ (dev->mc.count > B44_MCAST_TABLE_SIZE))
val |= RXCONFIG_ALLMULTI;
else
i = __b44_load_mcast(bp, dev);
--- wireless-testing.orig/drivers/net/benet/be_main.c 2009-05-30 01:38:26.000000000 +0200
+++ wireless-testing/drivers/net/benet/be_main.c 2009-06-13 12:29:35.000000000 +0200
@@ -576,7 +576,7 @@ static void be_set_multicast_filter(stru
return;
}
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
memcpy(&mac_addr[i][0], mc_ptr->dmi_addr, ETH_ALEN);
if (++i >= 32) {
be_cmd_mcast_mac_set(&adapter->ctrl,
--- wireless-testing.orig/drivers/net/bfin_mac.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/bfin_mac.c 2009-06-13 12:29:35.000000000 +0200
@@ -863,14 +863,14 @@ static void bfin_mac_timeout(struct net_
static void bfin_mac_multicast_hash(struct net_device *dev)
{
u32 emac_hashhi, emac_hashlo;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
u32 crc;
emac_hashhi = emac_hashlo = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
@@ -913,7 +913,7 @@ static void bfin_mac_set_multicast_list(
sysctl = bfin_read_EMAC_OPMODE();
sysctl |= PAM;
bfin_write_EMAC_OPMODE(sysctl);
- } else if (dev->mc_count) {
+ } else if (dev->mc.count) {
/* set up multicast hash table */
sysctl = bfin_read_EMAC_OPMODE();
sysctl |= HM;
--- wireless-testing.orig/drivers/net/bmac.c 2009-04-09 10:00:11.000000000 +0200
+++ wireless-testing/drivers/net/bmac.c 2009-06-13 12:29:35.000000000 +0200
@@ -972,7 +972,7 @@ static void bmac_set_multicast(struct ne
{
struct dev_mc_list *dmi;
struct bmac_data *bp = netdev_priv(dev);
- int num_addrs = dev->mc_count;
+ int num_addrs = dev->mc.count;
unsigned short rx_cfg;
int i;
@@ -981,7 +981,7 @@ static void bmac_set_multicast(struct ne
XXDEBUG(("bmac: enter bmac_set_multicast, n_addrs=%d\n", num_addrs));
- if((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
for (i=0; i<4; i++) bp->hash_table_mask[i] = 0xffff;
bmac_update_hash_table_mask(dev, bp);
rx_cfg = bmac_rx_on(dev, 1, 0);
@@ -999,7 +999,7 @@ static void bmac_set_multicast(struct ne
rx_cfg = bmac_rx_on(dev, 0, 0);
XXDEBUG(("bmac: multi disabled, rx_cfg=%#08x\n", rx_cfg));
} else {
- for (dmi=dev->mc_list; dmi!=NULL; dmi=dmi->next)
+ for (dmi=dev->mc.list; dmi!=NULL; dmi=dmi->next)
bmac_addhash(bp, dmi->dmi_addr);
bmac_update_hash_table_mask(dev, bp);
rx_cfg = bmac_rx_on(dev, 1, 0);
@@ -1014,13 +1014,13 @@ static void bmac_set_multicast(struct ne
static void bmac_set_multicast(struct net_device *dev)
{
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
unsigned short rx_cfg;
u32 crc;
- if((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
bmwrite(dev, BHASH0, 0xffff);
bmwrite(dev, BHASH1, 0xffff);
bmwrite(dev, BHASH2, 0xffff);
@@ -1038,7 +1038,7 @@ static void bmac_set_multicast(struct ne
for(i = 0; i < 4; i++) hash_table[i] = 0;
- for(i = 0; i < dev->mc_count; i++) {
+ for(i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/bnx2.c 2009-05-18 12:02:00.000000000 +0200
+++ wireless-testing/drivers/net/bnx2.c 2009-06-13 12:29:35.000000000 +0200
@@ -3349,7 +3349,7 @@ bnx2_set_rx_mode(struct net_device *dev)
memset(mc_filter, 0, 4 * NUM_MC_HASH_REGISTERS);
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
crc = ether_crc_le(ETH_ALEN, mclist->dmi_addr);
@@ -3368,15 +3368,15 @@ bnx2_set_rx_mode(struct net_device *dev)
}
uc_ptr = NULL;
- if (dev->uc_count > BNX2_MAX_UNICAST_ADDRESSES) {
+ if (dev->uc.count > BNX2_MAX_UNICAST_ADDRESSES) {
rx_mode |= BNX2_EMAC_RX_MODE_PROMISCUOUS;
sort_mode |= BNX2_RPM_SORT_USER0_PROM_EN |
BNX2_RPM_SORT_USER0_PROM_VLAN;
} else if (!(dev->flags & IFF_PROMISC)) {
- uc_ptr = dev->uc_list;
+ uc_ptr = dev->uc.list;
/* Add all entries into to the match filter list */
- for (i = 0; i < dev->uc_count; i++) {
+ for (i = 0; i < dev->uc.count; i++) {
bnx2_set_mac_addr(bp, uc_ptr->da_addr,
i + BNX2_START_UNICAST_ADDRESS_INDEX);
sort_mode |= (1 <<
--- wireless-testing.orig/drivers/net/bnx2x_main.c 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/bnx2x_main.c 2009-06-13 12:29:35.000000000 +0200
@@ -10655,7 +10655,7 @@ static void bnx2x_set_rx_mode(struct net
rx_mode = BNX2X_RX_MODE_PROMISC;
else if ((dev->flags & IFF_ALLMULTI) ||
- ((dev->mc_count > BNX2X_MAX_MULTICAST) && CHIP_IS_E1(bp)))
+ ((dev->mc.count > BNX2X_MAX_MULTICAST) && CHIP_IS_E1(bp)))
rx_mode = BNX2X_RX_MODE_ALLMULTI;
else { /* some multicasts */
@@ -10665,8 +10665,8 @@ static void bnx2x_set_rx_mode(struct net
struct mac_configuration_cmd *config =
bnx2x_sp(bp, mcast_config);
- for (i = 0, mclist = dev->mc_list;
- mclist && (i < dev->mc_count);
+ for (i = 0, mclist = dev->mc.list;
+ mclist && (i < dev->mc.count);
i++, mclist = mclist->next) {
config->config_table[i].
@@ -10733,8 +10733,8 @@ static void bnx2x_set_rx_mode(struct net
memset(mc_filter, 0, 4 * MC_HASH_SIZE);
- for (i = 0, mclist = dev->mc_list;
- mclist && (i < dev->mc_count);
+ for (i = 0, mclist = dev->mc.list;
+ mclist && (i < dev->mc.count);
i++, mclist = mclist->next) {
DP(NETIF_MSG_IFUP, "Adding mcast MAC: %pM\n",
--- wireless-testing.orig/drivers/net/bonding/bond_main.c 2009-05-18 12:02:00.000000000 +0200
+++ wireless-testing/drivers/net/bonding/bond_main.c 2009-06-13 12:29:35.000000000 +0200
@@ -872,7 +872,7 @@ static void bond_resend_igmp_join_reques
rcu_read_lock();
in_dev = __in_dev_get_rcu(bond->dev);
if (in_dev) {
- for (im = in_dev->mc_list; im; im = im->next) {
+ for (im = in_dev->mc.list; im; im = im->next) {
ip_mc_rejoin_group(im);
}
}
@@ -931,7 +931,7 @@ static void bond_mc_list_flush(struct ne
struct bonding *bond = netdev_priv(bond_dev);
struct dev_mc_list *dmi;
- for (dmi = bond_dev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = bond_dev->mc.list; dmi; dmi = dmi->next) {
dev_mc_delete(slave_dev, dmi->dmi_addr, dmi->dmi_addrlen, 0);
}
@@ -970,7 +970,7 @@ static void bond_mc_swap(struct bonding
dev_set_allmulti(old_active->dev, -1);
}
- for (dmi = bond->dev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = bond->dev->mc.list; dmi; dmi = dmi->next) {
dev_mc_delete(old_active->dev, dmi->dmi_addr, dmi->dmi_addrlen, 0);
}
}
@@ -985,7 +985,7 @@ static void bond_mc_swap(struct bonding
dev_set_allmulti(new_active->dev, 1);
}
- for (dmi = bond->dev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = bond->dev->mc.list; dmi; dmi = dmi->next) {
dev_mc_add(new_active->dev, dmi->dmi_addr, dmi->dmi_addrlen, 0);
}
bond_resend_igmp_join_requests(bond);
@@ -1578,7 +1578,7 @@ int bond_enslave(struct net_device *bond
netif_addr_lock_bh(bond_dev);
/* upload master's mc_list to new slave */
- for (dmi = bond_dev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = bond_dev->mc.list; dmi; dmi = dmi->next) {
dev_mc_add (slave_dev, dmi->dmi_addr, dmi->dmi_addrlen, 0);
}
netif_addr_unlock_bh(bond_dev);
@@ -4067,7 +4067,7 @@ static void bond_set_multicast_list(stru
bond->flags = bond_dev->flags;
/* looking for addresses to add to slaves' mc list */
- for (dmi = bond_dev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = bond_dev->mc.list; dmi; dmi = dmi->next) {
if (!bond_mc_list_find_dmi(dmi, bond->mc_list)) {
bond_mc_add(bond, dmi->dmi_addr, dmi->dmi_addrlen);
}
@@ -4075,14 +4075,14 @@ static void bond_set_multicast_list(stru
/* looking for addresses to delete from slaves' list */
for (dmi = bond->mc_list; dmi; dmi = dmi->next) {
- if (!bond_mc_list_find_dmi(dmi, bond_dev->mc_list)) {
+ if (!bond_mc_list_find_dmi(dmi, bond_dev->mc.list)) {
bond_mc_delete(bond, dmi->dmi_addr, dmi->dmi_addrlen);
}
}
/* save master's multicast list */
bond_mc_list_destroy(bond);
- bond_mc_list_copy(bond_dev->mc_list, bond, GFP_ATOMIC);
+ bond_mc_list_copy(bond_dev->mc.list, bond, GFP_ATOMIC);
read_unlock(&bond->lock);
}
--- wireless-testing.orig/drivers/net/cassini.c 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/cassini.c 2009-06-13 12:29:36.000000000 +0200
@@ -3016,7 +3016,7 @@ static u32 cas_setup_multicast(struct ca
} else {
u16 hash_table[16];
u32 crc;
- struct dev_mc_list *dmi = cp->dev->mc_list;
+ struct dev_mc_list *dmi = cp->dev->mc.list;
int i;
/* use the alternate mac address registers for the
--- wireless-testing.orig/drivers/net/chelsio/common.h 2008-12-19 00:28:05.000000000 +0100
+++ wireless-testing/drivers/net/chelsio/common.h 2009-06-13 12:29:36.000000000 +0200
@@ -97,13 +97,13 @@ struct t1_rx_mode {
#define t1_rx_mode_promisc(rm) (rm->dev->flags & IFF_PROMISC)
#define t1_rx_mode_allmulti(rm) (rm->dev->flags & IFF_ALLMULTI)
-#define t1_rx_mode_mc_cnt(rm) (rm->dev->mc_count)
+#define t1_rx_mode_mc_cnt(rm) (rm->dev->mc.count)
static inline u8 *t1_get_next_mcaddr(struct t1_rx_mode *rm)
{
u8 *addr = NULL;
- if (rm->idx++ < rm->dev->mc_count) {
+ if (rm->idx++ < rm->dev->mc.count) {
addr = rm->list->dmi_addr;
rm->list = rm->list->next;
}
--- wireless-testing.orig/drivers/net/chelsio/cxgb2.c 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/chelsio/cxgb2.c 2009-06-13 12:29:36.000000000 +0200
@@ -126,7 +126,7 @@ static void t1_set_rxmode(struct net_dev
rm.dev = dev;
rm.idx = 0;
- rm.list = dev->mc_list;
+ rm.list = dev->mc.list;
mac->ops->set_rx_mode(mac, &rm);
}
--- wireless-testing.orig/drivers/net/cpmac.c 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/cpmac.c 2009-06-13 12:29:36.000000000 +0200
@@ -340,7 +340,7 @@ static void cpmac_set_multicast_list(str
* cpmac uses some strange mac address hashing
* (not crc32)
*/
- for (i = 0, iter = dev->mc_list; i < dev->mc_count;
+ for (i = 0, iter = dev->mc.list; i < dev->mc.count;
i++, iter = iter->next) {
bit = 0;
tmp = iter->dmi_addr[0];
--- wireless-testing.orig/drivers/net/cris/eth_v10.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/cris/eth_v10.c 2009-06-13 12:29:36.000000000 +0200
@@ -1550,7 +1550,7 @@ static void
set_multicast_list(struct net_device *dev)
{
struct net_local *lp = netdev_priv(dev);
- int num_addr = dev->mc_count;
+ int num_addr = dev->mc.count;
unsigned long int lo_bits;
unsigned long int hi_bits;
@@ -1582,7 +1582,7 @@ set_multicast_list(struct net_device *de
} else {
/* MC mode, receive normal and MC packets */
char hash_ix;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
int i;
char *baddr;
--- wireless-testing.orig/drivers/net/cs89x0.c 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/cs89x0.c 2009-06-13 12:29:36.000000000 +0200
@@ -1788,7 +1788,7 @@ static void set_multicast_list(struct ne
{
lp->rx_mode = RX_ALL_ACCEPT;
}
- else if((dev->flags&IFF_ALLMULTI)||dev->mc_list)
+ else if((dev->flags&IFF_ALLMULTI)||dev->mc.list)
{
/* The multicast-accept list is initialized to accept-all, and we
rely on higher-level filtering for now. */
--- wireless-testing.orig/drivers/net/cxgb3/common.h 2009-04-09 10:00:14.000000000 +0200
+++ wireless-testing/drivers/net/cxgb3/common.h 2009-06-13 12:29:36.000000000 +0200
@@ -85,7 +85,7 @@ static inline u8 *t3_get_next_mcaddr(str
{
u8 *addr = NULL;
- if (rm->mclist && rm->idx < rm->dev->mc_count) {
+ if (rm->mclist && rm->idx < rm->dev->mc.count) {
addr = rm->mclist->dmi_addr;
rm->mclist = rm->mclist->next;
rm->idx++;
--- wireless-testing.orig/drivers/net/cxgb3/cxgb3_main.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/cxgb3/cxgb3_main.c 2009-06-13 12:29:36.000000000 +0200
@@ -297,7 +297,7 @@ static void cxgb_set_rxmode(struct net_d
struct t3_rx_mode rm;
struct port_info *pi = netdev_priv(dev);
- init_rx_mode(&rm, dev, dev->mc_list);
+ init_rx_mode(&rm, dev, dev->mc.list);
t3_mac_set_rx_mode(&pi->mac, &rm);
}
@@ -313,7 +313,7 @@ static void link_start(struct net_device
struct port_info *pi = netdev_priv(dev);
struct cmac *mac = &pi->mac;
- init_rx_mode(&rm, dev, dev->mc_list);
+ init_rx_mode(&rm, dev, dev->mc.list);
t3_mac_reset(mac);
t3_mac_set_mtu(mac, dev->mtu);
t3_mac_set_address(mac, 0, dev->dev_addr);
--- wireless-testing.orig/drivers/net/de620.c 2009-01-13 15:05:05.000000000 +0100
+++ wireless-testing/drivers/net/de620.c 2009-06-13 12:29:36.000000000 +0200
@@ -486,7 +486,7 @@ static int de620_close(struct net_device
static void de620_set_multicast_list(struct net_device *dev)
{
- if (dev->mc_count || dev->flags&(IFF_ALLMULTI|IFF_PROMISC))
+ if (dev->mc.count || dev->flags&(IFF_ALLMULTI|IFF_PROMISC))
{ /* Enable promiscuous mode */
de620_set_register(dev, W_TCR, (TCR_DEF & ~RXPBM) | RXALL);
}
--- wireless-testing.orig/drivers/net/declance.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/declance.c 2009-06-13 12:29:36.000000000 +0200
@@ -935,7 +935,7 @@ static void lance_load_multicast(struct
{
struct lance_private *lp = netdev_priv(dev);
volatile u16 *ib = (volatile u16 *)dev->mem_start;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
u32 crc;
@@ -955,7 +955,7 @@ static void lance_load_multicast(struct
*lib_ptr(ib, filter[3], lp->type) = 0;
/* Add addresses */
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/defxx.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/defxx.c 2009-06-13 12:29:36.000000000 +0200
@@ -2229,7 +2229,7 @@ static void dfx_ctl_set_multicast_list(s
* perfect filtering will be used.
*/
- if (dev->mc_count > (PI_CMD_ADDR_FILTER_K_SIZE - bp->uc_count))
+ if (dev->mc.count > (PI_CMD_ADDR_FILTER_K_SIZE - bp->uc_count))
{
bp->group_prom = PI_FSTATE_K_PASS; /* Enable LLC group prom mode */
bp->mc_count = 0; /* Don't add mc addrs to CAM */
@@ -2237,12 +2237,12 @@ static void dfx_ctl_set_multicast_list(s
else
{
bp->group_prom = PI_FSTATE_K_BLOCK; /* Disable LLC group prom mode */
- bp->mc_count = dev->mc_count; /* Add mc addrs to CAM */
+ bp->mc_count = dev->mc.count; /* Add mc addrs to CAM */
}
/* Copy addresses to multicast address table, then update adapter CAM */
- dmi = dev->mc_list; /* point to first multicast addr */
+ dmi = dev->mc.list; /* point to first multicast addr */
for (i=0; i < bp->mc_count; i++)
{
memcpy(&bp->mc_table[i*FDDI_K_ALEN], dmi->dmi_addr, FDDI_K_ALEN);
--- wireless-testing.orig/drivers/net/depca.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/depca.c 2009-06-13 12:29:36.000000000 +0200
@@ -1269,7 +1269,7 @@ static void set_multicast_list(struct ne
static void SetMulticastFilter(struct net_device *dev)
{
struct depca_private *lp = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i, j, bit, byte;
u16 hashcode;
@@ -1284,7 +1284,7 @@ static void SetMulticastFilter(struct ne
lp->init_block.mcast_table[i] = 0;
}
/* Add multicast addresses */
- for (i = 0; i < dev->mc_count; i++) { /* for each address in the list */
+ for (i = 0; i < dev->mc.count; i++) { /* for each address in the list */
addrs = dmi->dmi_addr;
dmi = dmi->next;
if ((*addrs & 0x01) == 1) { /* multicast address? */
--- wireless-testing.orig/drivers/net/dl2k.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/dl2k.c 2009-06-13 12:29:37.000000000 +0200
@@ -1133,17 +1133,17 @@ set_multicast (struct net_device *dev)
/* Receive all frames promiscuously. */
rx_mode = ReceiveAllFrames;
} else if ((dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > multicast_filter_limit)) {
+ (dev->mc.count > multicast_filter_limit)) {
/* Receive broadcast and multicast frames */
rx_mode = ReceiveBroadcast | ReceiveMulticast | ReceiveUnicast;
- } else if (dev->mc_count > 0) {
+ } else if (dev->mc.count > 0) {
int i;
struct dev_mc_list *mclist;
/* Receive broadcast frames and multicast frames filtering
by Hashtable */
rx_mode =
ReceiveBroadcast | ReceiveMulticastHash | ReceiveUnicast;
- for (i=0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i=0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist=mclist->next)
{
int bit, index = 0;
--- wireless-testing.orig/drivers/net/dm9000.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/dm9000.c 2009-06-13 12:29:37.000000000 +0200
@@ -627,8 +627,8 @@ static void
dm9000_hash_table(struct net_device *dev)
{
board_info_t *db = netdev_priv(dev);
- struct dev_mc_list *mcptr = dev->mc_list;
- int mc_cnt = dev->mc_count;
+ struct dev_mc_list *mcptr = dev->mc.list;
+ int mc_cnt = dev->mc.count;
int i, oft;
u32 hash_val;
u16 hash_table[4];
--- wireless-testing.orig/drivers/net/e100.c 2009-04-30 23:07:17.000000000 +0200
+++ wireless-testing/drivers/net/e100.c 2009-06-13 12:29:37.000000000 +0200
@@ -1375,8 +1375,8 @@ static int e100_hw_init(struct nic *nic)
static void e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb)
{
struct net_device *netdev = nic->netdev;
- struct dev_mc_list *list = netdev->mc_list;
- u16 i, count = min(netdev->mc_count, E100_MAX_MULTICAST_ADDRS);
+ struct dev_mc_list *list = netdev->mc.list;
+ u16 i, count = min(netdev->mc.count, E100_MAX_MULTICAST_ADDRS);
cb->command = cpu_to_le16(cb_multi);
cb->u.multi.count = cpu_to_le16(count * ETH_ALEN);
@@ -1390,7 +1390,7 @@ static void e100_set_multicast_list(stru
struct nic *nic = netdev_priv(netdev);
DPRINTK(HW, DEBUG, "mc_count=%d, flags=0x%04X\n",
- netdev->mc_count, netdev->flags);
+ netdev->mc.count, netdev->flags);
if (netdev->flags & IFF_PROMISC)
nic->flags |= promiscuous;
@@ -1398,7 +1398,7 @@ static void e100_set_multicast_list(stru
nic->flags &= ~promiscuous;
if (netdev->flags & IFF_ALLMULTI ||
- netdev->mc_count > E100_MAX_MULTICAST_ADDRS)
+ netdev->mc.count > E100_MAX_MULTICAST_ADDRS)
nic->flags |= multicast_all;
else
nic->flags &= ~multicast_all;
--- wireless-testing.orig/drivers/net/e1000/e1000_main.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/e1000/e1000_main.c 2009-06-13 12:29:37.000000000 +0200
@@ -2367,11 +2367,11 @@ static void e1000_set_rx_mode(struct net
}
uc_ptr = NULL;
- if (netdev->uc_count > rar_entries - 1) {
+ if (netdev->uc.count > rar_entries - 1) {
rctl |= E1000_RCTL_UPE;
} else if (!(netdev->flags & IFF_PROMISC)) {
rctl &= ~E1000_RCTL_UPE;
- uc_ptr = netdev->uc_list;
+ uc_ptr = netdev->uc.list;
}
ew32(RCTL, rctl);
@@ -2389,7 +2389,7 @@ static void e1000_set_rx_mode(struct net
* if there are not 14 addresses, go ahead and clear the filters
* -- with 82571 controllers only 0-13 entries are filled here
*/
- mc_ptr = netdev->mc_list;
+ mc_ptr = netdev->mc.list;
for (i = 1; i < rar_entries; i++) {
if (uc_ptr) {
--- wireless-testing.orig/drivers/net/e1000e/netdev.c 2009-04-30 23:07:17.000000000 +0200
+++ wireless-testing/drivers/net/e1000e/netdev.c 2009-06-13 12:29:37.000000000 +0200
@@ -2572,15 +2572,15 @@ static void e1000_set_multi(struct net_d
ew32(RCTL, rctl);
- if (netdev->mc_count) {
- mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC);
+ if (netdev->mc.count) {
+ mta_list = kmalloc(netdev->mc.count * 6, GFP_ATOMIC);
if (!mta_list)
return;
/* prepare a packed array of only addresses. */
- mc_ptr = netdev->mc_list;
+ mc_ptr = netdev->mc.list;
- for (i = 0; i < netdev->mc_count; i++) {
+ for (i = 0; i < netdev->mc.count; i++) {
if (!mc_ptr)
break;
memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr,
--- wireless-testing.orig/drivers/net/eepro.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/eepro.c 2009-06-13 12:29:37.000000000 +0200
@@ -1285,9 +1285,9 @@ set_multicast_list(struct net_device *de
struct eepro_local *lp = netdev_priv(dev);
short ioaddr = dev->base_addr;
unsigned short mode;
- struct dev_mc_list *dmi=dev->mc_list;
+ struct dev_mc_list *dmi=dev->mc.list;
- if (dev->flags&(IFF_ALLMULTI|IFF_PROMISC) || dev->mc_count > 63)
+ if (dev->flags&(IFF_ALLMULTI|IFF_PROMISC) || dev->mc.count > 63)
{
eepro_sw2bank2(ioaddr); /* be CAREFUL, BANK 2 now */
mode = inb(ioaddr + REG2);
@@ -1297,7 +1297,7 @@ set_multicast_list(struct net_device *de
eepro_sw2bank0(ioaddr); /* Return to BANK 0 now */
}
- else if (dev->mc_count==0 )
+ else if (dev->mc.count==0 )
{
eepro_sw2bank2(ioaddr); /* be CAREFUL, BANK 2 now */
mode = inb(ioaddr + REG2);
@@ -1327,9 +1327,9 @@ set_multicast_list(struct net_device *de
outw(MC_SETUP, ioaddr + IO_PORT);
outw(0, ioaddr + IO_PORT);
outw(0, ioaddr + IO_PORT);
- outw(6*(dev->mc_count + 1), ioaddr + IO_PORT);
+ outw(6*(dev->mc.count + 1), ioaddr + IO_PORT);
- for (i = 0; i < dev->mc_count; i++)
+ for (i = 0; i < dev->mc.count; i++)
{
eaddrs=(unsigned short *)dmi->dmi_addr;
dmi=dmi->next;
@@ -1346,7 +1346,7 @@ set_multicast_list(struct net_device *de
outb(MC_SETUP, ioaddr);
/* Update the transmit queue */
- i = lp->tx_end + XMT_HEADER + 6*(dev->mc_count + 1);
+ i = lp->tx_end + XMT_HEADER + 6*(dev->mc.count + 1);
if (lp->tx_start != lp->tx_end)
{
@@ -1378,8 +1378,8 @@ set_multicast_list(struct net_device *de
break;
} else if ((i & 0x0f) == 0x03) { /* MC-Done */
printk(KERN_DEBUG "%s: set Rx mode to %d address%s.\n",
- dev->name, dev->mc_count,
- dev->mc_count > 1 ? "es":"");
+ dev->name, dev->mc.count,
+ dev->mc.count > 1 ? "es":"");
break;
}
}
--- wireless-testing.orig/drivers/net/eexpress.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/eexpress.c 2009-06-13 12:29:37.000000000 +0200
@@ -1577,7 +1577,7 @@ static void eexp_setup_filter(struct net
{
struct dev_mc_list *dmi;
unsigned short ioaddr = dev->base_addr;
- int count = dev->mc_count;
+ int count = dev->mc.count;
int i;
if (count > 8) {
printk(KERN_INFO "%s: too many multicast addresses (%d)\n",
@@ -1587,7 +1587,7 @@ static void eexp_setup_filter(struct net
outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR);
outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST));
- for (i = 0, dmi = dev->mc_list; i < count; i++, dmi = dmi->next) {
+ for (i = 0, dmi = dev->mc.list; i < count; i++, dmi = dmi->next) {
unsigned short *data;
if (!dmi) {
printk(KERN_INFO "%s: too few multicast addresses\n", dev->name);
@@ -1626,9 +1626,9 @@ eexp_set_multicast(struct net_device *de
}
if (!(dev->flags & IFF_PROMISC)) {
eexp_setup_filter(dev);
- if (lp->old_mc_count != dev->mc_count) {
+ if (lp->old_mc_count != dev->mc.count) {
kick = 1;
- lp->old_mc_count = dev->mc_count;
+ lp->old_mc_count = dev->mc.count;
}
}
if (kick) {
--- wireless-testing.orig/drivers/net/ehea/ehea_main.c 2009-05-11 21:32:39.000000000 +0200
+++ wireless-testing/drivers/net/ehea/ehea_main.c 2009-06-13 12:29:37.000000000 +0200
@@ -1977,7 +1977,7 @@ static void ehea_set_multicast_list(stru
}
ehea_allmulti(dev, 0);
- if (dev->mc_count) {
+ if (dev->mc.count) {
ret = ehea_drop_multicast_list(dev);
if (ret) {
/* Dropping the current multicast list failed.
@@ -1986,14 +1986,14 @@ static void ehea_set_multicast_list(stru
ehea_allmulti(dev, 1);
}
- if (dev->mc_count > port->adapter->max_mc_mac) {
+ if (dev->mc.count > port->adapter->max_mc_mac) {
ehea_info("Mcast registration limit reached (0x%llx). "
"Use ALLMULTI!",
port->adapter->max_mc_mac);
goto out;
}
- for (i = 0, k_mcl_entry = dev->mc_list; i < dev->mc_count; i++,
+ for (i = 0, k_mcl_entry = dev->mc.list; i < dev->mc.count; i++,
k_mcl_entry = k_mcl_entry->next)
ehea_add_multicast_entry(port, k_mcl_entry->dmi_addr);
--- wireless-testing.orig/drivers/net/enc28j60.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/enc28j60.c 2009-06-13 12:29:38.000000000 +0200
@@ -1412,7 +1412,7 @@ static void enc28j60_set_multicast_list(
if (netif_msg_link(priv))
dev_info(&dev->dev, "promiscuous mode\n");
priv->rxfilter = RXFILTER_PROMISC;
- } else if ((dev->flags & IFF_ALLMULTI) || dev->mc_count) {
+ } else if ((dev->flags & IFF_ALLMULTI) || dev->mc.count) {
if (netif_msg_link(priv))
dev_info(&dev->dev, "%smulticast mode\n",
(dev->flags & IFF_ALLMULTI) ? "all-" : "");
--- wireless-testing.orig/drivers/net/enic/enic_main.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/enic/enic_main.c 2009-06-13 12:29:38.000000000 +0200
@@ -713,15 +713,15 @@ static int enic_set_mac_addr(struct net_
static void enic_set_multicast_list(struct net_device *netdev)
{
struct enic *enic = netdev_priv(netdev);
- struct dev_mc_list *list = netdev->mc_list;
+ struct dev_mc_list *list = netdev->mc.list;
int directed = 1;
int multicast = (netdev->flags & IFF_MULTICAST) ? 1 : 0;
int broadcast = (netdev->flags & IFF_BROADCAST) ? 1 : 0;
int promisc = (netdev->flags & IFF_PROMISC) ? 1 : 0;
int allmulti = (netdev->flags & IFF_ALLMULTI) ||
- (netdev->mc_count > ENIC_MULTICAST_PERFECT_FILTERS);
+ (netdev->mc.count > ENIC_MULTICAST_PERFECT_FILTERS);
u8 mc_addr[ENIC_MULTICAST_PERFECT_FILTERS][ETH_ALEN];
- unsigned int mc_count = netdev->mc_count;
+ unsigned int mc_count = netdev->mc.count;
unsigned int i, j;
if (mc_count > ENIC_MULTICAST_PERFECT_FILTERS)
--- wireless-testing.orig/drivers/net/epic100.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/epic100.c 2009-06-13 12:29:38.000000000 +0200
@@ -1390,20 +1390,20 @@ static void set_rx_mode(struct net_devic
outl(0x002C, ioaddr + RxCtrl);
/* Unconditionally log net taps. */
memset(mc_filter, 0xff, sizeof(mc_filter));
- } else if ((dev->mc_count > 0) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.count > 0) || (dev->flags & IFF_ALLMULTI)) {
/* There is apparently a chip bug, so the multicast filter
is never enabled. */
/* Too many to filter perfectly -- accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
outl(0x000C, ioaddr + RxCtrl);
- } else if (dev->mc_count == 0) {
+ } else if (dev->mc.count == 0) {
outl(0x0004, ioaddr + RxCtrl);
return;
} else { /* Never executed, for now. */
struct dev_mc_list *mclist;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit_nr =
ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f;
--- wireless-testing.orig/drivers/net/eth16i.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/eth16i.c 2009-06-13 12:29:38.000000000 +0200
@@ -1359,7 +1359,7 @@ static void eth16i_multicast(struct net_
{
int ioaddr = dev->base_addr;
- if(dev->mc_count || dev->flags&(IFF_ALLMULTI|IFF_PROMISC))
+ if(dev->mc.count || dev->flags&(IFF_ALLMULTI|IFF_PROMISC))
{
outb(3, ioaddr + RECEIVE_MODE_REG);
} else {
--- wireless-testing.orig/drivers/net/ethoc.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ethoc.c 2009-06-13 12:29:38.000000000 +0200
@@ -772,7 +772,7 @@ static void ethoc_set_multicast_list(str
hash[0] = 0xffffffff;
hash[1] = 0xffffffff;
} else {
- for (mc = dev->mc_list; mc; mc = mc->next) {
+ for (mc = dev->mc.list; mc; mc = mc->next) {
u32 crc = ether_crc(mc->dmi_addrlen, mc->dmi_addr);
int bit = (crc >> 26) & 0x3f;
hash[bit >> 5] |= 1 << (bit & 0x1f);
--- wireless-testing.orig/drivers/net/ewrk3.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ewrk3.c 2009-06-13 12:29:38.000000000 +0200
@@ -1168,7 +1168,7 @@ static void set_multicast_list(struct ne
static void SetMulticastFilter(struct net_device *dev)
{
struct ewrk3_private *lp = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
u_long iobase = dev->base_addr;
int i;
char *addrs, bit, byte;
@@ -1212,7 +1212,7 @@ static void SetMulticastFilter(struct ne
}
/* Update table */
- for (i = 0; i < dev->mc_count; i++) { /* for each address in the list */
+ for (i = 0; i < dev->mc.count; i++) { /* for each address in the list */
addrs = dmi->dmi_addr;
dmi = dmi->next;
if ((*addrs & 0x01) == 1) { /* multicast address? */
--- wireless-testing.orig/drivers/net/fealnx.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/fealnx.c 2009-06-13 12:29:38.000000000 +0200
@@ -1782,7 +1782,7 @@ static void __set_rx_mode(struct net_dev
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
memset(mc_filter, 0xff, sizeof(mc_filter));
rx_mode = CR_W_PROM | CR_W_AB | CR_W_AM;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
@@ -1792,7 +1792,7 @@ static void __set_rx_mode(struct net_dev
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit;
bit = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26) ^ 0x3F;
--- wireless-testing.orig/drivers/net/fec.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/fec.c 2009-06-13 12:29:38.000000000 +0200
@@ -1610,9 +1610,9 @@ static void set_multicast_list(struct ne
ep->fec_grp_hash_table_high = 0;
ep->fec_grp_hash_table_low = 0;
- dmi = dev->mc_list;
+ dmi = dev->mc.list;
- for (j = 0; j < dev->mc_count; j++, dmi = dmi->next)
+ for (j = 0; j < dev->mc.count; j++, dmi = dmi->next)
{
/* Only support group multicast for now.
*/
--- wireless-testing.orig/drivers/net/fec_mpc52xx.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/fec_mpc52xx.c 2009-06-13 12:29:38.000000000 +0200
@@ -635,8 +635,8 @@ static void mpc52xx_fec_set_multicast_li
u32 gaddr1 = 0x00000000;
u32 gaddr2 = 0x00000000;
- dmi = dev->mc_list;
- for (i=0; i<dev->mc_count; i++) {
+ dmi = dev->mc.list;
+ for (i=0; i<dev->mc.count; i++) {
crc = ether_crc_le(6, dmi->dmi_addr) >> 26;
if (crc >= 32)
gaddr1 |= 1 << (crc-32);
--- wireless-testing.orig/drivers/net/forcedeth.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/forcedeth.c 2009-06-13 12:29:38.000000000 +0200
@@ -3077,7 +3077,7 @@ static void nv_set_multicast(struct net_
} else {
pff |= NVREG_PFF_MYADDR;
- if (dev->flags & IFF_ALLMULTI || dev->mc_list) {
+ if (dev->flags & IFF_ALLMULTI || dev->mc.list) {
u32 alwaysOff[2];
u32 alwaysOn[2];
@@ -3087,7 +3087,7 @@ static void nv_set_multicast(struct net_
} else {
struct dev_mc_list *walk;
- walk = dev->mc_list;
+ walk = dev->mc.list;
while (walk != NULL) {
u32 a, b;
a = le32_to_cpu(*(__le32 *) walk->dmi_addr);
--- wireless-testing.orig/drivers/net/fs_enet/mac-fcc.c 2008-12-19 00:28:05.000000000 +0100
+++ wireless-testing/drivers/net/fs_enet/mac-fcc.c 2009-06-13 12:29:38.000000000 +0200
@@ -218,7 +218,7 @@ static void set_multicast_finish(struct
/* if all multi or too many multicasts; just enable all */
if ((dev->flags & IFF_ALLMULTI) != 0 ||
- dev->mc_count > FCC_MAX_MULTICAST_ADDRS) {
+ dev->mc.count > FCC_MAX_MULTICAST_ADDRS) {
W32(ep, fen_gaddrh, 0xffffffff);
W32(ep, fen_gaddrl, 0xffffffff);
@@ -235,7 +235,7 @@ static void set_multicast_list(struct ne
if ((dev->flags & IFF_PROMISC) == 0) {
set_multicast_start(dev);
- for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next)
+ for (pmc = dev->mc.list; pmc != NULL; pmc = pmc->next)
set_multicast_one(dev, pmc->dmi_addr);
set_multicast_finish(dev);
} else
--- wireless-testing.orig/drivers/net/fs_enet/mac-fec.c 2008-12-19 00:28:05.000000000 +0100
+++ wireless-testing/drivers/net/fs_enet/mac-fec.c 2009-06-13 12:29:38.000000000 +0200
@@ -220,7 +220,7 @@ static void set_multicast_finish(struct
/* if all multi or too many multicasts; just enable all */
if ((dev->flags & IFF_ALLMULTI) != 0 ||
- dev->mc_count > FEC_MAX_MULTICAST_ADDRS) {
+ dev->mc.count > FEC_MAX_MULTICAST_ADDRS) {
fep->fec.hthi = 0xffffffffU;
fep->fec.htlo = 0xffffffffU;
}
@@ -236,7 +236,7 @@ static void set_multicast_list(struct ne
if ((dev->flags & IFF_PROMISC) == 0) {
set_multicast_start(dev);
- for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next)
+ for (pmc = dev->mc.list; pmc != NULL; pmc = pmc->next)
set_multicast_one(dev, pmc->dmi_addr);
set_multicast_finish(dev);
} else
--- wireless-testing.orig/drivers/net/fs_enet/mac-scc.c 2008-12-19 00:28:05.000000000 +0100
+++ wireless-testing/drivers/net/fs_enet/mac-scc.c 2009-06-13 12:29:38.000000000 +0200
@@ -213,7 +213,7 @@ static void set_multicast_finish(struct
/* if all multi or too many multicasts; just enable all */
if ((dev->flags & IFF_ALLMULTI) != 0 ||
- dev->mc_count > SCC_MAX_MULTICAST_ADDRS) {
+ dev->mc.count > SCC_MAX_MULTICAST_ADDRS) {
W16(ep, sen_gaddr1, 0xffff);
W16(ep, sen_gaddr2, 0xffff);
@@ -228,7 +228,7 @@ static void set_multicast_list(struct ne
if ((dev->flags & IFF_PROMISC) == 0) {
set_multicast_start(dev);
- for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next)
+ for (pmc = dev->mc.list; pmc != NULL; pmc = pmc->next)
set_multicast_one(dev, pmc->dmi_addr);
set_multicast_finish(dev);
} else
--- wireless-testing.orig/drivers/net/gianfar.c 2009-06-07 21:32:31.000000000 +0200
+++ wireless-testing/drivers/net/gianfar.c 2009-06-13 12:29:38.000000000 +0200
@@ -2196,11 +2196,11 @@ static void gfar_set_multi(struct net_de
em_num = 0;
}
- if(dev->mc_count == 0)
+ if(dev->mc.count == 0)
return;
/* Parse the list, and set the appropriate bits */
- for(mc_ptr = dev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
+ for(mc_ptr = dev->mc.list; mc_ptr; mc_ptr = mc_ptr->next) {
if (idx < em_num) {
gfar_set_mac_for_addr(dev, idx,
mc_ptr->dmi_addr);
--- wireless-testing.orig/drivers/net/hamachi.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/hamachi.c 2009-06-13 12:29:38.000000000 +0200
@@ -1849,13 +1849,13 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
writew(0x000F, ioaddr + AddrMode);
- } else if ((dev->mc_count > 63) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.count > 63) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
writew(0x000B, ioaddr + AddrMode);
- } else if (dev->mc_count > 0) { /* Must use the CAM filter. */
+ } else if (dev->mc.count > 0) { /* Must use the CAM filter. */
struct dev_mc_list *mclist;
int i;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
writel(*(u32*)(mclist->dmi_addr), ioaddr + 0x100 + i*8);
writel(0x20000 | (*(u16*)&mclist->dmi_addr[4]),
--- wireless-testing.orig/drivers/net/hp100.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/hp100.c 2009-06-13 12:29:39.000000000 +0200
@@ -2087,7 +2087,7 @@ static void hp100_set_multicast_list(str
lp->mac2_mode = HP100_MAC2MODE6; /* promiscuous mode = get all good */
lp->mac1_mode = HP100_MAC1MODE6; /* packets on the net */
memset(&lp->hash_bytes, 0xff, 8);
- } else if (dev->mc_count || (dev->flags & IFF_ALLMULTI)) {
+ } else if (dev->mc.count || (dev->flags & IFF_ALLMULTI)) {
lp->mac2_mode = HP100_MAC2MODE5; /* multicast mode = get packets for */
lp->mac1_mode = HP100_MAC1MODE5; /* me, broadcasts and all multicasts */
#ifdef HP100_MULTICAST_FILTER /* doesn't work!!! */
@@ -2101,9 +2101,9 @@ static void hp100_set_multicast_list(str
memset(&lp->hash_bytes, 0x00, 8);
#ifdef HP100_DEBUG
- printk("hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc_count);
+ printk("hp100: %s: computing hash filter - mc_count = %i\n", dev->name, dev->mc.count);
#endif
- for (i = 0, dmi = dev->mc_list; i < dev->mc_count; i++, dmi = dmi->next) {
+ for (i = 0, dmi = dev->mc.list; i < dev->mc.count; i++, dmi = dmi->next) {
addrs = dmi->dmi_addr;
if ((*addrs & 0x01) == 0x01) { /* multicast address? */
#ifdef HP100_DEBUG
--- wireless-testing.orig/drivers/net/ibm_newemac/core.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/ibm_newemac/core.c 2009-06-13 12:29:39.000000000 +0200
@@ -390,11 +390,11 @@ static void emac_hash_mc(struct emac_ins
struct dev_mc_list *dmi;
int i;
- DBG(dev, "hash_mc %d" NL, dev->ndev->mc_count);
+ DBG(dev, "hash_mc %d" NL, dev->ndev->mc.count);
memset(gaht_temp, 0, sizeof (gaht_temp));
- for (dmi = dev->ndev->mc_list; dmi; dmi = dmi->next) {
+ for (dmi = dev->ndev->mc.list; dmi; dmi = dmi->next) {
int slot, reg, mask;
DBG2(dev, "mc %pM" NL, dmi->dmi_addr);
@@ -424,9 +424,9 @@ static inline u32 emac_iff2rmr(struct ne
if (ndev->flags & IFF_PROMISC)
r |= EMAC_RMR_PME;
else if (ndev->flags & IFF_ALLMULTI ||
- (ndev->mc_count > EMAC_XAHT_SLOTS(dev)))
+ (ndev->mc.count > EMAC_XAHT_SLOTS(dev)))
r |= EMAC_RMR_PMME;
- else if (ndev->mc_count > 0)
+ else if (ndev->mc.count > 0)
r |= EMAC_RMR_MAE;
return r;
--- wireless-testing.orig/drivers/net/ibmlana.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ibmlana.c 2009-06-13 12:29:39.000000000 +0200
@@ -419,7 +419,7 @@ static void InitBoard(struct net_device
/* start putting the multicast addresses into the CAM list. Stop if
it is full. */
- for (mcptr = dev->mc_list; mcptr != NULL; mcptr = mcptr->next) {
+ for (mcptr = dev->mc.list; mcptr != NULL; mcptr = mcptr->next) {
putcam(cams, &camcnt, mcptr->dmi_addr);
if (camcnt == 16)
break;
--- wireless-testing.orig/drivers/net/ibmveth.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ibmveth.c 2009-06-13 12:29:39.000000000 +0200
@@ -1061,7 +1061,7 @@ static void ibmveth_set_multicast_list(s
struct ibmveth_adapter *adapter = netdev_priv(netdev);
unsigned long lpar_rc;
- if((netdev->flags & IFF_PROMISC) || (netdev->mc_count > adapter->mcastFilterSize)) {
+ if((netdev->flags & IFF_PROMISC) || (netdev->mc.count > adapter->mcastFilterSize)) {
lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address,
IbmVethMcastEnableRecv |
IbmVethMcastDisableFiltering,
@@ -1070,7 +1070,7 @@ static void ibmveth_set_multicast_list(s
ibmveth_error_printk("h_multicast_ctrl rc=%ld when entering promisc mode\n", lpar_rc);
}
} else {
- struct dev_mc_list *mclist = netdev->mc_list;
+ struct dev_mc_list *mclist = netdev->mc.list;
int i;
/* clear the filter table & disable filtering */
lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address,
@@ -1082,7 +1082,7 @@ static void ibmveth_set_multicast_list(s
ibmveth_error_printk("h_multicast_ctrl rc=%ld when attempting to clear filter table\n", lpar_rc);
}
/* add the addresses to the filter table */
- for(i = 0; i < netdev->mc_count; ++i, mclist = mclist->next) {
+ for(i = 0; i < netdev->mc.count; ++i, mclist = mclist->next) {
// add the multicast address to the filter table
unsigned long mcast_addr = 0;
memcpy(((char *)&mcast_addr)+2, mclist->dmi_addr, 6);
--- wireless-testing.orig/drivers/net/igb/igb_main.c 2009-05-18 12:02:00.000000000 +0200
+++ wireless-testing/drivers/net/igb/igb_main.c 2009-06-13 12:29:39.000000000 +0200
@@ -2523,8 +2523,8 @@ static void igb_set_multi(struct net_dev
}
wr32(E1000_RCTL, rctl);
- if (netdev->mc_count) {
- mta_list = kzalloc(netdev->mc_count * 6, GFP_ATOMIC);
+ if (netdev->mc.count) {
+ mta_list = kzalloc(netdev->mc.count * 6, GFP_ATOMIC);
if (!mta_list) {
dev_err(&adapter->pdev->dev,
"failed to allocate multicast filter list\n");
@@ -2533,9 +2533,9 @@ static void igb_set_multi(struct net_dev
}
/* The shared function expects a packed array of only addresses. */
- mc_ptr = netdev->mc_list;
+ mc_ptr = netdev->mc.list;
- for (i = 0; i < netdev->mc_count; i++) {
+ for (i = 0; i < netdev->mc.count; i++) {
if (!mc_ptr)
break;
memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN);
--- wireless-testing.orig/drivers/net/igbvf/netdev.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/igbvf/netdev.c 2009-06-13 12:29:39.000000000 +0200
@@ -1402,8 +1402,8 @@ static void igbvf_set_multi(struct net_d
u8 *mta_list = NULL;
int i;
- if (netdev->mc_count) {
- mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC);
+ if (netdev->mc.count) {
+ mta_list = kmalloc(netdev->mc.count * 6, GFP_ATOMIC);
if (!mta_list) {
dev_err(&adapter->pdev->dev,
"failed to allocate multicast filter list\n");
@@ -1412,9 +1412,9 @@ static void igbvf_set_multi(struct net_d
}
/* prepare a packed array of only addresses. */
- mc_ptr = netdev->mc_list;
+ mc_ptr = netdev->mc.list;
- for (i = 0; i < netdev->mc_count; i++) {
+ for (i = 0; i < netdev->mc.count; i++) {
if (!mc_ptr)
break;
memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr,
--- wireless-testing.orig/drivers/net/ioc3-eth.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/ioc3-eth.c 2009-06-13 12:29:39.000000000 +0200
@@ -1664,7 +1664,7 @@ static int ioc3_ioctl(struct net_device
static void ioc3_set_multicast_list(struct net_device *dev)
{
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
struct ioc3_private *ip = netdev_priv(dev);
struct ioc3 *ioc3 = ip->regs;
u64 ehar = 0;
@@ -1681,14 +1681,14 @@ static void ioc3_set_multicast_list(stru
ioc3_w_emcr(ip->emcr); /* Clear promiscuous. */
(void) ioc3_r_emcr();
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
/* Too many for hashing to make sense or we want all
multicast packets anyway, so skip computing all the
hashes and just accept all packets. */
ip->ehar_h = 0xffffffff;
ip->ehar_l = 0xffffffff;
} else {
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
char *addr = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/ipg.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ipg.c 2009-06-13 12:29:39.000000000 +0200
@@ -585,11 +585,11 @@ static void ipg_nic_set_multicast_list(s
receivemode = IPG_RM_RECEIVEALLFRAMES;
} else if ((dev->flags & IFF_ALLMULTI) ||
((dev->flags & IFF_MULTICAST) &&
- (dev->mc_count > IPG_MULTICAST_HASHTABLE_SIZE))) {
+ (dev->mc.count > IPG_MULTICAST_HASHTABLE_SIZE))) {
/* NIC to be configured to receive all multicast
* frames. */
receivemode |= IPG_RM_RECEIVEMULTICAST;
- } else if ((dev->flags & IFF_MULTICAST) && (dev->mc_count > 0)) {
+ } else if ((dev->flags & IFF_MULTICAST) && (dev->mc.count > 0)) {
/* NIC to be configured to receive selected
* multicast addresses. */
receivemode |= IPG_RM_RECEIVEMULTICASTHASH;
@@ -610,7 +610,7 @@ static void ipg_nic_set_multicast_list(s
hashtable[1] = 0x00000000;
/* Cycle through all multicast addresses to filter. */
- for (mc_list_ptr = dev->mc_list;
+ for (mc_list_ptr = dev->mc.list;
mc_list_ptr != NULL; mc_list_ptr = mc_list_ptr->next) {
/* Calculate CRC result for each multicast address. */
hashindex = crc32_le(0xffffffff, mc_list_ptr->dmi_addr,
--- wireless-testing.orig/drivers/net/isa-skeleton.c 2009-04-23 00:20:40.000000000 +0200
+++ wireless-testing/drivers/net/isa-skeleton.c 2009-06-13 12:29:39.000000000 +0200
@@ -654,17 +654,17 @@ set_multicast_list(struct net_device *de
/* Enable promiscuous mode */
outw(MULTICAST|PROMISC, ioaddr);
}
- else if((dev->flags&IFF_ALLMULTI) || dev->mc_count > HW_MAX_ADDRS)
+ else if((dev->flags&IFF_ALLMULTI) || dev->mc.count > HW_MAX_ADDRS)
{
/* Disable promiscuous mode, use normal mode. */
hardware_set_filter(NULL);
outw(MULTICAST, ioaddr);
}
- else if(dev->mc_count)
+ else if(dev->mc.count)
{
/* Walk the address list, and load the filter */
- hardware_set_filter(dev->mc_list);
+ hardware_set_filter(dev->mc.list);
outw(MULTICAST, ioaddr);
}
--- wireless-testing.orig/drivers/net/iseries_veth.c 2009-01-21 12:47:53.000000000 +0100
+++ wireless-testing/drivers/net/iseries_veth.c 2009-06-13 12:29:39.000000000 +0200
@@ -958,10 +958,10 @@ static void veth_set_multicast_list(stru
write_lock_irqsave(&port->mcast_gate, flags);
if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > VETH_MAX_MCAST)) {
+ (dev->mc.count > VETH_MAX_MCAST)) {
port->promiscuous = 1;
} else {
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
int i;
port->promiscuous = 0;
@@ -969,7 +969,7 @@ static void veth_set_multicast_list(stru
/* Update table */
port->num_mcast = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
u8 *addr = dmi->dmi_addr;
u64 xaddr = 0;
--- wireless-testing.orig/drivers/net/ixgb/ixgb_main.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/ixgb/ixgb_main.c 2009-06-13 12:29:39.000000000 +0200
@@ -1064,7 +1064,7 @@ ixgb_set_multi(struct net_device *netdev
rctl |= IXGB_RCTL_VFE;
}
- if (netdev->mc_count > IXGB_MAX_NUM_MULTICAST_ADDRESSES) {
+ if (netdev->mc.count > IXGB_MAX_NUM_MULTICAST_ADDRESSES) {
rctl |= IXGB_RCTL_MPE;
IXGB_WRITE_REG(hw, RCTL, rctl);
} else {
@@ -1073,13 +1073,13 @@ ixgb_set_multi(struct net_device *netdev
IXGB_WRITE_REG(hw, RCTL, rctl);
- for (i = 0, mc_ptr = netdev->mc_list;
+ for (i = 0, mc_ptr = netdev->mc.list;
mc_ptr;
i++, mc_ptr = mc_ptr->next)
memcpy(&mta[i * IXGB_ETH_LENGTH_OF_ADDRESS],
mc_ptr->dmi_addr, IXGB_ETH_LENGTH_OF_ADDRESS);
- ixgb_mc_addr_list_update(hw, mta, netdev->mc_count, 0);
+ ixgb_mc_addr_list_update(hw, mta, netdev->mc.count, 0);
}
}
@@ -1593,7 +1593,7 @@ ixgb_update_stats(struct ixgb_adapter *a
return;
if ((netdev->flags & IFF_PROMISC) || (netdev->flags & IFF_ALLMULTI) ||
- (netdev->mc_count > IXGB_MAX_NUM_MULTICAST_ADDRESSES)) {
+ (netdev->mc.count > IXGB_MAX_NUM_MULTICAST_ADDRESSES)) {
u64 multi = IXGB_READ_REG(&adapter->hw, MPRCL);
u32 bcast_l = IXGB_READ_REG(&adapter->hw, BPRCL);
u32 bcast_h = IXGB_READ_REG(&adapter->hw, BPRCH);
--- wireless-testing.orig/drivers/net/ixgbe/ixgbe_main.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/ixgbe/ixgbe_main.c 2009-06-13 12:29:40.000000000 +0200
@@ -2015,16 +2015,16 @@ static void ixgbe_set_rx_mode(struct net
IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
/* reprogram secondary unicast list */
- addr_count = netdev->uc_count;
+ addr_count = netdev->uc.count;
if (addr_count)
- addr_list = netdev->uc_list->dmi_addr;
+ addr_list = netdev->uc.list->dmi_addr;
hw->mac.ops.update_uc_addr_list(hw, addr_list, addr_count,
ixgbe_addr_list_itr);
/* reprogram multicast list */
- addr_count = netdev->mc_count;
+ addr_count = netdev->mc.count;
if (addr_count)
- addr_list = netdev->mc_list->dmi_addr;
+ addr_list = netdev->mc.list->dmi_addr;
hw->mac.ops.update_mc_addr_list(hw, addr_list, addr_count,
ixgbe_addr_list_itr);
}
--- wireless-testing.orig/drivers/net/jme.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/jme.c 2009-06-13 12:29:40.000000000 +0200
@@ -1995,8 +1995,8 @@ jme_set_multi(struct net_device *netdev)
int bit_nr;
jme->reg_rxmcs |= RXMCS_MULFRAME | RXMCS_MULFILTERED;
- for (i = 0, mclist = netdev->mc_list;
- mclist && i < netdev->mc_count;
+ for (i = 0, mclist = netdev->mc.list;
+ mclist && i < netdev->mc.count;
++i, mclist = mclist->next) {
bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3F;
--- wireless-testing.orig/drivers/net/korina.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/korina.c 2009-06-13 12:29:40.000000000 +0200
@@ -484,7 +484,7 @@ static void korina_multicast_list(struct
{
struct korina_private *lp = netdev_priv(dev);
unsigned long flags;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
u32 recognise = ETH_ARC_AB; /* always accept broadcasts */
int i;
@@ -492,19 +492,19 @@ static void korina_multicast_list(struct
if (dev->flags & IFF_PROMISC)
recognise |= ETH_ARC_PRO;
- else if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 4))
+ else if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 4))
/* All multicast and broadcast */
recognise |= ETH_ARC_AM;
/* Build the hash table */
- if (dev->mc_count > 4) {
+ if (dev->mc.count > 4) {
u16 hash_table[4];
u32 crc;
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
char *addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/lance.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/lance.c 2009-06-13 12:29:40.000000000 +0200
@@ -1286,7 +1286,7 @@ static void set_multicast_list(struct ne
} else {
short multicast_table[4];
int i;
- int num_addrs=dev->mc_count;
+ int num_addrs=dev->mc.count;
if(dev->flags&IFF_ALLMULTI)
num_addrs=1;
/* FIXIT: We don't use the multicast table, but rely on upper-layer filtering. */
--- wireless-testing.orig/drivers/net/lib82596.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/lib82596.c 2009-06-13 12:29:40.000000000 +0200
@@ -1342,7 +1342,7 @@ static void set_multicast_list(struct ne
DEB(DEB_MULTI,
printk(KERN_DEBUG
"%s: set multicast list, %d entries, promisc %s, allmulti %s\n",
- dev->name, dev->mc_count,
+ dev->name, dev->mc.count,
dev->flags & IFF_PROMISC ? "ON" : "OFF",
dev->flags & IFF_ALLMULTI ? "ON" : "OFF"));
@@ -1378,23 +1378,23 @@ static void set_multicast_list(struct ne
}
}
- cnt = dev->mc_count;
+ cnt = dev->mc.count;
if (cnt > MAX_MC_CNT) {
cnt = MAX_MC_CNT;
printk(KERN_NOTICE "%s: Only %d multicast addresses supported",
dev->name, cnt);
}
- if (dev->mc_count > 0) {
+ if (dev->mc.count > 0) {
struct dev_mc_list *dmi;
unsigned char *cp;
struct mc_cmd *cmd;
cmd = &dma->mc_cmd;
cmd->cmd.command = SWAP16(CmdMulticastList);
- cmd->mc_cnt = SWAP16(dev->mc_count * 6);
+ cmd->mc_cnt = SWAP16(dev->mc.count * 6);
cp = cmd->mc_addrs;
- for (dmi = dev->mc_list;
+ for (dmi = dev->mc.list;
cnt && dmi != NULL;
dmi = dmi->next, cnt--, cp += 6) {
memcpy(cp, dmi->dmi_addr, 6);
--- wireless-testing.orig/drivers/net/lib8390.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/lib8390.c 2009-06-13 12:29:40.000000000 +0200
@@ -906,7 +906,7 @@ static inline void make_mc_bits(u8 *bits
{
struct dev_mc_list *dmi;
- for (dmi=dev->mc_list; dmi; dmi=dmi->next)
+ for (dmi=dev->mc.list; dmi; dmi=dmi->next)
{
u32 crc;
if (dmi->dmi_addrlen != ETH_ALEN)
@@ -940,7 +940,7 @@ static void do_set_multicast_list(struct
if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI)))
{
memset(ei_local->mcfilter, 0, 8);
- if (dev->mc_list)
+ if (dev->mc.list)
make_mc_bits(ei_local->mcfilter, dev);
}
else
@@ -974,7 +974,7 @@ static void do_set_multicast_list(struct
if(dev->flags&IFF_PROMISC)
ei_outb_p(E8390_RXCONFIG | 0x18, e8390_base + EN0_RXCR);
- else if(dev->flags&IFF_ALLMULTI || dev->mc_list)
+ else if(dev->flags&IFF_ALLMULTI || dev->mc.list)
ei_outb_p(E8390_RXCONFIG | 0x08, e8390_base + EN0_RXCR);
else
ei_outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR);
--- wireless-testing.orig/drivers/net/lp486e.c 2009-04-09 10:00:15.000000000 +0200
+++ wireless-testing/drivers/net/lp486e.c 2009-06-13 12:29:40.000000000 +0200
@@ -1253,20 +1253,20 @@ static void set_multicast_list(struct ne
if (i596_debug > 1)
printk ("%s: set multicast list %d\n",
- dev->name, dev->mc_count);
+ dev->name, dev->mc.count);
- if (dev->mc_count > 0) {
+ if (dev->mc.count > 0) {
struct dev_mc_list *dmi;
char *cp;
- cmd = kmalloc(sizeof(struct i596_cmd)+2+dev->mc_count*6, GFP_ATOMIC);
+ cmd = kmalloc(sizeof(struct i596_cmd)+2+dev->mc.count*6, GFP_ATOMIC);
if (cmd == NULL) {
printk (KERN_ERR "%s: set_multicast Memory squeeze.\n", dev->name);
return;
}
cmd->command = CmdMulticastList;
- *((unsigned short *) (cmd + 1)) = dev->mc_count * 6;
+ *((unsigned short *) (cmd + 1)) = dev->mc.count * 6;
cp = ((char *)(cmd + 1))+2;
- for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) {
+ for (dmi = dev->mc.list; dmi != NULL; dmi = dmi->next) {
memcpy(cp, dmi,6);
cp += 6;
}
@@ -1277,7 +1277,7 @@ static void set_multicast_list(struct ne
if (lp->set_conf.pa_next != I596_NULL) {
return;
}
- if (dev->mc_count == 0 && !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
+ if (dev->mc.count == 0 && !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
lp->i596_config[8] &= ~0x01;
} else {
lp->i596_config[8] |= 0x01;
--- wireless-testing.orig/drivers/net/mac89x0.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/mac89x0.c 2009-06-13 12:29:40.000000000 +0200
@@ -571,7 +571,7 @@ static void set_multicast_list(struct ne
{
lp->rx_mode = RX_ALL_ACCEPT;
}
- else if((dev->flags&IFF_ALLMULTI)||dev->mc_list)
+ else if((dev->flags&IFF_ALLMULTI)||dev->mc.list)
{
/* The multicast-accept list is initialized to accept-all, and we
rely on higher-level filtering for now. */
--- wireless-testing.orig/drivers/net/macb.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/macb.c 2009-06-13 12:29:40.000000000 +0200
@@ -884,8 +884,8 @@ static void macb_sethashtable(struct net
mc_filter[0] = mc_filter[1] = 0;
- curr = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++, curr = curr->next) {
+ curr = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++, curr = curr->next) {
if (!curr) break; /* unexpected end of list */
bitnr = hash_get_index(curr->dmi_addr);
@@ -918,7 +918,7 @@ static void macb_set_rx_mode(struct net_
macb_writel(bp, HRB, -1);
macb_writel(bp, HRT, -1);
cfg |= MACB_BIT(NCFGR_MTI);
- } else if (dev->mc_count > 0) {
+ } else if (dev->mc.count > 0) {
/* Enable specific multicasts */
macb_sethashtable(dev);
cfg |= MACB_BIT(NCFGR_MTI);
--- wireless-testing.orig/drivers/net/mace.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/mace.c 2009-06-13 12:29:40.000000000 +0200
@@ -592,7 +592,7 @@ static void mace_set_multicast(struct ne
mp->maccc |= PROM;
} else {
unsigned char multicast_filter[8];
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
if (dev->flags & IFF_ALLMULTI) {
for (i = 0; i < 8; i++)
@@ -600,7 +600,7 @@ static void mace_set_multicast(struct ne
} else {
for (i = 0; i < 8; i++)
multicast_filter[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
crc = ether_crc_le(6, dmi->dmi_addr);
j = crc >> 26; /* bit number in multicast_filter */
multicast_filter[j >> 3] |= 1 << (j & 7);
--- wireless-testing.orig/drivers/net/macmace.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/macmace.c 2009-06-13 12:29:40.000000000 +0200
@@ -503,7 +503,7 @@ static void mace_set_multicast(struct ne
mb->maccc |= PROM;
} else {
unsigned char multicast_filter[8];
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
if (dev->flags & IFF_ALLMULTI) {
for (i = 0; i < 8; i++) {
@@ -512,7 +512,7 @@ static void mace_set_multicast(struct ne
} else {
for (i = 0; i < 8; i++)
multicast_filter[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
crc = ether_crc_le(6, dmi->dmi_addr);
j = crc >> 26; /* bit number in multicast_filter */
multicast_filter[j >> 3] |= 1 << (j & 7);
--- wireless-testing.orig/drivers/net/mlx4/en_netdev.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/mlx4/en_netdev.c 2009-06-13 12:29:40.000000000 +0200
@@ -179,7 +179,7 @@ static void mlx4_en_cache_mclist(struct
struct dev_mc_list *tmp;
struct dev_mc_list *plist = NULL;
- for (mclist = dev->mc_list; mclist; mclist = mclist->next) {
+ for (mclist = dev->mc.list; mclist; mclist = mclist->next) {
tmp = kmalloc(sizeof(struct dev_mc_list), GFP_ATOMIC);
if (!tmp) {
mlx4_err(mdev, "failed to allocate multicast list\n");
--- wireless-testing.orig/drivers/net/mv643xx_eth.c 2009-05-30 01:38:26.000000000 +0200
+++ wireless-testing/drivers/net/mv643xx_eth.c 2009-06-13 12:29:40.000000000 +0200
@@ -1730,7 +1730,7 @@ static u32 uc_addr_filter_mask(struct ne
return 0;
nibbles = 1 << (dev->dev_addr[5] & 0x0f);
- for (uc_ptr = dev->uc_list; uc_ptr != NULL; uc_ptr = uc_ptr->next) {
+ for (uc_ptr = dev->uc.list; uc_ptr != NULL; uc_ptr = uc_ptr->next) {
if (memcmp(dev->dev_addr, uc_ptr->da_addr, 5))
return 0;
if ((dev->dev_addr[5] ^ uc_ptr->da_addr[5]) & 0xf0)
@@ -1830,7 +1830,7 @@ oom:
memset(mc_spec, 0, 0x100);
memset(mc_other, 0, 0x100);
- for (addr = dev->mc_list; addr != NULL; addr = addr->next) {
+ for (addr = dev->mc.list; addr != NULL; addr = addr->next) {
u8 *a = addr->da_addr;
u32 *table;
int entry;
--- wireless-testing.orig/drivers/net/myri10ge/myri10ge.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/myri10ge/myri10ge.c 2009-06-13 12:29:40.000000000 +0200
@@ -3024,7 +3024,7 @@ static void myri10ge_set_multicast_list(
}
/* Walk the multicast list, and add each address */
- for (mc_list = dev->mc_list; mc_list != NULL; mc_list = mc_list->next) {
+ for (mc_list = dev->mc.list; mc_list != NULL; mc_list = mc_list->next) {
memcpy(data, &mc_list->dmi_addr, 6);
cmd.data0 = ntohl(data[0]);
cmd.data1 = ntohl(data[1]);
--- wireless-testing.orig/drivers/net/natsemi.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/natsemi.c 2009-06-13 12:29:40.000000000 +0200
@@ -2488,7 +2488,7 @@ static void __set_rx_mode(struct net_dev
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
rx_mode = RxFilterEnable | AcceptBroadcast
| AcceptAllMulticast | AcceptAllPhys | AcceptMyPhys;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
rx_mode = RxFilterEnable | AcceptBroadcast
| AcceptAllMulticast | AcceptMyPhys;
@@ -2496,7 +2496,7 @@ static void __set_rx_mode(struct net_dev
struct dev_mc_list *mclist;
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int b = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 23) & 0x1ff;
mc_filter[b/8] |= (1 << (b & 0x07));
--- wireless-testing.orig/drivers/net/netxen/netxen_nic_hw.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/netxen/netxen_nic_hw.c 2009-06-13 12:29:41.000000000 +0200
@@ -417,7 +417,7 @@ void netxen_p2_nic_set_multi(struct net_
return;
}
- if (netdev->mc_count == 0) {
+ if (netdev->mc.count == 0) {
adapter->set_promisc(adapter,
NETXEN_NIU_NON_PROMISC_MODE);
netxen_nic_disable_mcast_filter(adapter);
@@ -426,17 +426,17 @@ void netxen_p2_nic_set_multi(struct net_
adapter->set_promisc(adapter, NETXEN_NIU_ALLMULTI_MODE);
if (netdev->flags & IFF_ALLMULTI ||
- netdev->mc_count > adapter->max_mc_count) {
+ netdev->mc.count > adapter->max_mc_count) {
netxen_nic_disable_mcast_filter(adapter);
return;
}
netxen_nic_enable_mcast_filter(adapter);
- for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next, index++)
+ for (mc_ptr = netdev->mc.list; mc_ptr; mc_ptr = mc_ptr->next, index++)
netxen_nic_set_mcast_addr(adapter, index, mc_ptr->dmi_addr);
- if (index != netdev->mc_count)
+ if (index != netdev->mc.count)
printk(KERN_WARNING "%s: %s multicast address count mismatch\n",
netxen_nic_driver_name, netdev->name);
@@ -579,13 +579,13 @@ void netxen_p3_nic_set_multi(struct net_
}
if ((netdev->flags & IFF_ALLMULTI) ||
- (netdev->mc_count > adapter->max_mc_count)) {
+ (netdev->mc.count > adapter->max_mc_count)) {
mode = VPORT_MISS_MODE_ACCEPT_MULTI;
goto send_fw_cmd;
}
- if (netdev->mc_count > 0) {
- for (mc_ptr = netdev->mc_list; mc_ptr;
+ if (netdev->mc.count > 0) {
+ for (mc_ptr = netdev->mc.list; mc_ptr;
mc_ptr = mc_ptr->next) {
nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr,
&add_list, &del_list);
--- wireless-testing.orig/drivers/net/ni5010.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/ni5010.c 2009-06-13 12:29:41.000000000 +0200
@@ -651,7 +651,7 @@ static void ni5010_set_multicast_list(st
PRINTK2((KERN_DEBUG "%s: entering set_multicast_list\n", dev->name));
- if (dev->flags&IFF_PROMISC || dev->flags&IFF_ALLMULTI || dev->mc_list) {
+ if (dev->flags&IFF_PROMISC || dev->flags&IFF_ALLMULTI || dev->mc.list) {
outb(RMD_PROMISC, EDLC_RMODE); /* Enable promiscuous mode */
PRINTK((KERN_DEBUG "%s: Entering promiscuous mode\n", dev->name));
} else {
--- wireless-testing.orig/drivers/net/ni52.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/ni52.c 2009-06-13 12:29:41.000000000 +0200
@@ -596,8 +596,8 @@ static int init586(struct net_device *de
struct iasetup_cmd_struct __iomem *ias_cmd;
struct tdr_cmd_struct __iomem *tdr_cmd;
struct mcsetup_cmd_struct __iomem *mc_cmd;
- struct dev_mc_list *dmi = dev->mc_list;
- int num_addrs = dev->mc_count;
+ struct dev_mc_list *dmi = dev->mc.list;
+ int num_addrs = dev->mc.count;
ptr = p->scb + 1;
--- wireless-testing.orig/drivers/net/ni65.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/ni65.c 2009-06-13 12:29:41.000000000 +0200
@@ -848,7 +848,7 @@ static int ni65_lance_reinit(struct net_
if(dev->flags & IFF_PROMISC)
ni65_init_lance(p,dev->dev_addr,0x00,M_PROM);
- else if(dev->mc_count || dev->flags & IFF_ALLMULTI)
+ else if(dev->mc.count || dev->flags & IFF_ALLMULTI)
ni65_init_lance(p,dev->dev_addr,0xff,0x0);
else
ni65_init_lance(p,dev->dev_addr,0x00,0x00);
--- wireless-testing.orig/drivers/net/niu.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/niu.c 2009-06-13 12:29:41.000000000 +0200
@@ -6339,10 +6339,10 @@ static void niu_set_rx_mode(struct net_d
np->flags &= ~(NIU_FLAGS_MCAST | NIU_FLAGS_PROMISC);
if (dev->flags & IFF_PROMISC)
np->flags |= NIU_FLAGS_PROMISC;
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 0))
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 0))
np->flags |= NIU_FLAGS_MCAST;
- alt_cnt = dev->uc_count;
+ alt_cnt = dev->uc.count;
if (alt_cnt > niu_num_alt_addr(np)) {
alt_cnt = 0;
np->flags |= NIU_FLAGS_PROMISC;
@@ -6351,7 +6351,7 @@ static void niu_set_rx_mode(struct net_d
if (alt_cnt) {
int index = 0;
- for (addr = dev->uc_list; addr; addr = addr->next) {
+ for (addr = dev->uc.list; addr; addr = addr->next) {
err = niu_set_alt_mac(np, index,
addr->da_addr);
if (err)
@@ -6383,8 +6383,8 @@ static void niu_set_rx_mode(struct net_d
if (dev->flags & IFF_ALLMULTI) {
for (i = 0; i < 16; i++)
hash[i] = 0xffff;
- } else if (dev->mc_count > 0) {
- for (addr = dev->mc_list; addr; addr = addr->next) {
+ } else if (dev->mc.count > 0) {
+ for (addr = dev->mc.list; addr; addr = addr->next) {
u32 crc = ether_crc_le(ETH_ALEN, addr->da_addr);
crc >>= 24;
--- wireless-testing.orig/drivers/net/ns83820.c 2009-04-09 10:00:16.000000000 +0200
+++ wireless-testing/drivers/net/ns83820.c 2009-06-13 12:29:41.000000000 +0200
@@ -1719,7 +1719,7 @@ static void ns83820_set_multicast(struct
else
and_mask &= ~(RFCR_AAU | RFCR_AAM);
- if (ndev->flags & IFF_ALLMULTI || ndev->mc_count)
+ if (ndev->flags & IFF_ALLMULTI || ndev->mc.count)
or_mask |= RFCR_AAM;
else
and_mask &= ~RFCR_AAM;
--- wireless-testing.orig/drivers/net/pci-skeleton.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/pci-skeleton.c 2009-06-13 12:29:41.000000000 +0200
@@ -1820,7 +1820,7 @@ static void netdrv_set_rx_mode (struct n
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
@@ -1829,7 +1829,7 @@ static void netdrv_set_rx_mode (struct n
struct dev_mc_list *mclist;
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/pcmcia/3c574_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/3c574_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1152,7 +1152,7 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC)
outw(SetRxFilter | RxStation | RxMulticast | RxBroadcast | RxProm,
ioaddr + EL3_CMD);
- else if (dev->mc_count || (dev->flags & IFF_ALLMULTI))
+ else if (dev->mc.count || (dev->flags & IFF_ALLMULTI))
outw(SetRxFilter|RxStation|RxMulticast|RxBroadcast, ioaddr + EL3_CMD);
else
outw(SetRxFilter | RxStation | RxBroadcast, ioaddr + EL3_CMD);
--- wireless-testing.orig/drivers/net/pcmcia/3c589_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/3c589_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -915,7 +915,7 @@ static void set_multicast_list(struct ne
if (!pcmcia_dev_present(link)) return;
if (dev->flags & IFF_PROMISC)
opts |= RxMulticast | RxProm;
- else if (dev->mc_count || (dev->flags & IFF_ALLMULTI))
+ else if (dev->mc.count || (dev->flags & IFF_ALLMULTI))
opts |= RxMulticast;
outw(opts, ioaddr + EL3_CMD);
}
--- wireless-testing.orig/drivers/net/pcmcia/axnet_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/axnet_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1647,7 +1647,7 @@ static inline void make_mc_bits(u8 *bits
struct dev_mc_list *dmi;
u32 crc;
- for (dmi=dev->mc_list; dmi; dmi=dmi->next) {
+ for (dmi=dev->mc.list; dmi; dmi=dmi->next) {
crc = ether_crc(ETH_ALEN, dmi->dmi_addr);
/*
@@ -1674,7 +1674,7 @@ static void do_set_multicast_list(struct
if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI))) {
memset(ei_local->mcfilter, 0, 8);
- if (dev->mc_list)
+ if (dev->mc.list)
make_mc_bits(ei_local->mcfilter, dev);
} else {
/* set to accept-all */
@@ -1690,7 +1690,7 @@ static void do_set_multicast_list(struct
if(dev->flags&IFF_PROMISC)
outb_p(E8390_RXCONFIG | 0x58, e8390_base + EN0_RXCR);
- else if(dev->flags&IFF_ALLMULTI || dev->mc_list)
+ else if(dev->flags&IFF_ALLMULTI || dev->mc.list)
outb_p(E8390_RXCONFIG | 0x48, e8390_base + EN0_RXCR);
else
outb_p(E8390_RXCONFIG | 0x40, e8390_base + EN0_RXCR);
--- wireless-testing.orig/drivers/net/pcmcia/fmvj18x_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/fmvj18x_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1217,19 +1217,19 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC) {
memset(mc_filter, 0xff, sizeof(mc_filter));
outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */
- } else if (dev->mc_count > MC_FILTERBREAK
+ } else if (dev->mc.count > MC_FILTERBREAK
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
outb(2, ioaddr + RX_MODE); /* Use normal mode. */
- } else if (dev->mc_count == 0) {
+ } else if (dev->mc.count == 0) {
memset(mc_filter, 0x00, sizeof(mc_filter));
outb(1, ioaddr + RX_MODE); /* Ignore almost all multicasts. */
} else {
struct dev_mc_list *mclist;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit =
ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/pcmcia/nmclan_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/nmclan_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1509,13 +1509,13 @@ static void set_multicast_list(struct ne
mace_private *lp = netdev_priv(dev);
int adr[ETHER_ADDR_LEN] = {0}; /* Ethernet address */
int i;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
#ifdef PCMCIA_DEBUG
if (pc_debug > 1) {
static int old;
- if (dev->mc_count != old) {
- old = dev->mc_count;
+ if (dev->mc.count != old) {
+ old = dev->mc.count;
DEBUG(0, "%s: setting Rx mode to %d addresses.\n",
dev->name, old);
}
@@ -1523,13 +1523,13 @@ static void set_multicast_list(struct ne
#endif
/* Set multicast_num_addrs. */
- lp->multicast_num_addrs = dev->mc_count;
+ lp->multicast_num_addrs = dev->mc.count;
/* Set multicast_ladrf. */
if (num_addrs > 0) {
/* Calculate multicast logical address filter */
memset(lp->multicast_ladrf, 0, MACE_LADRF_LEN);
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
memcpy(adr, dmi->dmi_addr, ETHER_ADDR_LEN);
dmi = dmi->next;
BuildLAF(lp->multicast_ladrf, adr);
@@ -1570,15 +1570,15 @@ static void set_multicast_list(struct ne
#ifdef PCMCIA_DEBUG
if (pc_debug > 1) {
static int old;
- if (dev->mc_count != old) {
- old = dev->mc_count;
+ if (dev->mc.count != old) {
+ old = dev->mc.count;
DEBUG(0, "%s: setting Rx mode to %d addresses.\n",
dev->name, old);
}
}
#endif
- lp->multicast_num_addrs = dev->mc_count;
+ lp->multicast_num_addrs = dev->mc.count;
restore_multicast_list(dev);
} /* set_multicast_list */
--- wireless-testing.orig/drivers/net/pcmcia/smc91c92_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/smc91c92_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1748,8 +1748,8 @@ static void set_rx_mode(struct net_devic
} else if (dev->flags & IFF_ALLMULTI)
rx_cfg_setting = RxStripCRC | RxEnable | RxAllMulti;
else {
- if (dev->mc_count) {
- fill_multicast_tbl(dev->mc_count, dev->mc_list,
+ if (dev->mc.count) {
+ fill_multicast_tbl(dev->mc.count, dev->mc.list,
(u_char *)multicast_table);
}
rx_cfg_setting = RxStripCRC | RxEnable;
--- wireless-testing.orig/drivers/net/pcmcia/xirc2ps_cs.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcmcia/xirc2ps_cs.c 2009-06-13 12:29:41.000000000 +0200
@@ -1427,7 +1427,7 @@ set_addresses(struct net_device *dev)
{
unsigned int ioaddr = dev->base_addr;
local_info_t *lp = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
unsigned char *addr;
int i,j,k,n;
@@ -1437,7 +1437,7 @@ set_addresses(struct net_device *dev)
if (++n > 9)
break;
i = 0;
- if (n > 1 && n <= dev->mc_count && dmi) {
+ if (n > 1 && n <= dev->mc.count && dmi) {
dmi = dmi->next;
}
}
@@ -1447,7 +1447,7 @@ set_addresses(struct net_device *dev)
SelectPage(k);
}
- if (n && n <= dev->mc_count && dmi)
+ if (n && n <= dev->mc.count && dmi)
addr = dmi->dmi_addr;
else
addr = dev->dev_addr;
@@ -1477,9 +1477,9 @@ set_multicast_list(struct net_device *de
if (dev->flags & IFF_PROMISC) { /* snoop */
PutByte(XIRCREG42_SWC1, value | 0x06); /* set MPE and PME */
- } else if (dev->mc_count > 9 || (dev->flags & IFF_ALLMULTI)) {
+ } else if (dev->mc.count > 9 || (dev->flags & IFF_ALLMULTI)) {
PutByte(XIRCREG42_SWC1, value | 0x02); /* set MPE */
- } else if (dev->mc_count) {
+ } else if (dev->mc.count) {
/* the chip can filter 9 addresses perfectly */
PutByte(XIRCREG42_SWC1, value | 0x01);
SelectPage(0x40);
--- wireless-testing.orig/drivers/net/pcnet32.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/pcnet32.c 2009-06-13 12:29:41.000000000 +0200
@@ -2676,7 +2676,7 @@ static void pcnet32_load_multicast(struc
struct pcnet32_private *lp = netdev_priv(dev);
volatile struct pcnet32_init_block *ib = lp->init_block;
volatile __le16 *mcast_table = (__le16 *)ib->filter;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
unsigned long ioaddr = dev->base_addr;
char *addrs;
int i;
@@ -2697,7 +2697,7 @@ static void pcnet32_load_multicast(struc
ib->filter[1] = 0;
/* Add addresses */
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/ps3_gelic_net.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/ps3_gelic_net.c 2009-06-13 12:29:41.000000000 +0200
@@ -549,7 +549,7 @@ void gelic_net_set_multi(struct net_devi
status);
if ((netdev->flags & IFF_ALLMULTI) ||
- (netdev->mc_count > GELIC_NET_MC_COUNT_MAX)) {
+ (netdev->mc.count > GELIC_NET_MC_COUNT_MAX)) {
status = lv1_net_add_multicast_address(bus_id(card),
dev_id(card),
0, 1);
@@ -561,7 +561,7 @@ void gelic_net_set_multi(struct net_devi
}
/* set multicast addresses */
- for (mc = netdev->mc_list; mc; mc = mc->next) {
+ for (mc = netdev->mc.list; mc; mc = mc->next) {
addr = 0;
p = mc->dmi_addr;
for (i = 0; i < ETH_ALEN; i++) {
--- wireless-testing.orig/drivers/net/qlge/qlge_main.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/qlge/qlge_main.c 2009-06-13 12:29:41.000000000 +0200
@@ -3529,7 +3529,7 @@ static void qlge_set_multicast_list(stru
* transition is taking place.
*/
if ((ndev->flags & IFF_ALLMULTI) ||
- (ndev->mc_count > MAX_MULTICAST_ENTRIES)) {
+ (ndev->mc.count > MAX_MULTICAST_ENTRIES)) {
if (!test_bit(QL_ALLMULTI, &qdev->flags)) {
if (ql_set_routing_reg
(qdev, RT_IDX_ALLMULTI_SLOT, RT_IDX_MCAST, 1)) {
@@ -3551,11 +3551,11 @@ static void qlge_set_multicast_list(stru
}
}
- if (ndev->mc_count) {
+ if (ndev->mc.count) {
status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK);
if (status)
goto exit;
- for (i = 0, mc_ptr = ndev->mc_list; mc_ptr;
+ for (i = 0, mc_ptr = ndev->mc.list; mc_ptr;
i++, mc_ptr = mc_ptr->next)
if (ql_set_mac_addr_reg(qdev, (u8 *) mc_ptr->dmi_addr,
MAC_ADDR_TYPE_MULTI_MAC, i)) {
--- wireless-testing.orig/drivers/net/r6040.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/r6040.c 2009-06-13 12:29:41.000000000 +0200
@@ -931,7 +931,7 @@ static void r6040_multicast_list(struct
u16 *adrp;
u16 reg;
unsigned long flags;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
int i;
/* MAC Address */
@@ -951,7 +951,7 @@ static void r6040_multicast_list(struct
}
/* Too many multicast addresses
* accept all traffic */
- else if ((dev->mc_count > MCAST_MAX)
+ else if ((dev->mc.count > MCAST_MAX)
|| (dev->flags & IFF_ALLMULTI))
reg |= 0x0020;
@@ -959,14 +959,14 @@ static void r6040_multicast_list(struct
spin_unlock_irqrestore(&lp->lock, flags);
/* Build the hash table */
- if (dev->mc_count > MCAST_MAX) {
+ if (dev->mc.count > MCAST_MAX) {
u16 hash_table[4];
u32 crc;
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
char *addrs = dmi->dmi_addr;
dmi = dmi->next;
@@ -988,14 +988,14 @@ static void r6040_multicast_list(struct
iowrite16(hash_table[3], ioaddr + MAR3);
}
/* Multicast Address 1~4 case */
- for (i = 0, dmi; (i < dev->mc_count) && (i < MCAST_MAX); i++) {
+ for (i = 0, dmi; (i < dev->mc.count) && (i < MCAST_MAX); i++) {
adrp = (u16 *)dmi->dmi_addr;
iowrite16(adrp[0], ioaddr + MID_1L + 8*i);
iowrite16(adrp[1], ioaddr + MID_1M + 8*i);
iowrite16(adrp[2], ioaddr + MID_1H + 8*i);
dmi = dmi->next;
}
- for (i = dev->mc_count; i < MCAST_MAX; i++) {
+ for (i = dev->mc.count; i < MCAST_MAX; i++) {
iowrite16(0xffff, ioaddr + MID_0L + 8*i);
iowrite16(0xffff, ioaddr + MID_0M + 8*i);
iowrite16(0xffff, ioaddr + MID_0H + 8*i);
--- wireless-testing.orig/drivers/net/r8169.c 2009-06-11 11:04:46.000000000 +0200
+++ wireless-testing/drivers/net/r8169.c 2009-06-13 12:29:41.000000000 +0200
@@ -3742,7 +3742,7 @@ static void rtl_set_rx_mode(struct net_d
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
@@ -3753,7 +3753,7 @@ static void rtl_set_rx_mode(struct net_d
rx_mode = AcceptBroadcast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
--- wireless-testing.orig/drivers/net/s2io.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/s2io.c 2009-06-13 12:29:41.000000000 +0200
@@ -5038,8 +5038,8 @@ static void s2io_set_multicast(struct ne
}
/* Update individual M_CAST address list */
- if ((!sp->m_cast_flg) && dev->mc_count) {
- if (dev->mc_count >
+ if ((!sp->m_cast_flg) && dev->mc.count) {
+ if (dev->mc.count >
(config->max_mc_addr - config->max_mac_addr)) {
DBG_PRINT(ERR_DBG, "%s: No more Rx filters ",
dev->name);
@@ -5049,7 +5049,7 @@ static void s2io_set_multicast(struct ne
}
prev_cnt = sp->mc_addr_count;
- sp->mc_addr_count = dev->mc_count;
+ sp->mc_addr_count = dev->mc.count;
/* Clear out the previous list of Mc in the H/W. */
for (i = 0; i < prev_cnt; i++) {
@@ -5075,7 +5075,7 @@ static void s2io_set_multicast(struct ne
}
/* Create the new Rx filter list and update the same in H/W. */
- for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; i < dev->mc.count;
i++, mclist = mclist->next) {
memcpy(sp->usr_addrs[i].addr, mclist->dmi_addr,
ETH_ALEN);
--- wireless-testing.orig/drivers/net/sb1250-mac.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/sb1250-mac.c 2009-06-13 12:29:41.000000000 +0200
@@ -2162,7 +2162,7 @@ static void sbmac_setmulti(struct sbmac_
* XXX if the table overflows */
idx = 1; /* skip station address */
- mclist = dev->mc_list;
+ mclist = dev->mc.list;
while (mclist && (idx < MAC_ADDR_COUNT)) {
reg = sbmac_addr2reg(mclist->dmi_addr);
port = sc->sbm_base + R_MAC_ADDR_BASE+(idx * sizeof(uint64_t));
--- wireless-testing.orig/drivers/net/sc92031.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/sc92031.c 2009-06-13 12:29:41.000000000 +0200
@@ -429,13 +429,13 @@ static void _sc92031_set_mar(struct net_
u32 mar0 = 0, mar1 = 0;
if ((dev->flags & IFF_PROMISC)
- || dev->mc_count > multicast_filter_limit
+ || dev->mc.count > multicast_filter_limit
|| (dev->flags & IFF_ALLMULTI))
mar0 = mar1 = 0xffffffff;
else if (dev->flags & IFF_MULTICAST) {
struct dev_mc_list *mc_list;
- for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) {
+ for (mc_list = dev->mc.list; mc_list; mc_list = mc_list->next) {
u32 crc;
unsigned bit = 0;
--- wireless-testing.orig/drivers/net/sfc/efx.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/sfc/efx.c 2009-06-13 12:29:41.000000000 +0200
@@ -1526,7 +1526,7 @@ static int efx_set_mac_address(struct ne
static void efx_set_multicast_list(struct net_device *net_dev)
{
struct efx_nic *efx = netdev_priv(net_dev);
- struct dev_mc_list *mc_list = net_dev->mc_list;
+ struct dev_mc_list *mc_list = net_dev->mc.list;
union efx_multicast_hash *mc_hash = &efx->multicast_hash;
bool promiscuous = !!(net_dev->flags & IFF_PROMISC);
bool changed = (efx->promiscuous != promiscuous);
@@ -1541,7 +1541,7 @@ static void efx_set_multicast_list(struc
memset(mc_hash, 0xff, sizeof(*mc_hash));
} else {
memset(mc_hash, 0x00, sizeof(*mc_hash));
- for (i = 0; i < net_dev->mc_count; i++) {
+ for (i = 0; i < net_dev->mc.count; i++) {
crc = ether_crc_le(ETH_ALEN, mc_list->dmi_addr);
bit = crc & (EFX_MCAST_HASH_ENTRIES - 1);
set_bit_le(bit, mc_hash->byte);
--- wireless-testing.orig/drivers/net/sgiseeq.c 2009-01-13 15:05:06.000000000 +0100
+++ wireless-testing/drivers/net/sgiseeq.c 2009-06-13 12:29:41.000000000 +0200
@@ -661,7 +661,7 @@ static void sgiseeq_set_multicast(struct
if(dev->flags & IFF_PROMISC)
sp->mode = SEEQ_RCMD_RANY;
- else if ((dev->flags & IFF_ALLMULTI) || dev->mc_count)
+ else if ((dev->flags & IFF_ALLMULTI) || dev->mc.count)
sp->mode = SEEQ_RCMD_RBMCAST;
else
sp->mode = SEEQ_RCMD_RBCAST;
--- wireless-testing.orig/drivers/net/sis190.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/sis190.c 2009-06-13 12:29:41.000000000 +0200
@@ -841,7 +841,7 @@ static void sis190_set_rx_mode(struct ne
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |
AcceptAllPhys;
mc_filter[1] = mc_filter[0] = 0xffffffff;
- } else if ((dev->mc_count > multicast_filter_limit) ||
+ } else if ((dev->mc.count > multicast_filter_limit) ||
(dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
@@ -852,7 +852,7 @@ static void sis190_set_rx_mode(struct ne
rx_mode = AcceptBroadcast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr =
ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3f;
--- wireless-testing.orig/drivers/net/sis900.c 2009-04-09 10:00:17.000000000 +0200
+++ wireless-testing/drivers/net/sis900.c 2009-06-13 12:29:41.000000000 +0200
@@ -2288,7 +2288,7 @@ static void set_rx_mode(struct net_devic
rx_mode = RFPromiscuous;
for (i = 0; i < table_entries; i++)
mc_filter[i] = 0xffff;
- } else if ((net_dev->mc_count > multicast_filter_limit) ||
+ } else if ((net_dev->mc.count > multicast_filter_limit) ||
(net_dev->flags & IFF_ALLMULTI)) {
/* too many multicast addresses or accept all multicast packet */
rx_mode = RFAAB | RFAAM;
@@ -2300,8 +2300,8 @@ static void set_rx_mode(struct net_devic
* packets */
struct dev_mc_list *mclist;
rx_mode = RFAAB;
- for (i = 0, mclist = net_dev->mc_list;
- mclist && i < net_dev->mc_count;
+ for (i = 0, mclist = net_dev->mc.list;
+ mclist && i < net_dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit_nr =
sis900_mcast_bitnr(mclist->dmi_addr, sis_priv->chipset_rev);
--- wireless-testing.orig/drivers/net/skfp/skfddi.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/skfp/skfddi.c 2009-06-13 12:29:41.000000000 +0200
@@ -882,14 +882,14 @@ static void skfp_ctl_set_multicast_list_
if (dev->flags & IFF_ALLMULTI) {
mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI);
PRINTK(KERN_INFO "ENABLE ALL MC ADDRESSES\n");
- } else if (dev->mc_count > 0) {
- if (dev->mc_count <= FPMAX_MULTICAST) {
+ } else if (dev->mc.count > 0) {
+ if (dev->mc.count <= FPMAX_MULTICAST) {
/* use exact filtering */
// point to first multicast addr
- dmi = dev->mc_list;
+ dmi = dev->mc.list;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
mac_add_multicast(smc,
(struct fddi_addr *)dmi->dmi_addr,
1);
--- wireless-testing.orig/drivers/net/skge.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/skge.c 2009-06-13 12:29:42.000000000 +0200
@@ -2934,8 +2934,8 @@ static void genesis_set_multicast(struct
struct skge_port *skge = netdev_priv(dev);
struct skge_hw *hw = skge->hw;
int port = skge->port;
- int i, count = dev->mc_count;
- struct dev_mc_list *list = dev->mc_list;
+ int i, count = dev->mc.count;
+ struct dev_mc_list *list = dev->mc.list;
u32 mode;
u8 filter[8];
@@ -2974,7 +2974,7 @@ static void yukon_set_multicast(struct n
struct skge_port *skge = netdev_priv(dev);
struct skge_hw *hw = skge->hw;
int port = skge->port;
- struct dev_mc_list *list = dev->mc_list;
+ struct dev_mc_list *list = dev->mc.list;
int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND
|| skge->flow_status == FLOW_STAT_SYMMETRIC);
u16 reg;
@@ -2989,7 +2989,7 @@ static void yukon_set_multicast(struct n
reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
else if (dev->flags & IFF_ALLMULTI) /* all multicast */
memset(filter, 0xff, sizeof(filter));
- else if (dev->mc_count == 0 && !rx_pause)/* no multicast */
+ else if (dev->mc.count == 0 && !rx_pause)/* no multicast */
reg &= ~GM_RXCR_MCF_ENA;
else {
int i;
@@ -2998,7 +2998,7 @@ static void yukon_set_multicast(struct n
if (rx_pause)
yukon_add_filter(filter, pause_mc_addr);
- for (i = 0; list && i < dev->mc_count; i++, list = list->next)
+ for (i = 0; list && i < dev->mc.count; i++, list = list->next)
yukon_add_filter(filter, list->dmi_addr);
}
--- wireless-testing.orig/drivers/net/sky2.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sky2.c 2009-06-13 12:29:43.000000000 +0200
@@ -3380,7 +3380,7 @@ static void sky2_set_multicast(struct ne
struct sky2_port *sky2 = netdev_priv(dev);
struct sky2_hw *hw = sky2->hw;
unsigned port = sky2->port;
- struct dev_mc_list *list = dev->mc_list;
+ struct dev_mc_list *list = dev->mc.list;
u16 reg;
u8 filter[8];
int rx_pause;
@@ -3396,7 +3396,7 @@ static void sky2_set_multicast(struct ne
reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
else if (dev->flags & IFF_ALLMULTI)
memset(filter, 0xff, sizeof(filter));
- else if (dev->mc_count == 0 && !rx_pause)
+ else if (dev->mc.count == 0 && !rx_pause)
reg &= ~GM_RXCR_MCF_ENA;
else {
int i;
@@ -3405,7 +3405,7 @@ static void sky2_set_multicast(struct ne
if (rx_pause)
sky2_add_filter(filter, pause_mc_addr);
- for (i = 0; list && i < dev->mc_count; i++, list = list->next)
+ for (i = 0; list && i < dev->mc.count; i++, list = list->next)
sky2_add_filter(filter, list->dmi_addr);
}
--- wireless-testing.orig/drivers/net/smc911x.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/smc911x.c 2009-06-13 12:29:43.000000000 +0200
@@ -1323,7 +1323,7 @@ static void smc911x_set_multicast_list(s
* I don't need to zero the multicast table, because the flag is
* checked before the table is
*/
- else if (dev->flags & IFF_ALLMULTI || dev->mc_count > 16) {
+ else if (dev->flags & IFF_ALLMULTI || dev->mc.count > 16) {
DBG(SMC_DEBUG_MISC, "%s: RCR_ALMUL\n", dev->name);
mcr |= MAC_CR_MCPAS_;
}
@@ -1340,7 +1340,7 @@ static void smc911x_set_multicast_list(s
* the number of the 32 bit register, while the low 5 bits are the bit
* within that register.
*/
- else if (dev->mc_count) {
+ else if (dev->mc.count) {
int i;
struct dev_mc_list *cur_addr;
@@ -1350,8 +1350,8 @@ static void smc911x_set_multicast_list(s
/* start with a table of all zeros: reject all */
memset(multicast_table, 0, sizeof(multicast_table));
- cur_addr = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++, cur_addr = cur_addr->next) {
+ cur_addr = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++, cur_addr = cur_addr->next) {
u32 position;
/* do we have a pointer here? */
--- wireless-testing.orig/drivers/net/smc9194.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/smc9194.c 2009-06-13 12:29:43.000000000 +0200
@@ -1540,7 +1540,7 @@ static void smc_set_multicast_list(struc
/* We just get all multicast packets even if we only want them
. from one source. This will be changed at some future
. point. */
- else if (dev->mc_count ) {
+ else if (dev->mc.count) {
/* support hardware multicasting */
/* be sure I get rid of flags I might have set */
@@ -1548,7 +1548,7 @@ static void smc_set_multicast_list(struc
ioaddr + RCR );
/* NOTE: this has to set the bank, so make sure it is the
last thing called. The bank is set to zero at the top */
- smc_setmulticast( ioaddr, dev->mc_count, dev->mc_list );
+ smc_setmulticast( ioaddr, dev->mc.count, dev->mc.list);
}
else {
outw( inw( ioaddr + RCR ) & ~(RCR_PROMISC | RCR_ALMUL),
--- wireless-testing.orig/drivers/net/smc91x.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/smc91x.c 2009-06-13 12:29:43.000000000 +0200
@@ -1391,7 +1391,7 @@ static void smc_set_multicast_list(struc
* I don't need to zero the multicast table, because the flag is
* checked before the table is
*/
- else if (dev->flags & IFF_ALLMULTI || dev->mc_count > 16) {
+ else if (dev->flags & IFF_ALLMULTI || dev->mc.count > 16) {
DBG(2, "%s: RCR_ALMUL\n", dev->name);
lp->rcr_cur_mode |= RCR_ALMUL;
}
@@ -1408,7 +1408,7 @@ static void smc_set_multicast_list(struc
* the number of the 8 bit register, while the low 3 bits are the bit
* within that register.
*/
- else if (dev->mc_count) {
+ else if (dev->mc.count) {
int i;
struct dev_mc_list *cur_addr;
@@ -1418,8 +1418,8 @@ static void smc_set_multicast_list(struc
/* start with a table of all zeros: reject all */
memset(multicast_table, 0, sizeof(multicast_table));
- cur_addr = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++, cur_addr = cur_addr->next) {
+ cur_addr = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++, cur_addr = cur_addr->next) {
int position;
/* do we have a pointer here? */
--- wireless-testing.orig/drivers/net/smsc911x.c 2009-04-16 02:16:35.000000000 +0200
+++ wireless-testing/drivers/net/smsc911x.c 2009-06-13 12:29:43.000000000 +0200
@@ -1370,12 +1370,12 @@ static void smsc911x_set_multicast_list(
pdata->clear_bits_mask = (MAC_CR_PRMS_ | MAC_CR_HPFILT_);
pdata->hashhi = 0;
pdata->hashlo = 0;
- } else if (dev->mc_count > 0) {
+ } else if (dev->mc.count > 0) {
/* Enabling specific multicast addresses */
unsigned int hash_high = 0;
unsigned int hash_low = 0;
unsigned int count = 0;
- struct dev_mc_list *mc_list = dev->mc_list;
+ struct dev_mc_list *mc_list = dev->mc.list;
pdata->set_bits_mask = MAC_CR_HPFILT_;
pdata->clear_bits_mask = (MAC_CR_PRMS_ | MAC_CR_MCPAS_);
@@ -1395,8 +1395,8 @@ static void smsc911x_set_multicast_list(
}
mc_list = mc_list->next;
}
- if (count != (unsigned int)dev->mc_count)
- SMSC_WARNING(DRV, "mc_count != dev->mc_count");
+ if (count != (unsigned int)dev->mc.count)
+ SMSC_WARNING(DRV, "mc_count != dev->mc.count");
pdata->hashhi = hash_high;
pdata->hashlo = hash_low;
--- wireless-testing.orig/drivers/net/smsc9420.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/smsc9420.c 2009-06-13 12:29:43.000000000 +0200
@@ -1048,8 +1048,8 @@ static void smsc9420_set_multicast_list(
mac_cr &= (~MAC_CR_PRMS_);
mac_cr |= MAC_CR_MCPAS_;
mac_cr &= (~MAC_CR_HPFILT_);
- } else if (dev->mc_count > 0) {
- struct dev_mc_list *mc_list = dev->mc_list;
+ } else if (dev->mc.count > 0) {
+ struct dev_mc_list *mc_list = dev->mc.list;
u32 hash_lo = 0, hash_hi = 0;
smsc_dbg(HW, "Multicast filter enabled");
--- wireless-testing.orig/drivers/net/sonic.c 2009-01-13 15:05:07.000000000 +0100
+++ wireless-testing/drivers/net/sonic.c 2009-06-13 12:29:43.000000000 +0200
@@ -531,7 +531,7 @@ static void sonic_multicast_list(struct
{
struct sonic_local *lp = netdev_priv(dev);
unsigned int rcr;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
unsigned char *addr;
int i;
@@ -541,13 +541,13 @@ static void sonic_multicast_list(struct
if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */
rcr |= SONIC_RCR_PRO;
} else {
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 15)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 15)) {
rcr |= SONIC_RCR_AMC;
} else {
if (sonic_debug > 2)
- printk("sonic_multicast_list: mc_count %d\n", dev->mc_count);
+ printk("sonic_multicast_list: mc_count %d\n", dev->mc.count);
sonic_set_cam_enable(dev, 1); /* always enable our own address */
- for (i = 1; i <= dev->mc_count; i++) {
+ for (i = 1; i <= dev->mc.count; i++) {
addr = dmi->dmi_addr;
dmi = dmi->next;
sonic_cda_put(dev, i, SONIC_CD_CAP0, addr[1] << 8 | addr[0]);
--- wireless-testing.orig/drivers/net/spider_net.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/spider_net.c 2009-06-13 12:29:44.000000000 +0200
@@ -645,7 +645,7 @@ spider_net_set_multi(struct net_device *
hash = spider_net_get_multicast_hash(netdev, netdev->broadcast); */
set_bit(0xfd, bitmask);
- for (mc = netdev->mc_list; mc; mc = mc->next) {
+ for (mc = netdev->mc.list; mc; mc = mc->next) {
hash = spider_net_get_multicast_hash(netdev, mc->dmi_addr);
set_bit(hash, bitmask);
}
--- wireless-testing.orig/drivers/net/starfire.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/starfire.c 2009-06-13 12:29:44.000000000 +0200
@@ -1793,15 +1793,15 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
rx_mode |= AcceptAll;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
rx_mode |= AcceptBroadcast|AcceptAllMulticast|PerfectFilter;
- } else if (dev->mc_count <= 14) {
+ } else if (dev->mc.count <= 14) {
/* Use the 16 element perfect filter, skip first two entries. */
void __iomem *filter_addr = ioaddr + PerfFilterTable + 2 * 16;
__be16 *eaddrs;
- for (i = 2, mclist = dev->mc_list; mclist && i < dev->mc_count + 2;
+ for (i = 2, mclist = dev->mc.list; mclist && i < dev->mc.count + 2;
i++, mclist = mclist->next) {
eaddrs = (__be16 *)mclist->dmi_addr;
writew(be16_to_cpu(eaddrs[2]), filter_addr); filter_addr += 4;
@@ -1822,7 +1822,7 @@ static void set_rx_mode(struct net_devic
__le16 mc_filter[32] __attribute__ ((aligned(sizeof(long)))); /* Multicast hash filter */
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
/* The chip uses the upper 9 CRC bits
as index into the hash table */
--- wireless-testing.orig/drivers/net/sun3_82586.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/sun3_82586.c 2009-06-13 12:29:44.000000000 +0200
@@ -413,8 +413,8 @@ static int init586(struct net_device *de
volatile struct iasetup_cmd_struct *ias_cmd;
volatile struct tdr_cmd_struct *tdr_cmd;
volatile struct mcsetup_cmd_struct *mc_cmd;
- struct dev_mc_list *dmi=dev->mc_list;
- int num_addrs=dev->mc_count;
+ struct dev_mc_list *dmi=dev->mc.list;
+ int num_addrs=dev->mc.count;
ptr = (void *) ((char *)p->scb + sizeof(struct scb_struct));
--- wireless-testing.orig/drivers/net/sun3lance.c 2009-02-17 22:07:37.000000000 +0100
+++ wireless-testing/drivers/net/sun3lance.c 2009-06-13 12:29:44.000000000 +0200
@@ -912,7 +912,7 @@ static void set_multicast_list( struct n
REGA( CSR15 ) = 0x8000; /* Set promiscuous mode */
} else {
short multicast_table[4];
- int num_addrs = dev->mc_count;
+ int num_addrs = dev->mc.count;
int i;
/* We don't use the multicast table, but rely on upper-layer
* filtering. */
--- wireless-testing.orig/drivers/net/sunbmac.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sunbmac.c 2009-06-13 12:29:44.000000000 +0200
@@ -999,7 +999,7 @@ static void bigmac_set_multicast(struct
{
struct bigmac *bp = netdev_priv(dev);
void __iomem *bregs = bp->bregs;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
u32 tmp, crc;
@@ -1013,7 +1013,7 @@ static void bigmac_set_multicast(struct
while ((sbus_readl(bregs + BMAC_RXCFG) & BIGMAC_RXCFG_ENABLE) != 0)
udelay(20);
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
sbus_writel(0xffff, bregs + BMAC_HTABLE0);
sbus_writel(0xffff, bregs + BMAC_HTABLE1);
sbus_writel(0xffff, bregs + BMAC_HTABLE2);
@@ -1028,7 +1028,7 @@ static void bigmac_set_multicast(struct
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/sundance.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sundance.c 2009-06-13 12:29:44.000000000 +0200
@@ -1514,18 +1514,18 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
memset(mc_filter, 0xff, sizeof(mc_filter));
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptAll | AcceptMyPhys;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
- } else if (dev->mc_count) {
+ } else if (dev->mc.count) {
struct dev_mc_list *mclist;
int bit;
int index;
int crc;
memset (mc_filter, 0, sizeof (mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
crc = ether_crc_le (ETH_ALEN, mclist->dmi_addr);
for (index=0, bit=0; bit < 6; bit++, crc <<= 1)
--- wireless-testing.orig/drivers/net/sungem.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sungem.c 2009-06-13 12:29:45.000000000 +0200
@@ -1837,7 +1837,7 @@ static u32 gem_setup_multicast(struct ge
int i;
if ((gp->dev->flags & IFF_ALLMULTI) ||
- (gp->dev->mc_count > 256)) {
+ (gp->dev->mc.count > 256)) {
for (i=0; i<16; i++)
writel(0xffff, gp->regs + MAC_HASH0 + (i << 2));
rxcfg |= MAC_RXCFG_HFE;
@@ -1846,13 +1846,13 @@ static u32 gem_setup_multicast(struct ge
} else {
u16 hash_table[16];
u32 crc;
- struct dev_mc_list *dmi = gp->dev->mc_list;
+ struct dev_mc_list *dmi = gp->dev->mc.list;
int i;
for (i = 0; i < 16; i++)
hash_table[i] = 0;
- for (i = 0; i < gp->dev->mc_count; i++) {
+ for (i = 0; i < gp->dev->mc.count; i++) {
char *addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/sunhme.c 2009-04-01 23:46:22.000000000 +0200
+++ wireless-testing/drivers/net/sunhme.c 2009-06-13 12:29:45.000000000 +0200
@@ -1510,14 +1510,14 @@ static int happy_meal_init(struct happy_
HMD(("htable, "));
if ((hp->dev->flags & IFF_ALLMULTI) ||
- (hp->dev->mc_count > 64)) {
+ (hp->dev->mc.count > 64)) {
hme_write32(hp, bregs + BMAC_HTABLE0, 0xffff);
hme_write32(hp, bregs + BMAC_HTABLE1, 0xffff);
hme_write32(hp, bregs + BMAC_HTABLE2, 0xffff);
hme_write32(hp, bregs + BMAC_HTABLE3, 0xffff);
} else if ((hp->dev->flags & IFF_PROMISC) == 0) {
u16 hash_table[4];
- struct dev_mc_list *dmi = hp->dev->mc_list;
+ struct dev_mc_list *dmi = hp->dev->mc.list;
char *addrs;
int i;
u32 crc;
@@ -1525,7 +1525,7 @@ static int happy_meal_init(struct happy_
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < hp->dev->mc_count; i++) {
+ for (i = 0; i < hp->dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
@@ -2356,14 +2356,14 @@ static void happy_meal_set_multicast(str
{
struct happy_meal *hp = netdev_priv(dev);
void __iomem *bregs = hp->bigmacregs;
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
u32 crc;
spin_lock_irq(&hp->happy_lock);
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
hme_write32(hp, bregs + BMAC_HTABLE0, 0xffff);
hme_write32(hp, bregs + BMAC_HTABLE1, 0xffff);
hme_write32(hp, bregs + BMAC_HTABLE2, 0xffff);
@@ -2377,7 +2377,7 @@ static void happy_meal_set_multicast(str
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/sunlance.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sunlance.c 2009-06-13 12:29:45.000000000 +0200
@@ -1170,7 +1170,7 @@ static int lance_start_xmit(struct sk_bu
static void lance_load_multicast(struct net_device *dev)
{
struct lance_private *lp = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
char *addrs;
int i;
u32 crc;
@@ -1196,7 +1196,7 @@ static void lance_load_multicast(struct
return;
/* Add addresses */
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/sunqe.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sunqe.c 2009-06-13 12:29:45.000000000 +0200
@@ -627,7 +627,7 @@ static int qe_start_xmit(struct sk_buff
static void qe_set_multicast(struct net_device *dev)
{
struct sunqe *qep = netdev_priv(dev);
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
u8 new_mconfig = qep->mconfig;
char *addrs;
int i;
@@ -636,7 +636,7 @@ static void qe_set_multicast(struct net_
/* Lock out others. */
netif_stop_queue(dev);
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 64)) {
sbus_writeb(MREGS_IACONFIG_ACHNGE | MREGS_IACONFIG_LARESET,
qep->mregs + MREGS_IACONFIG);
while ((sbus_readb(qep->mregs + MREGS_IACONFIG) & MREGS_IACONFIG_ACHNGE) != 0)
@@ -653,7 +653,7 @@ static void qe_set_multicast(struct net_
for (i = 0; i < 4; i++)
hash_table[i] = 0;
- for (i = 0; i < dev->mc_count; i++) {
+ for (i = 0; i < dev->mc.count; i++) {
addrs = dmi->dmi_addr;
dmi = dmi->next;
--- wireless-testing.orig/drivers/net/sunvnet.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/sunvnet.c 2009-06-13 12:29:45.000000000 +0200
@@ -765,7 +765,7 @@ static void __update_mc_list(struct vnet
{
struct dev_addr_list *p;
- for (p = dev->mc_list; p; p = p->next) {
+ for (p = dev->mc.list; p; p = p->next) {
struct vnet_mcast_entry *m;
m = __vnet_mc_find(vp, p->dmi_addr);
--- wireless-testing.orig/drivers/net/tc35815.c 2009-04-23 00:20:41.000000000 +0200
+++ wireless-testing/drivers/net/tc35815.c 2009-06-13 12:29:45.000000000 +0200
@@ -2217,18 +2217,18 @@ tc35815_set_multicast_list(struct net_de
/* Enable promiscuous mode */
tc_writel(CAM_CompEn | CAM_BroadAcc | CAM_GroupAcc | CAM_StationAcc, &tr->CAM_Ctl);
} else if ((dev->flags & IFF_ALLMULTI) ||
- dev->mc_count > CAM_ENTRY_MAX - 3) {
+ dev->mc.count > CAM_ENTRY_MAX - 3) {
/* CAM 0, 1, 20 are reserved. */
/* Disable promiscuous mode, use normal mode. */
tc_writel(CAM_CompEn | CAM_BroadAcc | CAM_GroupAcc, &tr->CAM_Ctl);
- } else if (dev->mc_count) {
- struct dev_mc_list *cur_addr = dev->mc_list;
+ } else if (dev->mc.count) {
+ struct dev_mc_list *cur_addr = dev->mc.list;
int i;
int ena_bits = CAM_Ena_Bit(CAM_ENTRY_SOURCE);
tc_writel(0, &tr->CAM_Ctl);
/* Walk the address list, and load the filter */
- for (i = 0; i < dev->mc_count; i++, cur_addr = cur_addr->next) {
+ for (i = 0; i < dev->mc.count; i++, cur_addr = cur_addr->next) {
if (!cur_addr)
break;
/* entry 0,1 is reserved. */
--- wireless-testing.orig/drivers/net/tehuti.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tehuti.c 2009-06-13 12:29:45.000000000 +0200
@@ -808,7 +808,7 @@ static void bdx_setmulti(struct net_devi
/* set IMF to accept all multicast frmaes */
for (i = 0; i < MAC_MCST_HASH_NUM; i++)
WRITE_REG(priv, regRX_MCST_HASH0 + i * 4, ~0);
- } else if (ndev->mc_count) {
+ } else if (ndev->mc.count) {
u8 hash;
struct dev_mc_list *mclist;
u32 reg, val;
@@ -826,7 +826,7 @@ static void bdx_setmulti(struct net_devi
/* TBD: sort addreses and write them in ascending order
* into RX_MAC_MCST regs. we skip this phase now and accept ALL
* multicast frames throu IMF */
- mclist = ndev->mc_list;
+ mclist = ndev->mc.list;
/* accept the rest of addresses throu IMF */
for (; mclist; mclist = mclist->next) {
@@ -840,7 +840,7 @@ static void bdx_setmulti(struct net_devi
}
} else {
- DBG("only own mac %d\n", ndev->mc_count);
+ DBG("only own mac %d\n", ndev->mc.count);
rxf_val |= GMAC_RX_FILTER_AB;
}
WRITE_REG(priv, regGMAC_RXF_A, rxf_val);
--- wireless-testing.orig/drivers/net/tg3.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/tg3.c 2009-06-13 12:29:45.000000000 +0200
@@ -8397,7 +8397,7 @@ static void __tg3_set_rx_mode(struct net
} else if (dev->flags & IFF_ALLMULTI) {
/* Accept all multicast. */
tg3_set_multi (tp, 1);
- } else if (dev->mc_count < 1) {
+ } else if (dev->mc.count < 1) {
/* Reject all multicast. */
tg3_set_multi (tp, 0);
} else {
@@ -8409,7 +8409,7 @@ static void __tg3_set_rx_mode(struct net
u32 bit;
u32 crc;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
crc = calc_crc (mclist->dmi_addr, ETH_ALEN);
--- wireless-testing.orig/drivers/net/tlan.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tlan.c 2009-06-13 12:29:45.000000000 +0200
@@ -1316,7 +1316,7 @@ static struct net_device_stats *TLan_Get
static void TLan_SetMulticastList( struct net_device *dev )
{
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
u32 hash1 = 0;
u32 hash2 = 0;
int i;
@@ -1337,7 +1337,7 @@ static void TLan_SetMulticastList( struc
TLan_DioWrite32( dev->base_addr, TLAN_HASH_1, 0xFFFFFFFF );
TLan_DioWrite32( dev->base_addr, TLAN_HASH_2, 0xFFFFFFFF );
} else {
- for ( i = 0; i < dev->mc_count; i++ ) {
+ for ( i = 0; i < dev->mc.count; i++ ) {
if ( i < 3 ) {
TLan_SetMac( dev, i + 1,
(char *) &dmi->dmi_addr );
--- wireless-testing.orig/drivers/net/tokenring/3c359.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tokenring/3c359.c 2009-06-13 12:29:46.000000000 +0200
@@ -1409,7 +1409,7 @@ static void xl_set_rx_mode(struct net_de
dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ;
- for (i=0,dmi=dev->mc_list;i < dev->mc_count; i++,dmi = dmi->next) {
+ for (i=0,dmi=dev->mc.list;i < dev->mc.count; i++,dmi = dmi->next) {
dev_mc_address[0] |= dmi->dmi_addr[2] ;
dev_mc_address[1] |= dmi->dmi_addr[3] ;
dev_mc_address[2] |= dmi->dmi_addr[4] ;
--- wireless-testing.orig/drivers/net/tokenring/ibmtr.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tokenring/ibmtr.c 2009-06-13 12:29:46.000000000 +0200
@@ -993,8 +993,8 @@ static void tok_set_multicast_list(struc
/*BMS ifconfig tr down or hot unplug a PCMCIA card ??hownowbrowncow*/
if (/*BMSHELPdev->start == 0 ||*/ ti->open_status != OPEN) return;
address[0] = address[1] = address[2] = address[3] = 0;
- mclist = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++) {
+ mclist = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++) {
address[0] |= mclist->dmi_addr[2];
address[1] |= mclist->dmi_addr[3];
address[2] |= mclist->dmi_addr[4];
--- wireless-testing.orig/drivers/net/tokenring/lanstreamer.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tokenring/lanstreamer.c 2009-06-13 12:30:14.000000000 +0200
@@ -1301,7 +1301,7 @@ static void streamer_set_rx_mode(struct
writel(streamer_priv->srb,streamer_mmio+LAPA);
dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ;
- for (i=0,dmi=dev->mc_list;i < dev->mc_count; i++,dmi = dmi->next)
+ for (i=0,dmi=dev->mc.list;i < dev->mc.count; i++,dmi = dmi->next)
{
dev_mc_address[0] |= dmi->dmi_addr[2] ;
dev_mc_address[1] |= dmi->dmi_addr[3] ;
--- wireless-testing.orig/drivers/net/tokenring/olympic.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tokenring/olympic.c 2009-06-13 12:30:10.000000000 +0200
@@ -1176,7 +1176,7 @@ static void olympic_set_rx_mode(struct n
dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ;
- for (i=0,dmi=dev->mc_list;i < dev->mc_count; i++,dmi = dmi->next) {
+ for (i=0,dmi=dev->mc.list;i < dev->mc.count; i++,dmi = dmi->next) {
dev_mc_address[0] |= dmi->dmi_addr[2] ;
dev_mc_address[1] |= dmi->dmi_addr[3] ;
dev_mc_address[2] |= dmi->dmi_addr[4] ;
--- wireless-testing.orig/drivers/net/tokenring/tms380tr.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tokenring/tms380tr.c 2009-06-13 12:29:46.000000000 +0200
@@ -1210,8 +1210,8 @@ static void tms380tr_set_multicast_list(
else
{
int i;
- struct dev_mc_list *mclist = dev->mc_list;
- for (i=0; i< dev->mc_count; i++)
+ struct dev_mc_list *mclist = dev->mc.list;
+ for (i=0; i< dev->mc.count; i++)
{
((char *)(&tp->ocpl.FunctAddr))[0] |=
mclist->dmi_addr[2];
--- wireless-testing.orig/drivers/net/tsi108_eth.c 2009-04-23 00:20:42.000000000 +0200
+++ wireless-testing/drivers/net/tsi108_eth.c 2009-06-13 12:29:46.000000000 +0200
@@ -1184,9 +1184,9 @@ static void tsi108_set_rx_mode(struct ne
rxcfg &= ~(TSI108_EC_RXCFG_UFE | TSI108_EC_RXCFG_MFE);
- if (dev->flags & IFF_ALLMULTI || dev->mc_count) {
+ if (dev->flags & IFF_ALLMULTI || dev->mc.count) {
int i;
- struct dev_mc_list *mc = dev->mc_list;
+ struct dev_mc_list *mc = dev->mc.list;
rxcfg |= TSI108_EC_RXCFG_MFE | TSI108_EC_RXCFG_MC_HASH;
memset(data->mc_hash, 0, sizeof(data->mc_hash));
--- wireless-testing.orig/drivers/net/tulip/de2104x.c 2009-02-17 22:07:37.000000000 +0100
+++ wireless-testing/drivers/net/tulip/de2104x.c 2009-06-13 12:29:46.000000000 +0200
@@ -662,7 +662,7 @@ static void build_setup_frame_hash(u16 *
memset(hash_table, 0, sizeof(hash_table));
set_bit_le(255, hash_table); /* Broadcast entry */
/* This should work on big-endian machines as well. */
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff;
@@ -691,7 +691,7 @@ static void build_setup_frame_perfect(u1
/* We have <= 14 addresses so we can use the wonderful
16 address perfect filtering of the Tulip. */
- for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; i < dev->mc.count;
i++, mclist = mclist->next) {
eaddrs = (u16 *)mclist->dmi_addr;
*setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
@@ -726,7 +726,7 @@ static void __de_set_rx_mode (struct net
goto out;
}
- if ((dev->mc_count > 1000) || (dev->flags & IFF_ALLMULTI)) {
+ if ((dev->mc.count > 1000) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter well -- accept all multicasts. */
macmode |= AcceptAllMulticast;
goto out;
@@ -734,7 +734,7 @@ static void __de_set_rx_mode (struct net
/* Note that only the low-address shortword of setup_frame is valid!
The values are doubled for big-endian architectures. */
- if (dev->mc_count > 14) /* Must use a multicast hash table. */
+ if (dev->mc.count > 14) /* Must use a multicast hash table. */
build_setup_frame_hash (de->setup_frame, dev);
else
build_setup_frame_perfect (de->setup_frame, dev);
--- wireless-testing.orig/drivers/net/tulip/de4x5.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tulip/de4x5.c 2009-06-13 12:29:46.000000000 +0200
@@ -1952,7 +1952,7 @@ static void
SetMulticastFilter(struct net_device *dev)
{
struct de4x5_private *lp = netdev_priv(dev);
- struct dev_mc_list *dmi=dev->mc_list;
+ struct dev_mc_list *dmi=dev->mc.list;
u_long iobase = dev->base_addr;
int i, j, bit, byte;
u16 hashcode;
@@ -1964,10 +1964,10 @@ SetMulticastFilter(struct net_device *de
omr &= ~(OMR_PR | OMR_PM);
pa = build_setup_frame(dev, ALL); /* Build the basic frame */
- if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 14)) {
+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc.count > 14)) {
omr |= OMR_PM; /* Pass all multicasts */
} else if (lp->setup_f == HASH_PERF) { /* Hash Filtering */
- for (i=0;i<dev->mc_count;i++) { /* for each address in the list */
+ for (i=0;i<dev->mc.count;i++) { /* for each address in the list */
addrs=dmi->dmi_addr;
dmi=dmi->next;
if ((*addrs & 0x01) == 1) { /* multicast address? */
@@ -1985,7 +1985,7 @@ SetMulticastFilter(struct net_device *de
}
}
} else { /* Perfect filtering */
- for (j=0; j<dev->mc_count; j++) {
+ for (j=0; j<dev->mc.count; j++) {
addrs=dmi->dmi_addr;
dmi=dmi->next;
for (i=0; i<ETH_ALEN; i++) {
--- wireless-testing.orig/drivers/net/tulip/dmfe.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tulip/dmfe.c 2009-06-13 12:29:46.000000000 +0200
@@ -639,9 +639,9 @@ static void dmfe_init_dm910x(struct DEVI
/* Send setup frame */
if (db->chip_id == PCI_DM9132_ID)
- dm9132_id_table(dev, dev->mc_count); /* DM9132 */
+ dm9132_id_table(dev, dev->mc.count); /* DM9132 */
else
- send_filter_frame(dev, dev->mc_count); /* DM9102/DM9102A */
+ send_filter_frame(dev, dev->mc.count); /* DM9102/DM9102A */
/* Init CR7, interrupt active bit */
db->cr7_data = CR7_DEFAULT;
@@ -1046,19 +1046,19 @@ static void dmfe_set_filter_mode(struct
return;
}
- if (dev->flags & IFF_ALLMULTI || dev->mc_count > DMFE_MAX_MULTICAST) {
- DMFE_DBUG(0, "Pass all multicast address", dev->mc_count);
+ if (dev->flags & IFF_ALLMULTI || dev->mc.count > DMFE_MAX_MULTICAST) {
+ DMFE_DBUG(0, "Pass all multicast address", dev->mc.count);
db->cr6_data &= ~(CR6_PM | CR6_PBF);
db->cr6_data |= CR6_PAM;
spin_unlock_irqrestore(&db->lock, flags);
return;
}
- DMFE_DBUG(0, "Set multicast address", dev->mc_count);
+ DMFE_DBUG(0, "Set multicast address", dev->mc.count);
if (db->chip_id == PCI_DM9132_ID)
- dm9132_id_table(dev, dev->mc_count); /* DM9132 */
+ dm9132_id_table(dev, dev->mc.count); /* DM9132 */
else
- send_filter_frame(dev, dev->mc_count); /* DM9102/DM9102A */
+ send_filter_frame(dev, dev->mc.count); /* DM9102/DM9102A */
spin_unlock_irqrestore(&db->lock, flags);
}
@@ -1461,7 +1461,7 @@ static void dm9132_id_table(struct DEVIC
hash_table[3] = 0x8000;
/* the multicast address in Hash Table : 64 bits */
- for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
+ for (mcptr = dev->mc.list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
hash_val = cal_CRC( (char *) mcptr->dmi_addr, 6, 0) & 0x3f;
hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16);
}
@@ -1503,7 +1503,7 @@ static void send_filter_frame(struct DEV
*suptr++ = 0xffff;
/* fit the multicast address */
- for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
+ for (mcptr = dev->mc.list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
addrptr = (u16 *) mcptr->dmi_addr;
*suptr++ = addrptr[0];
*suptr++ = addrptr[1];
--- wireless-testing.orig/drivers/net/tulip/tulip_core.c 2009-04-02 03:29:39.000000000 +0200
+++ wireless-testing/drivers/net/tulip/tulip_core.c 2009-06-13 12:29:46.000000000 +0200
@@ -980,7 +980,7 @@ static void build_setup_frame_hash(u16 *
memset(hash_table, 0, sizeof(hash_table));
set_bit_le(255, hash_table); /* Broadcast entry */
/* This should work on big-endian machines as well. */
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff;
@@ -1009,7 +1009,7 @@ static void build_setup_frame_perfect(u1
/* We have <= 14 addresses so we can use the wonderful
16 address perfect filtering of the Tulip. */
- for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; i < dev->mc.count;
i++, mclist = mclist->next) {
eaddrs = (u16 *)mclist->dmi_addr;
*setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
@@ -1040,7 +1040,7 @@ static void set_rx_mode(struct net_devic
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
tp->csr6 |= AcceptAllMulticast | AcceptAllPhys;
csr6 |= AcceptAllMulticast | AcceptAllPhys;
- } else if ((dev->mc_count > 1000) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.count > 1000) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter well -- accept all multicasts. */
tp->csr6 |= AcceptAllMulticast;
csr6 |= AcceptAllMulticast;
@@ -1049,13 +1049,13 @@ static void set_rx_mode(struct net_devic
/* Should verify correctness on big-endian/__powerpc__ */
struct dev_mc_list *mclist;
int i;
- if (dev->mc_count > 64) { /* Arbitrary non-effective limit. */
+ if (dev->mc.count > 64) { /* Arbitrary non-effective limit. */
tp->csr6 |= AcceptAllMulticast;
csr6 |= AcceptAllMulticast;
} else {
u32 mc_filter[2] = {0, 0}; /* Multicast hash filter */
int filterbit;
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
if (tp->flags & COMET_MAC_ADDR)
filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr);
@@ -1090,7 +1090,7 @@ static void set_rx_mode(struct net_devic
/* Note that only the low-address shortword of setup_frame is valid!
The values are doubled for big-endian architectures. */
- if (dev->mc_count > 14) { /* Must use a multicast hash table. */
+ if (dev->mc.count > 14) { /* Must use a multicast hash table. */
build_setup_frame_hash(tp->setup_frame, dev);
tx_flags = 0x08400000 | 192;
} else {
--- wireless-testing.orig/drivers/net/tulip/uli526x.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tulip/uli526x.c 2009-06-13 12:29:46.000000000 +0200
@@ -547,7 +547,7 @@ static void uli526x_init(struct net_devi
update_cr6(db->cr6_data, ioaddr);
/* Send setup frame */
- send_filter_frame(dev, dev->mc_count); /* M5261/M5263 */
+ send_filter_frame(dev, dev->mc.count); /* M5261/M5263 */
/* Init CR7, interrupt active bit */
db->cr7_data = CR7_DEFAULT;
@@ -895,16 +895,16 @@ static void uli526x_set_filter_mode(stru
return;
}
- if (dev->flags & IFF_ALLMULTI || dev->mc_count > ULI5261_MAX_MULTICAST) {
- ULI526X_DBUG(0, "Pass all multicast address", dev->mc_count);
+ if (dev->flags & IFF_ALLMULTI || dev->mc.count > ULI5261_MAX_MULTICAST) {
+ ULI526X_DBUG(0, "Pass all multicast address", dev->mc.count);
db->cr6_data &= ~(CR6_PM | CR6_PBF);
db->cr6_data |= CR6_PAM;
spin_unlock_irqrestore(&db->lock, flags);
return;
}
- ULI526X_DBUG(0, "Set multicast address", dev->mc_count);
- send_filter_frame(dev, dev->mc_count); /* M5261/M5263 */
+ ULI526X_DBUG(0, "Set multicast address", dev->mc.count);
+ send_filter_frame(dev, dev->mc.count); /* M5261/M5263 */
spin_unlock_irqrestore(&db->lock, flags);
}
@@ -1403,7 +1403,7 @@ static void send_filter_frame(struct net
*suptr++ = 0xffff << FLT_SHIFT;
/* fit the multicast address */
- for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
+ for (mcptr = dev->mc.list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) {
addrptr = (u16 *) mcptr->dmi_addr;
*suptr++ = addrptr[0] << FLT_SHIFT;
*suptr++ = addrptr[1] << FLT_SHIFT;
--- wireless-testing.orig/drivers/net/tulip/winbond-840.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/tulip/winbond-840.c 2009-06-13 12:29:46.000000000 +0200
@@ -1357,7 +1357,7 @@ static u32 __set_rx_mode(struct net_devi
memset(mc_filter, 0xff, sizeof(mc_filter));
rx_mode = RxAcceptBroadcast | AcceptMulticast | RxAcceptAllPhys
| AcceptMyPhys;
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
@@ -1366,7 +1366,7 @@ static u32 __set_rx_mode(struct net_devi
struct dev_mc_list *mclist;
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int filterbit = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26) ^ 0x3F;
filterbit &= 0x3f;
--- wireless-testing.orig/drivers/net/typhoon.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/typhoon.c 2009-06-13 12:29:46.000000000 +0200
@@ -923,16 +923,16 @@ typhoon_set_rx_mode(struct net_device *d
filter = TYPHOON_RX_FILTER_DIRECTED | TYPHOON_RX_FILTER_BROADCAST;
if(dev->flags & IFF_PROMISC) {
filter |= TYPHOON_RX_FILTER_PROMISCOUS;
- } else if((dev->mc_count > multicast_filter_limit) ||
+ } else if((dev->mc.count > multicast_filter_limit) ||
(dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
filter |= TYPHOON_RX_FILTER_ALL_MCAST;
- } else if(dev->mc_count) {
+ } else if(dev->mc.count) {
struct dev_mc_list *mclist;
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for(i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for(i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3f;
mc_filter[bit >> 5] |= 1 << (bit & 0x1f);
--- wireless-testing.orig/drivers/net/ucc_geth.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/ucc_geth.c 2009-06-13 12:29:46.000000000 +0200
@@ -1969,9 +1969,9 @@ static void ucc_geth_set_multi(struct ne
out_be32(&p_82xx_addr_filt->gaddr_h, 0x0);
out_be32(&p_82xx_addr_filt->gaddr_l, 0x0);
- dmi = dev->mc_list;
+ dmi = dev->mc.list;
- for (i = 0; i < dev->mc_count; i++, dmi = dmi->next) {
+ for (i = 0; i < dev->mc.count; i++, dmi = dmi->next) {
/* Only support group multicast for now.
*/
--- wireless-testing.orig/drivers/net/usb/asix.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/asix.c 2009-06-13 12:29:46.000000000 +0200
@@ -542,23 +542,23 @@ static void asix_set_multicast(struct ne
if (net->flags & IFF_PROMISC) {
rx_ctl |= AX_RX_CTL_PRO;
} else if (net->flags & IFF_ALLMULTI
- || net->mc_count > AX_MAX_MCAST) {
+ || net->mc.count > AX_MAX_MCAST) {
rx_ctl |= AX_RX_CTL_AMALL;
- } else if (net->mc_count == 0) {
+ } else if (net->mc.count == 0) {
/* just broadcast and directed */
} else {
/* We use the 20 byte dev->data
* for our 8 byte filter buffer
* to avoid allocating memory that
* is tricky to free later */
- struct dev_mc_list *mc_list = net->mc_list;
+ struct dev_mc_list *mc_list = net->mc.list;
u32 crc_bits;
int i;
memset(data->multi_filter, 0, AX_MCAST_FILTER_SIZE);
/* Build the multicast hash filter. */
- for (i = 0; i < net->mc_count; i++) {
+ for (i = 0; i < net->mc.count; i++) {
crc_bits =
ether_crc(ETH_ALEN,
mc_list->dmi_addr) >> 26;
@@ -754,23 +754,23 @@ static void ax88172_set_multicast(struct
if (net->flags & IFF_PROMISC) {
rx_ctl |= 0x01;
} else if (net->flags & IFF_ALLMULTI
- || net->mc_count > AX_MAX_MCAST) {
+ || net->mc.count > AX_MAX_MCAST) {
rx_ctl |= 0x02;
- } else if (net->mc_count == 0) {
+ } else if (net->mc.count == 0) {
/* just broadcast and directed */
} else {
/* We use the 20 byte dev->data
* for our 8 byte filter buffer
* to avoid allocating memory that
* is tricky to free later */
- struct dev_mc_list *mc_list = net->mc_list;
+ struct dev_mc_list *mc_list = net->mc.list;
u32 crc_bits;
int i;
memset(data->multi_filter, 0, AX_MCAST_FILTER_SIZE);
/* Build the multicast hash filter. */
- for (i = 0; i < net->mc_count; i++) {
+ for (i = 0; i < net->mc.count; i++) {
crc_bits =
ether_crc(ETH_ALEN,
mc_list->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/usb/catc.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/catc.c 2009-06-13 12:29:46.000000000 +0200
@@ -647,7 +647,7 @@ static void catc_set_multicast_list(stru
if (netdev->flags & IFF_ALLMULTI) {
memset(catc->multicast, 0xff, 64);
} else {
- for (i = 0, mc = netdev->mc_list; mc && i < netdev->mc_count; i++, mc = mc->next) {
+ for (i = 0, mc = netdev->mc.list; mc && i < netdev->mc.count; i++, mc = mc->next) {
u32 crc = ether_crc_le(6, mc->dmi_addr);
if (!catc->is_f5u011) {
catc->multicast[(crc >> 3) & 0x3f] |= 1 << (crc & 7);
--- wireless-testing.orig/drivers/net/usb/dm9601.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/dm9601.c 2009-06-13 12:29:46.000000000 +0200
@@ -381,13 +381,13 @@ static void dm9601_set_multicast(struct
if (net->flags & IFF_PROMISC) {
rx_ctl |= 0x02;
- } else if (net->flags & IFF_ALLMULTI || net->mc_count > DM_MAX_MCAST) {
+ } else if (net->flags & IFF_ALLMULTI || net->mc.count > DM_MAX_MCAST) {
rx_ctl |= 0x04;
- } else if (net->mc_count) {
- struct dev_mc_list *mc_list = net->mc_list;
+ } else if (net->mc.count) {
+ struct dev_mc_list *mc_list = net->mc.list;
int i;
- for (i = 0; i < net->mc_count; i++, mc_list = mc_list->next) {
+ for (i = 0; i < net->mc.count; i++, mc_list = mc_list->next) {
u32 crc = ether_crc(ETH_ALEN, mc_list->dmi_addr) >> 26;
hashes[crc >> 3] |= 1 << (crc & 0x7);
}
--- wireless-testing.orig/drivers/net/usb/kaweth.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/kaweth.c 2009-06-13 12:29:46.000000000 +0200
@@ -870,7 +870,7 @@ static void kaweth_set_rx_mode(struct ne
if (net->flags & IFF_PROMISC) {
packet_filter_bitmap |= KAWETH_PACKET_FILTER_PROMISCUOUS;
}
- else if ((net->mc_count) || (net->flags & IFF_ALLMULTI)) {
+ else if ((net->mc.count) || (net->flags & IFF_ALLMULTI)) {
packet_filter_bitmap |= KAWETH_PACKET_FILTER_ALL_MULTICAST;
}
--- wireless-testing.orig/drivers/net/usb/mcs7830.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/mcs7830.c 2009-06-13 12:29:46.000000000 +0200
@@ -392,23 +392,23 @@ static void mcs7830_set_multicast(struct
if (net->flags & IFF_PROMISC) {
data->config |= HIF_REG_CONFIG_PROMISCIOUS;
} else if (net->flags & IFF_ALLMULTI
- || net->mc_count > MCS7830_MAX_MCAST) {
+ || net->mc.count > MCS7830_MAX_MCAST) {
data->config |= HIF_REG_CONFIG_ALLMULTICAST;
- } else if (net->mc_count == 0) {
+ } else if (net->mc.count == 0) {
/* just broadcast and directed */
} else {
/* We use the 20 byte dev->data
* for our 8 byte filter buffer
* to avoid allocating memory that
* is tricky to free later */
- struct dev_mc_list *mc_list = net->mc_list;
+ struct dev_mc_list *mc_list = net->mc.list;
u32 crc_bits;
int i;
memset(data->multi_filter, 0, sizeof data->multi_filter);
/* Build the multicast hash filter. */
- for (i = 0; i < net->mc_count; i++) {
+ for (i = 0; i < net->mc.count; i++) {
crc_bits = ether_crc(ETH_ALEN, mc_list->dmi_addr) >> 26;
data->multi_filter[crc_bits >> 3] |= 1 << (crc_bits & 7);
mc_list = mc_list->next;
--- wireless-testing.orig/drivers/net/usb/pegasus.c 2009-04-30 23:07:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/pegasus.c 2009-06-13 12:29:46.000000000 +0200
@@ -1214,7 +1214,7 @@ static void pegasus_set_multicast(struct
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
if (netif_msg_link(pegasus))
pr_info("%s: Promiscuous mode enabled.\n", net->name);
- } else if (net->mc_count || (net->flags & IFF_ALLMULTI)) {
+ } else if (net->mc.count || (net->flags & IFF_ALLMULTI)) {
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
if (netif_msg_link(pegasus))
--- wireless-testing.orig/drivers/net/usb/rtl8150.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/usb/rtl8150.c 2009-06-13 12:29:46.000000000 +0200
@@ -711,7 +711,7 @@ static void rtl8150_set_multicast(struct
if (netdev->flags & IFF_PROMISC) {
dev->rx_creg |= cpu_to_le16(0x0001);
dev_info(&netdev->dev, "%s: promiscuous mode\n", netdev->name);
- } else if (netdev->mc_count ||
+ } else if (netdev->mc.count ||
(netdev->flags & IFF_ALLMULTI)) {
dev->rx_creg &= cpu_to_le16(0xfffe);
dev->rx_creg |= cpu_to_le16(0x0002);
--- wireless-testing.orig/drivers/net/usb/smsc95xx.c 2009-05-11 21:32:40.000000000 +0200
+++ wireless-testing/drivers/net/usb/smsc95xx.c 2009-06-13 12:29:46.000000000 +0200
@@ -389,8 +389,8 @@ static void smsc95xx_set_multicast(struc
devdbg(dev, "receive all multicast enabled");
pdata->mac_cr |= MAC_CR_MCPAS_;
pdata->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_HPFILT_);
- } else if (dev->net->mc_count > 0) {
- struct dev_mc_list *mc_list = dev->net->mc_list;
+ } else if (dev->net->mc.count > 0) {
+ struct dev_mc_list *mc_list = dev->net->mc.list;
int count = 0;
pdata->mac_cr |= MAC_CR_HPFILT_;
@@ -411,8 +411,8 @@ static void smsc95xx_set_multicast(struc
mc_list = mc_list->next;
}
- if (count != ((u32)dev->net->mc_count))
- devwarn(dev, "mc_count != dev->mc_count");
+ if (count != ((u32)dev->net->mc.count))
+ devwarn(dev, "mc_count != dev->mc.count");
if (netif_msg_drv(dev))
devdbg(dev, "HASHH=0x%08X, HASHL=0x%08X", hash_hi,
--- wireless-testing.orig/drivers/net/via-rhine.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/via-rhine.c 2009-06-13 12:29:46.000000000 +0200
@@ -1673,7 +1673,7 @@ static void rhine_set_rx_mode(struct net
rx_mode = 0x1C;
iowrite32(0xffffffff, ioaddr + MulticastFilter0);
iowrite32(0xffffffff, ioaddr + MulticastFilter1);
- } else if ((dev->mc_count > multicast_filter_limit)
+ } else if ((dev->mc.count > multicast_filter_limit)
|| (dev->flags & IFF_ALLMULTI)) {
/* Too many to match, or accept all multicasts. */
iowrite32(0xffffffff, ioaddr + MulticastFilter0);
@@ -1683,7 +1683,7 @@ static void rhine_set_rx_mode(struct net
struct dev_mc_list *mclist;
int i;
memset(mc_filter, 0, sizeof(mc_filter));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
--- wireless-testing.orig/drivers/net/via-velocity.c 2009-04-23 00:20:43.000000000 +0200
+++ wireless-testing/drivers/net/via-velocity.c 2009-06-13 12:29:46.000000000 +0200
@@ -2283,7 +2283,7 @@ static void velocity_set_multi(struct ne
writel(0xffffffff, ®s->MARCAM[0]);
writel(0xffffffff, ®s->MARCAM[4]);
rx_mode = (RCR_AM | RCR_AB | RCR_PROM);
- } else if ((dev->mc_count > vptr->multicast_limit)
+ } else if ((dev->mc.count > vptr->multicast_limit)
|| (dev->flags & IFF_ALLMULTI)) {
writel(0xffffffff, ®s->MARCAM[0]);
writel(0xffffffff, ®s->MARCAM[4]);
@@ -2292,7 +2292,7 @@ static void velocity_set_multi(struct ne
int offset = MCAM_SIZE - vptr->multicast_limit;
mac_get_cam_mask(regs, vptr->mCAMmask);
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count; i++, mclist = mclist->next) {
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count; i++, mclist = mclist->next) {
mac_set_cam(regs, i + offset, mclist->dmi_addr);
vptr->mCAMmask[(offset + i) / 8] |= 1 << ((offset + i) & 7);
}
--- wireless-testing.orig/drivers/net/virtio_net.c 2009-05-11 21:32:40.000000000 +0200
+++ wireless-testing/drivers/net/virtio_net.c 2009-06-13 12:29:46.000000000 +0200
@@ -711,7 +711,7 @@ static void virtnet_set_rx_mode(struct n
allmulti ? "en" : "dis");
/* MAC filter - use one buffer for both lists */
- mac_data = buf = kzalloc(((dev->uc_count + dev->mc_count) * ETH_ALEN) +
+ mac_data = buf = kzalloc(((dev->uc.count + dev->mc.count) * ETH_ALEN) +
(2 * sizeof(mac_data->entries)), GFP_ATOMIC);
if (!buf) {
dev_warn(&dev->dev, "No memory for MAC address buffer\n");
@@ -721,24 +721,24 @@ static void virtnet_set_rx_mode(struct n
sg_init_table(sg, 2);
/* Store the unicast list and count in the front of the buffer */
- mac_data->entries = dev->uc_count;
- addr = dev->uc_list;
- for (i = 0; i < dev->uc_count; i++, addr = addr->next)
+ mac_data->entries = dev->uc.count;
+ addr = dev->uc.list;
+ for (i = 0; i < dev->uc.count; i++, addr = addr->next)
memcpy(&mac_data->macs[i][0], addr->da_addr, ETH_ALEN);
sg_set_buf(&sg[0], mac_data,
- sizeof(mac_data->entries) + (dev->uc_count * ETH_ALEN));
+ sizeof(mac_data->entries) + (dev->uc.count * ETH_ALEN));
/* multicast list and count fill the end */
- mac_data = (void *)&mac_data->macs[dev->uc_count][0];
+ mac_data = (void *)&mac_data->macs[dev->uc.count][0];
- mac_data->entries = dev->mc_count;
- addr = dev->mc_list;
- for (i = 0; i < dev->mc_count; i++, addr = addr->next)
+ mac_data->entries = dev->mc.count;
+ addr = dev->mc.list;
+ for (i = 0; i < dev->mc.count; i++, addr = addr->next)
memcpy(&mac_data->macs[i][0], addr->da_addr, ETH_ALEN);
sg_set_buf(&sg[1], mac_data,
- sizeof(mac_data->entries) + (dev->mc_count * ETH_ALEN));
+ sizeof(mac_data->entries) + (dev->mc.count * ETH_ALEN));
if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MAC,
VIRTIO_NET_CTRL_MAC_TABLE_SET,
--- wireless-testing.orig/drivers/net/vxge/vxge-main.c 2009-04-09 10:00:18.000000000 +0200
+++ wireless-testing/drivers/net/vxge/vxge-main.c 2009-06-13 12:29:47.000000000 +0200
@@ -1167,11 +1167,11 @@ static void vxge_set_multicast(struct ne
memset(&mac_info, 0, sizeof(struct macInfo));
/* Update individual M_CAST address list */
- if ((!vdev->all_multi_flg) && dev->mc_count) {
+ if ((!vdev->all_multi_flg) && dev->mc.count) {
mcast_cnt = vdev->vpaths[0].mcast_addr_cnt;
list_head = &vdev->vpaths[0].mac_addr_list;
- if ((dev->mc_count +
+ if ((dev->mc.count +
(vdev->vpaths[0].mac_addr_cnt - mcast_cnt)) >
vdev->vpaths[0].max_mac_addr_cnt)
goto _set_all_mcast;
@@ -1206,7 +1206,7 @@ static void vxge_set_multicast(struct ne
}
/* Add new ones */
- for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; i < dev->mc.count;
i++, mclist = mclist->next) {
memcpy(mac_info.macaddr, mclist->dmi_addr, ETH_ALEN);
--- wireless-testing.orig/drivers/net/wireless/airo.c 2009-05-30 01:38:26.000000000 +0200
+++ wireless-testing/drivers/net/wireless/airo.c 2009-06-13 12:29:47.000000000 +0200
@@ -2303,7 +2303,7 @@ static void airo_set_multicast_list(stru
airo_set_promisc(ai);
}
- if ((dev->flags&IFF_ALLMULTI)||dev->mc_count>0) {
+ if ((dev->flags&IFF_ALLMULTI)||dev->mc.count>0) {
/* Turn on multicast. (Should be already setup...) */
}
}
--- wireless-testing.orig/drivers/net/wireless/arlan-main.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/arlan-main.c 2009-06-13 12:29:47.000000000 +0200
@@ -1455,10 +1455,10 @@ static void arlan_rx_interrupt(struct ne
#ifdef ARLAN_MULTICAST
if (!(dev->flags & IFF_ALLMULTI) &&
!(dev->flags & IFF_PROMISC) &&
- dev->mc_list)
+ dev->mc.list)
{
char hw_dst_addr[6];
- struct dev_mc_list *dmi = dev->mc_list;
+ struct dev_mc_list *dmi = dev->mc.list;
int i;
memcpy_fromio(hw_dst_addr, arlan->ultimateDestAddress, 6);
--- wireless-testing.orig/drivers/net/wireless/libertas/main.c 2009-06-03 08:41:49.000000000 +0200
+++ wireless-testing/drivers/net/wireless/libertas/main.c 2009-06-13 12:29:47.000000000 +0200
@@ -638,7 +638,7 @@ static int lbs_add_mcast_addrs(struct cm
return nr_addrs;
netif_addr_lock_bh(dev);
- for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) {
+ for (mc_list = dev->mc.list; mc_list; mc_list = mc_list->next) {
if (mac_in_list(cmd->maclist, nr_addrs, mc_list->dmi_addr)) {
lbs_deb_net("mcast address %s:%pM skipped\n", dev->name,
mc_list->dmi_addr);
--- wireless-testing.orig/drivers/net/wireless/netwave_cs.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/netwave_cs.c 2009-06-13 12:29:47.000000000 +0200
@@ -1358,15 +1358,15 @@ static void set_multicast_list(struct ne
#ifdef PCMCIA_DEBUG
if (pc_debug > 2) {
static int old;
- if (old != dev->mc_count) {
- old = dev->mc_count;
+ if (old != dev->mc.count) {
+ old = dev->mc.count;
DEBUG(0, "%s: setting Rx mode to %d addresses.\n",
- dev->name, dev->mc_count);
+ dev->name, dev->mc.count);
}
}
#endif
- if (dev->mc_count || (dev->flags & IFF_ALLMULTI)) {
+ if (dev->mc.count || (dev->flags & IFF_ALLMULTI)) {
/* Multicast Mode */
rcvMode = rxConfRxEna + rxConfAMP + rxConfBcast;
} else if (dev->flags & IFF_PROMISC) {
--- wireless-testing.orig/drivers/net/wireless/orinoco/main.c 2009-04-02 03:29:39.000000000 +0200
+++ wireless-testing/drivers/net/wireless/orinoco/main.c 2009-06-13 12:29:47.000000000 +0200
@@ -1854,15 +1854,15 @@ __orinoco_set_multicast_list(struct net_
/* The Hermes doesn't seem to have an allmulti mode, so we go
* into promiscuous mode and let the upper levels deal. */
if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > MAX_MULTICAST(priv))) {
+ (dev->mc.count > MAX_MULTICAST(priv))) {
promisc = 1;
mc_count = 0;
} else {
promisc = 0;
- mc_count = dev->mc_count;
+ mc_count = dev->mc.count;
}
- err = __orinoco_hw_set_multicast_list(priv, dev->mc_list, mc_count,
+ err = __orinoco_hw_set_multicast_list(priv, dev->mc.list, mc_count,
promisc);
}
--- wireless-testing.orig/drivers/net/wireless/ray_cs.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/ray_cs.c 2009-06-13 12:29:47.000000000 +0200
@@ -1906,7 +1906,7 @@ static void ray_update_multi_list(struct
local->num_multi = 0xff;
} else {
/* Copy the kernel's list of MC addresses to card */
- for (dmip = &dev->mc_list; (dmi = *dmip) != NULL;
+ for (dmip = &dev->mc.list; (dmi = *dmip) != NULL;
dmip = &dmi->next) {
memcpy_toio(p, dmi->dmi_addr, ETH_ALEN);
DEBUG(1,
@@ -1960,7 +1960,7 @@ static void set_multicast_list(struct ne
if (dev->flags & IFF_ALLMULTI)
ray_update_multi_list(dev, 1);
else {
- if (local->num_multi != dev->mc_count)
+ if (local->num_multi != dev->mc.count)
ray_update_multi_list(dev, 0);
}
} /* end set_multicast_list */
--- wireless-testing.orig/drivers/net/wireless/rndis_wlan.c 2009-06-07 21:32:33.000000000 +0200
+++ wireless-testing/drivers/net/wireless/rndis_wlan.c 2009-06-13 12:29:47.000000000 +0200
@@ -1173,10 +1173,10 @@ static void set_multicast_list(struct us
filter |= RNDIS_PACKET_TYPE_PROMISCUOUS |
RNDIS_PACKET_TYPE_ALL_LOCAL;
} else if (usbdev->net->flags & IFF_ALLMULTI ||
- usbdev->net->mc_count > priv->multicast_size) {
+ usbdev->net->mc.count > priv->multicast_size) {
filter |= RNDIS_PACKET_TYPE_ALL_MULTICAST;
- } else if (usbdev->net->mc_count > 0) {
- size = min(priv->multicast_size, usbdev->net->mc_count);
+ } else if (usbdev->net->mc.count > 0) {
+ size = min(priv->multicast_size, usbdev->net->mc.count);
buf = kmalloc(size * ETH_ALEN, GFP_KERNEL);
if (!buf) {
devwarn(usbdev,
@@ -1185,7 +1185,7 @@ static void set_multicast_list(struct us
return;
}
- mclist = usbdev->net->mc_list;
+ mclist = usbdev->net->mc.list;
for (i = 0; i < size && mclist; mclist = mclist->next) {
if (mclist->dmi_addrlen != ETH_ALEN)
continue;
--- wireless-testing.orig/drivers/net/wireless/wavelan.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/wavelan.c 2009-06-13 12:29:47.000000000 +0200
@@ -1367,7 +1367,7 @@ static void wavelan_set_multicast_list(s
#ifdef DEBUG_IOCTL_INFO
printk(KERN_DEBUG
"%s: wavelan_set_multicast_list(): setting Rx mode %02X to %d addresses.\n",
- dev->name, dev->flags, dev->mc_count);
+ dev->name, dev->flags, dev->mc.count);
#endif
/* Are we asking for promiscuous mode,
@@ -1375,7 +1375,7 @@ static void wavelan_set_multicast_list(s
* or too many multicast addresses for the hardware filter? */
if ((dev->flags & IFF_PROMISC) ||
(dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > I82586_MAX_MULTICAST_ADDRESSES)) {
+ (dev->mc.count > I82586_MAX_MULTICAST_ADDRESSES)) {
/*
* Enable promiscuous mode: receive all packets.
*/
@@ -1387,17 +1387,17 @@ static void wavelan_set_multicast_list(s
}
} else
/* Are there multicast addresses to send? */
- if (dev->mc_list != (struct dev_mc_list *) NULL) {
+ if (dev->mc.list != (struct dev_mc_list *) NULL) {
/*
* Disable promiscuous mode, but receive all packets
* in multicast list
*/
#ifdef MULTICAST_AVOID
- if (lp->promiscuous || (dev->mc_count != lp->mc_count))
+ if (lp->promiscuous || (dev->mc.count != lp->mc_count))
#endif
{
lp->promiscuous = 0;
- lp->mc_count = dev->mc_count;
+ lp->mc_count = dev->mc.count;
wv_82586_reconfig(dev);
}
@@ -3534,7 +3534,7 @@ static void wv_82586_config(struct net_d
/* Any address to set? */
if (lp->mc_count) {
- for (dmi = dev->mc_list; dmi; dmi = dmi->next)
+ for (dmi = dev->mc.list; dmi; dmi = dmi->next)
outsw(PIOP1(ioaddr), (u16 *) dmi->dmi_addr,
WAVELAN_ADDR_SIZE >> 1);
@@ -3542,7 +3542,7 @@ static void wv_82586_config(struct net_d
printk(KERN_DEBUG
"%s: wv_82586_config(): set %d multicast addresses:\n",
dev->name, lp->mc_count);
- for (dmi = dev->mc_list; dmi; dmi = dmi->next)
+ for (dmi = dev->mc.list; dmi; dmi = dmi->next)
printk(KERN_DEBUG " %pM\n", dmi->dmi_addr);
#endif
}
--- wireless-testing.orig/drivers/net/wireless/wavelan_cs.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/wavelan_cs.c 2009-06-13 12:29:48.000000000 +0200
@@ -1373,7 +1373,7 @@ wavelan_set_multicast_list(struct net_de
#ifdef DEBUG_IOCTL_INFO
printk(KERN_DEBUG "%s: wavelan_set_multicast_list(): setting Rx mode %02X to %d addresses.\n",
- dev->name, dev->flags, dev->mc_count);
+ dev->name, dev->flags, dev->mc.count);
#endif
if(dev->flags & IFF_PROMISC)
@@ -1394,7 +1394,7 @@ wavelan_set_multicast_list(struct net_de
/* If all multicast addresses
* or too much multicast addresses for the hardware filter */
if((dev->flags & IFF_ALLMULTI) ||
- (dev->mc_count > I82593_MAX_MULTICAST_ADDRESSES))
+ (dev->mc.count > I82593_MAX_MULTICAST_ADDRESSES))
{
/*
* Disable promiscuous mode, but active the all multicast mode
@@ -1410,7 +1410,7 @@ wavelan_set_multicast_list(struct net_de
}
else
/* If there is some multicast addresses to send */
- if(dev->mc_list != (struct dev_mc_list *) NULL)
+ if(dev->mc.list != (struct dev_mc_list *) NULL)
{
/*
* Disable promiscuous mode, but receive all packets
@@ -1418,12 +1418,12 @@ wavelan_set_multicast_list(struct net_de
*/
#ifdef MULTICAST_AVOID
if(lp->promiscuous || lp->allmulticast ||
- (dev->mc_count != lp->mc_count))
+ (dev->mc.count != lp->mc_count))
#endif
{
lp->promiscuous = 0;
lp->allmulticast = 0;
- lp->mc_count = dev->mc_count;
+ lp->mc_count = dev->mc.count;
wv_82593_reconfig(dev);
}
@@ -3618,7 +3618,7 @@ wv_82593_config(struct net_device * dev)
#ifdef DEBUG_CONFIG_INFO
printk(KERN_DEBUG "%s: wv_hw_config(): set %d multicast addresses:\n",
dev->name, lp->mc_count);
- for(dmi=dev->mc_list; dmi; dmi=dmi->next)
+ for(dmi=dev->mc.list; dmi; dmi=dmi->next)
printk(KERN_DEBUG " %pM\n", dmi->dmi_addr);
#endif
@@ -3627,7 +3627,7 @@ wv_82593_config(struct net_device * dev)
outb(((TX_BASE >> 8) & PIORH_MASK) | PIORH_SEL_TX, PIORH(base));
outb(addrs_len & 0xff, PIOP(base)); /* byte count lsb */
outb((addrs_len >> 8), PIOP(base)); /* byte count msb */
- for(dmi=dev->mc_list; dmi; dmi=dmi->next)
+ for(dmi=dev->mc.list; dmi; dmi=dmi->next)
outsb(PIOP(base), dmi->dmi_addr, dmi->dmi_addrlen);
/* reset transmit DMA pointer */
@@ -3636,7 +3636,7 @@ wv_82593_config(struct net_device * dev)
if(!wv_82593_cmd(dev, "wv_82593_config(): mc-setup",
OP0_MC_SETUP, SR0_MC_SETUP_DONE))
ret = FALSE;
- lp->mc_count = dev->mc_count; /* remember to avoid repeated reset */
+ lp->mc_count = dev->mc.count; /* remember to avoid repeated reset */
}
/* Job done, clear the flag */
--- wireless-testing.orig/drivers/net/wireless/zd1201.c 2009-04-09 10:00:22.000000000 +0200
+++ wireless-testing/drivers/net/wireless/zd1201.c 2009-06-13 12:29:48.000000000 +0200
@@ -871,19 +871,19 @@ static struct iw_statistics *zd1201_get_
static void zd1201_set_multicast(struct net_device *dev)
{
struct zd1201 *zd = netdev_priv(dev);
- struct dev_mc_list *mc = dev->mc_list;
+ struct dev_mc_list *mc = dev->mc.list;
unsigned char reqbuf[ETH_ALEN*ZD1201_MAXMULTI];
int i;
- if (dev->mc_count > ZD1201_MAXMULTI)
+ if (dev->mc.count > ZD1201_MAXMULTI)
return;
- for (i=0; i<dev->mc_count; i++) {
+ for (i=0; i<dev->mc.count; i++) {
memcpy(reqbuf+i*ETH_ALEN, mc->dmi_addr, ETH_ALEN);
mc = mc->next;
}
zd1201_setconfig(zd, ZD1201_RID_CNFGROUPADDRESS, reqbuf,
- dev->mc_count*ETH_ALEN, 0);
+ dev->mc.count*ETH_ALEN, 0);
}
--- wireless-testing.orig/drivers/net/yellowfin.c 2009-04-09 10:00:23.000000000 +0200
+++ wireless-testing/drivers/net/yellowfin.c 2009-06-13 12:29:48.000000000 +0200
@@ -1289,15 +1289,15 @@ static void set_rx_mode(struct net_devic
iowrite16(cfg_value & ~0x1000, ioaddr + Cnfg);
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
iowrite16(0x000F, ioaddr + AddrMode);
- } else if ((dev->mc_count > 64) || (dev->flags & IFF_ALLMULTI)) {
+ } else if ((dev->mc.count > 64) || (dev->flags & IFF_ALLMULTI)) {
/* Too many to filter well, or accept all multicasts. */
iowrite16(0x000B, ioaddr + AddrMode);
- } else if (dev->mc_count > 0) { /* Must use the multicast hash table. */
+ } else if (dev->mc.count > 0) { /* Must use the multicast hash table. */
struct dev_mc_list *mclist;
u16 hash_table[4];
int i;
memset(hash_table, 0, sizeof(hash_table));
- for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; mclist && i < dev->mc.count;
i++, mclist = mclist->next) {
unsigned int bit;
--- wireless-testing.orig/drivers/net/znet.c 2009-04-09 10:00:23.000000000 +0200
+++ wireless-testing/drivers/net/znet.c 2009-06-13 12:29:48.000000000 +0200
@@ -321,7 +321,7 @@ static void znet_set_multicast_list (str
/* Byte D */
cfblk->dummy_1 = 1; /* set to 1 */
cfblk->tx_ifs_retrig = 3; /* Hmm... Disabled */
- cfblk->mc_all = (dev->mc_list || (dev->flags&IFF_ALLMULTI));/* multicast all mode */
+ cfblk->mc_all = (dev->mc.list || (dev->flags&IFF_ALLMULTI));/* multicast all mode */
cfblk->rcv_mon = 0; /* Monitor mode disabled */
cfblk->frag_acpt = 0; /* Do not accept fragments */
cfblk->tstrttrs = 0; /* No start transmission threshold */
--- wireless-testing.orig/drivers/s390/net/qeth_l2_main.c 2009-04-09 10:00:23.000000000 +0200
+++ wireless-testing/drivers/s390/net/qeth_l2_main.c 2009-06-13 12:29:48.000000000 +0200
@@ -626,10 +626,10 @@ static void qeth_l2_set_multicast_list(s
return;
qeth_l2_del_all_mc(card);
spin_lock_bh(&card->mclock);
- for (dm = dev->mc_list; dm; dm = dm->next)
+ for (dm = dev->mc.list; dm; dm = dm->next)
qeth_l2_add_mc(card, dm->da_addr, 0);
- for (dm = dev->uc_list; dm; dm = dm->next)
+ for (dm = dev->uc.list; dm; dm = dm->next)
qeth_l2_add_mc(card, dm->da_addr, 1);
spin_unlock_bh(&card->mclock);
--- wireless-testing.orig/drivers/staging/et131x/et131x_netdev.c 2009-04-23 00:20:58.000000000 +0200
+++ wireless-testing/drivers/staging/et131x/et131x_netdev.c 2009-06-13 12:29:48.000000000 +0200
@@ -465,7 +465,7 @@ void et131x_multicast(struct net_device
uint32_t PacketFilter = 0;
uint32_t count;
unsigned long lockflags;
- struct dev_mc_list *mclist = netdev->mc_list;
+ struct dev_mc_list *mclist = netdev->mc.list;
DBG_ENTER(et131x_dbginfo);
@@ -488,7 +488,7 @@ void et131x_multicast(struct net_device
* accordingly
*/
DBG_VERBOSE(et131x_dbginfo,
- "MULTICAST ADDR COUNT: %d\n", netdev->mc_count);
+ "MULTICAST ADDR COUNT: %d\n", netdev->mc.count);
if (netdev->flags & IFF_PROMISC) {
DBG_VERBOSE(et131x_dbginfo, "Request: PROMISCUOUS MODE ON\n");
@@ -503,7 +503,7 @@ void et131x_multicast(struct net_device
adapter->PacketFilter |= ET131X_PACKET_TYPE_ALL_MULTICAST;
}
- if (netdev->mc_count > NIC_MAX_MCAST_LIST) {
+ if (netdev->mc.count > NIC_MAX_MCAST_LIST) {
DBG_WARNING(et131x_dbginfo,
"ACCEPT ALL MULTICAST for now, as there's more Multicast "
"addresses than the HW supports\n");
@@ -511,7 +511,7 @@ void et131x_multicast(struct net_device
adapter->PacketFilter |= ET131X_PACKET_TYPE_ALL_MULTICAST;
}
- if (netdev->mc_count < 1) {
+ if (netdev->mc.count < 1) {
DBG_VERBOSE(et131x_dbginfo, "Request: REJECT ALL MULTICAST\n");
adapter->PacketFilter &= ~ET131X_PACKET_TYPE_ALL_MULTICAST;
adapter->PacketFilter &= ~ET131X_PACKET_TYPE_MULTICAST;
@@ -522,14 +522,14 @@ void et131x_multicast(struct net_device
}
/* Set values in the private adapter struct */
- adapter->MCAddressCount = netdev->mc_count;
+ adapter->MCAddressCount = netdev->mc.count;
- if (netdev->mc_count) {
+ if (netdev->mc.count) {
if (mclist->dmi_addrlen != ETH_ALEN) {
DBG_WARNING(et131x_dbginfo,
"Multicast addrs are not ETH_ALEN in size\n");
} else {
- count = netdev->mc_count - 1;
+ count = netdev->mc.count - 1;
memcpy(adapter->MCList[count], mclist->dmi_addr,
ETH_ALEN);
}
--- wireless-testing.orig/drivers/staging/slicoss/slicoss.c 2009-04-23 00:20:59.000000000 +0200
+++ wireless-testing/drivers/staging/slicoss/slicoss.c 2009-06-13 12:29:48.000000000 +0200
@@ -1365,8 +1365,8 @@ static void slic_mcast_set_list(struct n
int status = STATUS_SUCCESS;
int i;
char *addresses;
- struct dev_mc_list *mc_list = dev->mc_list;
- int mc_count = dev->mc_count;
+ struct dev_mc_list *mc_list = dev->mc.list;
+ int mc_count = dev->mc.count;
ASSERT(adapter);
--- wireless-testing.orig/drivers/staging/sxg/sxg.c 2009-04-23 00:20:59.000000000 +0200
+++ wireless-testing/drivers/staging/sxg/sxg.c 2009-06-13 12:29:48.000000000 +0200
@@ -1984,7 +1984,7 @@ static bool sxg_mac_filter(struct adapte
return (TRUE);
}
if (adapter->MacFilter & MAC_MCAST) {
- struct dev_mc_list *mclist = dev->mc_list;
+ struct dev_mc_list *mclist = dev->mc.list;
while (mclist) {
ETHER_EQ_ADDR(mclist->da_addr,
EtherHdr->ether_dhost,
@@ -3611,7 +3611,7 @@ static void sxg_set_mcast_addr(struct ad
int i;
if (adapter->MacFilter & (MAC_ALLMCAST | MAC_MCAST)) {
- for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
+ for (i = 0, mclist = dev->mc.list; i < dev->mc.count;
i++, mclist = mclist->next) {
sxg_mcast_set_bit(adapter,mclist->da_addr);
}
--- wireless-testing.orig/arch/xtensa/platforms/iss/network.c 2009-01-13 15:04:57.000000000 +0100
+++ wireless-testing/arch/xtensa/platforms/iss/network.c 2009-06-13 12:29:48.000000000 +0200
@@ -560,7 +560,7 @@ static void iss_net_set_multicast_list(s
#if 0
if (dev->flags & IFF_PROMISC)
return;
- else if (dev->mc_count)
+ else if (dev->mc.count)
dev->flags |= IFF_ALLMULTI;
else
dev->flags &= ~IFF_ALLMULTI;
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
2009-06-13 10:41 [RFC] net: refactor multicast/unicast address list Johannes Berg
@ 2009-06-13 12:28 ` Johannes Berg
2009-06-16 11:18 ` Jiri Pirko
0 siblings, 1 reply; 16+ messages in thread
From: Johannes Berg @ 2009-06-13 12:28 UTC (permalink / raw)
To: Netdev
[-- Attachment #1: Type: text/plain, Size: 651 bytes --]
On Sat, 2009-06-13 at 12:41 +0200, Johannes Berg wrote:
> I'm trying to use address lists without netdevs, but as
> a first step I thought it would be good to reduce the
> amount duplicated code between unicast and multicast
> lists.
>
> After introducing a new 'struct address_list', we can
> unify a lot between these. The next step will probably
> be exporting the __dev_addr_sync and __dev_addr_unsync
> functions so I can use them without a netdev, but this
> cleanup can stand on its own.
Sorry, this was based against the wrong tree and now I see that in
net-next the lists have diverged significantly. Ignore this.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
2009-06-13 12:28 ` Johannes Berg
@ 2009-06-16 11:18 ` Jiri Pirko
2009-06-16 11:29 ` Johannes Berg
0 siblings, 1 reply; 16+ messages in thread
From: Jiri Pirko @ 2009-06-16 11:18 UTC (permalink / raw)
To: Johannes Berg; +Cc: Netdev
Sat, Jun 13, 2009 at 02:28:14PM CEST, johannes@sipsolutions.net wrote:
>On Sat, 2009-06-13 at 12:41 +0200, Johannes Berg wrote:
>> I'm trying to use address lists without netdevs, but as
>> a first step I thought it would be good to reduce the
>> amount duplicated code between unicast and multicast
>> lists.
>>
>> After introducing a new 'struct address_list', we can
>> unify a lot between these. The next step will probably
>> be exporting the __dev_addr_sync and __dev_addr_unsync
>> functions so I can use them without a netdev, but this
>> cleanup can stand on its own.
>
>Sorry, this was based against the wrong tree and now I see that in
>net-next the lists have diverged significantly. Ignore this.
Yes, I've already converted unicast lists to use list_head there. I'm sending
the patch doing the same for multicast lists soon.
Jirka
>
>johannes
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
2009-06-16 11:18 ` Jiri Pirko
@ 2009-06-16 11:29 ` Johannes Berg
2009-06-16 12:38 ` Jiri Pirko
0 siblings, 1 reply; 16+ messages in thread
From: Johannes Berg @ 2009-06-16 11:29 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev
[-- Attachment #1: Type: text/plain, Size: 1204 bytes --]
On Tue, 2009-06-16 at 13:18 +0200, Jiri Pirko wrote:
> Sat, Jun 13, 2009 at 02:28:14PM CEST, johannes@sipsolutions.net wrote:
> >On Sat, 2009-06-13 at 12:41 +0200, Johannes Berg wrote:
> >> I'm trying to use address lists without netdevs, but as
> >> a first step I thought it would be good to reduce the
> >> amount duplicated code between unicast and multicast
> >> lists.
> >>
> >> After introducing a new 'struct address_list', we can
> >> unify a lot between these. The next step will probably
> >> be exporting the __dev_addr_sync and __dev_addr_unsync
> >> functions so I can use them without a netdev, but this
> >> cleanup can stand on its own.
> >
> >Sorry, this was based against the wrong tree and now I see that in
> >net-next the lists have diverged significantly. Ignore this.
>
> Yes, I've already converted unicast lists to use list_head there. I'm sending
> the patch doing the same for multicast lists soon.
Very nice! After that maybe I'll take a look again at moving things into
a common structure -- I ultimately want to use a multicast list without
a netdev to sync multiple netdevs onto a common multicast list that is
not part of a netdev.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
2009-06-16 11:29 ` Johannes Berg
@ 2009-06-16 12:38 ` Jiri Pirko
2009-06-16 23:09 ` Johannes Berg
0 siblings, 1 reply; 16+ messages in thread
From: Jiri Pirko @ 2009-06-16 12:38 UTC (permalink / raw)
To: Johannes Berg; +Cc: Netdev
Tue, Jun 16, 2009 at 01:29:31PM CEST, johannes@sipsolutions.net wrote:
>On Tue, 2009-06-16 at 13:18 +0200, Jiri Pirko wrote:
>> Sat, Jun 13, 2009 at 02:28:14PM CEST, johannes@sipsolutions.net wrote:
>> >On Sat, 2009-06-13 at 12:41 +0200, Johannes Berg wrote:
>> >> I'm trying to use address lists without netdevs, but as
>> >> a first step I thought it would be good to reduce the
>> >> amount duplicated code between unicast and multicast
>> >> lists.
>> >>
>> >> After introducing a new 'struct address_list', we can
>> >> unify a lot between these. The next step will probably
>> >> be exporting the __dev_addr_sync and __dev_addr_unsync
>> >> functions so I can use them without a netdev, but this
>> >> cleanup can stand on its own.
>> >
>> >Sorry, this was based against the wrong tree and now I see that in
>> >net-next the lists have diverged significantly. Ignore this.
>>
>> Yes, I've already converted unicast lists to use list_head there. I'm sending
>> the patch doing the same for multicast lists soon.
>
>Very nice! After that maybe I'll take a look again at moving things into
>a common structure -- I ultimately want to use a multicast list without
>a netdev to sync multiple netdevs onto a common multicast list that is
>not part of a netdev.
I see, hmm, I think I can do this change with my conversion... I was thinking
about similar thing as you suggest before...
Jirka
>
>johannes
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-16 23:09 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-16 23:09 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 1150 bytes --]
On Tue, 2009-06-16 at 14:38 +0200, Jiri Pirko wrote:
> >> Yes, I've already converted unicast lists to use list_head there. I'm sending
> >> the patch doing the same for multicast lists soon.
> >
> >Very nice! After that maybe I'll take a look again at moving things into
> >a common structure -- I ultimately want to use a multicast list without
> >a netdev to sync multiple netdevs onto a common multicast list that is
> >not part of a netdev.
>
> I see, hmm, I think I can do this change with my conversion... I was thinking
> about similar thing as you suggest before...
I don't think the patch for converting the multicast lists will hit .31,
I take it?
I'd like to get this patch into the .32 tree once it opens
http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
but I don't know how to handle that wrt. your patch, which will clearly
conflict with mein. Will you be sending that soon?
I guess we could stick this one into wireless-testing, and then take it
out again once your patch hits the tree and offers me similar API for
list_head based multicast lists?
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-16 23:09 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-16 23:09 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 1150 bytes --]
On Tue, 2009-06-16 at 14:38 +0200, Jiri Pirko wrote:
> >> Yes, I've already converted unicast lists to use list_head there. I'm sending
> >> the patch doing the same for multicast lists soon.
> >
> >Very nice! After that maybe I'll take a look again at moving things into
> >a common structure -- I ultimately want to use a multicast list without
> >a netdev to sync multiple netdevs onto a common multicast list that is
> >not part of a netdev.
>
> I see, hmm, I think I can do this change with my conversion... I was thinking
> about similar thing as you suggest before...
I don't think the patch for converting the multicast lists will hit .31,
I take it?
I'd like to get this patch into the .32 tree once it opens
http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
but I don't know how to handle that wrt. your patch, which will clearly
conflict with mein. Will you be sending that soon?
I guess we could stick this one into wireless-testing, and then take it
out again once your patch hits the tree and offers me similar API for
list_head based multicast lists?
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-16 23:19 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-16 23:19 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 1275 bytes --]
On Wed, 2009-06-17 at 01:10 +0200, Johannes Berg wrote:
> I'd like to get this patch into the .32 tree once it opens
> http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
+/**
+ * mc_unsync_from_dev - Remove synchronized addresses from the destination list
+ * @to: destination list
+ * @to_count: destination list count
+ * @from: source device
+ *
+ * Remove all addresses that were added to the destination list by
+ * mc_sync_from_dev(). This function is intended to be called from
+ * the * dev->stop function of layered software devices. The
+ * destination list must be locked in whatever way the caller
+ * manages it.
+ */
+void mc_unsync_from_dev(struct dev_addr_list **to, int *to_count,
+ struct net_device *from)
+{
+ netif_addr_lock_bh(from);
+ __dev_addr_unsync(to, to_count,
+ &from->mc_list, &from->mc_count);
+ netif_addr_unlock_bh(from);
+}
+EXPORT_SYMBOL(mc_unsync_from_dev);
That can't work, of course, because the "to" list needs to be locked
_after_ "from" is locked, due mc_sync_from_dev() begin used in
ndo_set_multicast_list(). I guess I have to push out all the locking, by
just exporting __dev_addr_sync/__dev_addr_unsync.
Objections? Better ideas?
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-16 23:19 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-16 23:19 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 1275 bytes --]
On Wed, 2009-06-17 at 01:10 +0200, Johannes Berg wrote:
> I'd like to get this patch into the .32 tree once it opens
> http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
+/**
+ * mc_unsync_from_dev - Remove synchronized addresses from the destination list
+ * @to: destination list
+ * @to_count: destination list count
+ * @from: source device
+ *
+ * Remove all addresses that were added to the destination list by
+ * mc_sync_from_dev(). This function is intended to be called from
+ * the * dev->stop function of layered software devices. The
+ * destination list must be locked in whatever way the caller
+ * manages it.
+ */
+void mc_unsync_from_dev(struct dev_addr_list **to, int *to_count,
+ struct net_device *from)
+{
+ netif_addr_lock_bh(from);
+ __dev_addr_unsync(to, to_count,
+ &from->mc_list, &from->mc_count);
+ netif_addr_unlock_bh(from);
+}
+EXPORT_SYMBOL(mc_unsync_from_dev);
That can't work, of course, because the "to" list needs to be locked
_after_ "from" is locked, due mc_sync_from_dev() begin used in
ndo_set_multicast_list(). I guess I have to push out all the locking, by
just exporting __dev_addr_sync/__dev_addr_unsync.
Objections? Better ideas?
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 7:21 ` Jiri Pirko
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Pirko @ 2009-06-17 7:21 UTC (permalink / raw)
To: Johannes Berg; +Cc: Netdev, John Linville, linux-wireless, davem
Wed, Jun 17, 2009 at 01:09:48AM CEST, johannes@sipsolutions.net wrote:
>On Tue, 2009-06-16 at 14:38 +0200, Jiri Pirko wrote:
>
>> >> Yes, I've already converted unicast lists to use list_head there. I'm sending
>> >> the patch doing the same for multicast lists soon.
>> >
>> >Very nice! After that maybe I'll take a look again at moving things into
>> >a common structure -- I ultimately want to use a multicast list without
>> >a netdev to sync multiple netdevs onto a common multicast list that is
>> >not part of a netdev.
>>
>> I see, hmm, I think I can do this change with my conversion... I was thinking
>> about similar thing as you suggest before...
>
>I don't think the patch for converting the multicast lists will hit .31,
>I take it?
I'm preparing the patch right now. It's most likely it will hit .32.
>
>I'd like to get this patch into the .32 tree once it opens
>http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
>
>but I don't know how to handle that wrt. your patch, which will clearly
>conflict with mein. Will you be sending that soon?
I see your need. I'll think about it and try to prepare the lists for this use.
>
>I guess we could stick this one into wireless-testing, and then take it
>out again once your patch hits the tree and offers me similar API for
>list_head based multicast lists?
Or wait, I hope the patch will be ready in week tops.
Jirka
>
>johannes
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 7:21 ` Jiri Pirko
0 siblings, 0 replies; 16+ messages in thread
From: Jiri Pirko @ 2009-06-17 7:21 UTC (permalink / raw)
To: Johannes Berg; +Cc: Netdev, John Linville, linux-wireless, davem
Wed, Jun 17, 2009 at 01:09:48AM CEST, johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org wrote:
>On Tue, 2009-06-16 at 14:38 +0200, Jiri Pirko wrote:
>
>> >> Yes, I've already converted unicast lists to use list_head there. I'm sending
>> >> the patch doing the same for multicast lists soon.
>> >
>> >Very nice! After that maybe I'll take a look again at moving things into
>> >a common structure -- I ultimately want to use a multicast list without
>> >a netdev to sync multiple netdevs onto a common multicast list that is
>> >not part of a netdev.
>>
>> I see, hmm, I think I can do this change with my conversion... I was thinking
>> about similar thing as you suggest before...
>
>I don't think the patch for converting the multicast lists will hit .31,
>I take it?
I'm preparing the patch right now. It's most likely it will hit .32.
>
>I'd like to get this patch into the .32 tree once it opens
>http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch
>
>but I don't know how to handle that wrt. your patch, which will clearly
>conflict with mein. Will you be sending that soon?
I see your need. I'll think about it and try to prepare the lists for this use.
>
>I guess we could stick this one into wireless-testing, and then take it
>out again once your patch hits the tree and offers me similar API for
>list_head based multicast lists?
Or wait, I hope the patch will be ready in week tops.
Jirka
>
>johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 9:30 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-17 9:30 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
On Wed, 2009-06-17 at 09:21 +0200, Jiri Pirko wrote:
> >I guess we could stick this one into wireless-testing, and then take it
> >out again once your patch hits the tree and offers me similar API for
> >list_head based multicast lists?
>
> Or wait, I hope the patch will be ready in week tops.
Yeah, that's fine, I'll ask people to throw in the simple export patch
for testing. Thanks for considering! Please disregard my work on
mac80211, I'll rebase over your work.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 9:30 ` Johannes Berg
0 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-17 9:30 UTC (permalink / raw)
To: Jiri Pirko; +Cc: Netdev, John Linville, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
On Wed, 2009-06-17 at 09:21 +0200, Jiri Pirko wrote:
> >I guess we could stick this one into wireless-testing, and then take it
> >out again once your patch hits the tree and offers me similar API for
> >list_head based multicast lists?
>
> Or wait, I hope the patch will be ready in week tops.
Yeah, that's fine, I'll ask people to throw in the simple export patch
for testing. Thanks for considering! Please disregard my work on
mac80211, I'll rebase over your work.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 12:26 ` John W. Linville
0 siblings, 0 replies; 16+ messages in thread
From: John W. Linville @ 2009-06-17 12:26 UTC (permalink / raw)
To: Johannes Berg; +Cc: Jiri Pirko, Netdev, linux-wireless, davem
On Wed, Jun 17, 2009 at 11:30:24AM +0200, Johannes Berg wrote:
> On Wed, 2009-06-17 at 09:21 +0200, Jiri Pirko wrote:
>
> > >I guess we could stick this one into wireless-testing, and then take it
> > >out again once your patch hits the tree and offers me similar API for
> > >list_head based multicast lists?
> >
> > Or wait, I hope the patch will be ready in week tops.
>
> Yeah, that's fine, I'll ask people to throw in the simple export patch
> for testing. Thanks for considering! Please disregard my work on
> mac80211, I'll rebase over your work.
If you need Jiri's patch in wireless-testing I can make arrangements
to cherry-pick it.
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
@ 2009-06-17 12:26 ` John W. Linville
0 siblings, 0 replies; 16+ messages in thread
From: John W. Linville @ 2009-06-17 12:26 UTC (permalink / raw)
To: Johannes Berg; +Cc: Jiri Pirko, Netdev, linux-wireless, davem
On Wed, Jun 17, 2009 at 11:30:24AM +0200, Johannes Berg wrote:
> On Wed, 2009-06-17 at 09:21 +0200, Jiri Pirko wrote:
>
> > >I guess we could stick this one into wireless-testing, and then take it
> > >out again once your patch hits the tree and offers me similar API for
> > >list_head based multicast lists?
> >
> > Or wait, I hope the patch will be ready in week tops.
>
> Yeah, that's fine, I'll ask people to throw in the simple export patch
> for testing. Thanks for considering! Please disregard my work on
> mac80211, I'll rebase over your work.
If you need Jiri's patch in wireless-testing I can make arrangements
to cherry-pick it.
John
--
John W. Linville Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org might be all we have. Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [RFC] net: refactor multicast/unicast address list
2009-06-17 12:26 ` John W. Linville
(?)
@ 2009-06-17 12:58 ` Johannes Berg
-1 siblings, 0 replies; 16+ messages in thread
From: Johannes Berg @ 2009-06-17 12:58 UTC (permalink / raw)
To: John W. Linville; +Cc: Jiri Pirko, Netdev, linux-wireless, davem
[-- Attachment #1: Type: text/plain, Size: 906 bytes --]
On Wed, 2009-06-17 at 08:26 -0400, John W. Linville wrote:
> On Wed, Jun 17, 2009 at 11:30:24AM +0200, Johannes Berg wrote:
> > On Wed, 2009-06-17 at 09:21 +0200, Jiri Pirko wrote:
> >
> > > >I guess we could stick this one into wireless-testing, and then take it
> > > >out again once your patch hits the tree and offers me similar API for
> > > >list_head based multicast lists?
> > >
> > > Or wait, I hope the patch will be ready in week tops.
> >
> > Yeah, that's fine, I'll ask people to throw in the simple export patch
> > for testing. Thanks for considering! Please disregard my work on
> > mac80211, I'll rebase over your work.
>
> If you need Jiri's patch in wireless-testing I can make arrangements
> to cherry-pick it.
Not the one he just sent, that one's concerned with unicast address
lists. We'll see. The mdev removal still had a bunch of issues anyway.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2009-06-17 12:58 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-13 10:41 [RFC] net: refactor multicast/unicast address list Johannes Berg
2009-06-13 12:28 ` Johannes Berg
2009-06-16 11:18 ` Jiri Pirko
2009-06-16 11:29 ` Johannes Berg
2009-06-16 12:38 ` Jiri Pirko
2009-06-16 23:09 ` Johannes Berg
2009-06-16 23:09 ` Johannes Berg
2009-06-16 23:19 ` Johannes Berg
2009-06-16 23:19 ` Johannes Berg
2009-06-17 7:21 ` Jiri Pirko
2009-06-17 7:21 ` Jiri Pirko
2009-06-17 9:30 ` Johannes Berg
2009-06-17 9:30 ` Johannes Berg
2009-06-17 12:26 ` John W. Linville
2009-06-17 12:26 ` John W. Linville
2009-06-17 12:58 ` Johannes Berg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.