backports: backport multicast list handling in iwlwifi mvm
authorJohannes Berg <johannes.berg@intel.com>
Wed, 1 Jan 2014 20:40:40 +0000 (21:40 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 18 Jan 2014 12:43:57 +0000 (13:43 +0100)
Backport multicast list handling for kernel < 2.6.35 in iwlwifi mvm
driver.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_iwlwifi.patch [new file with mode: 0644]

diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_iwlwifi.patch b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_iwlwifi.patch
new file mode 100644 (file)
index 0000000..3404c11
--- /dev/null
@@ -0,0 +1,42 @@
+--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
++++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+@@ -800,12 +800,21 @@ static void iwl_mvm_recalc_multicast(str
+ }
+ static u64 iwl_mvm_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+                                    struct netdev_hw_addr_list *mc_list)
++#else
++                                   int addr_count,
++                                   struct dev_addr_list *mc_list)
++#endif
+ {
+       struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
+       struct iwl_mcast_filter_cmd *cmd;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+       struct netdev_hw_addr *addr;
+       int addr_count = netdev_hw_addr_list_count(mc_list);
++#else
++      struct dev_mc_list *addr;
++#endif
+       bool pass_all = false;
+       int len;
+@@ -824,11 +833,15 @@ static u64 iwl_mvm_prepare_multicast(str
+               return (u64)(unsigned long)cmd;
+       }
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+       netdev_hw_addr_list_for_each(addr, mc_list) {
++#else
++      for (addr = mc_list; addr; addr = addr->next) {
++#endif
+               IWL_DEBUG_MAC80211(mvm, "mcast addr (%d): %pM\n",
+-                                 cmd->count, addr->addr);
++                                 cmd->count, mc_addr(addr));
+               memcpy(&cmd->addr_list[cmd->count * ETH_ALEN],
+-                     addr->addr, ETH_ALEN);
++                     mc_addr(addr), ETH_ALEN);
+               cmd->count++;
+       }