diff options
author | Jiri Pirko <jpirko@redhat.com> | 2010-04-01 17:22:57 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-03 17:22:15 -0400 |
commit | 22bedad3ce112d5ca1eaf043d4990fa2ed698c87 (patch) | |
tree | b6fba5688d48b1396f01d13ee53610dea7749c15 /drivers/net/wireless/adm8211.c | |
parent | a748ee2426817a95b1f03012d8f339c45c722ae1 (diff) |
net: convert multicast list to list_head
Converts the list and the core manipulating with it to be the same as uc_list.
+uses two functions for adding/removing mc address (normal and "global"
variant) instead of a function parameter.
+removes dev_mcast.c completely.
+exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
manipulation with lists on a sandbox (used in bonding and 80211 drivers)
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/adm8211.c')
-rw-r--r-- | drivers/net/wireless/adm8211.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c index 547912e6843..2277998b726 100644 --- a/drivers/net/wireless/adm8211.c +++ b/drivers/net/wireless/adm8211.c | |||
@@ -1317,21 +1317,19 @@ static void adm8211_bss_info_changed(struct ieee80211_hw *dev, | |||
1317 | } | 1317 | } |
1318 | 1318 | ||
1319 | static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw, | 1319 | static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw, |
1320 | int mc_count, struct dev_addr_list *mclist) | 1320 | struct netdev_hw_addr_list *mc_list) |
1321 | { | 1321 | { |
1322 | unsigned int bit_nr, i; | 1322 | unsigned int bit_nr; |
1323 | u32 mc_filter[2]; | 1323 | u32 mc_filter[2]; |
1324 | struct netdev_hw_addr *ha; | ||
1324 | 1325 | ||
1325 | mc_filter[1] = mc_filter[0] = 0; | 1326 | mc_filter[1] = mc_filter[0] = 0; |
1326 | 1327 | ||
1327 | for (i = 0; i < mc_count; i++) { | 1328 | netdev_hw_addr_list_for_each(ha, mc_list) { |
1328 | if (!mclist) | 1329 | bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26; |
1329 | break; | ||
1330 | bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; | ||
1331 | 1330 | ||
1332 | bit_nr &= 0x3F; | 1331 | bit_nr &= 0x3F; |
1333 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); | 1332 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); |
1334 | mclist = mclist->next; | ||
1335 | } | 1333 | } |
1336 | 1334 | ||
1337 | return mc_filter[0] | ((u64)(mc_filter[1]) << 32); | 1335 | return mc_filter[0] | ((u64)(mc_filter[1]) << 32); |