--- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c @@ -1215,17 +1215,34 @@ static u64 zd_op_prepare_multicast(struct ieee80211_hw *hw, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr_list *mc_list) +#else + int mc_count, struct dev_addr_list *ha) +#endif { struct zd_mac *mac = zd_hw_mac(hw); struct zd_mc_hash hash; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) struct netdev_hw_addr *ha; +#else + int i; +#endif zd_mc_clear(&hash); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) netdev_hw_addr_list_for_each(ha, mc_list) { dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->addr); zd_mc_add_addr(&hash, ha->addr); +#else + for (i = 0; i < mc_count; i++) { + if (!ha) + break; + dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->dmi_addr); + zd_mc_add_addr(&hash, ha->dmi_addr); + ha = ha->next; +#endif } return hash.low | ((u64)hash.high << 32);