--- /dev/null
+--- 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++;
+ }
+