From: Hauke Mehrtens Date: Wed, 27 Apr 2011 18:00:59 +0000 (+0200) Subject: compat-wireless: backport multicast filter in p54 for kernel < 2.6.35 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=6542f4c4e00edf1b86c714a8f423c2211955b814;p=openwrt%2Fstaging%2Fblogic.git compat-wireless: backport multicast filter in p54 for kernel < 2.6.35 The interface changed with kernel 2.6.35 and we have to backport these changes. CC: Christian Lamparter Signed-off-by: Hauke Mehrtens --- diff --git a/patches/25-multicast-list_head.patch b/patches/25-multicast-list_head.patch index f4d8aae5588b..719321ae5223 100644 --- a/patches/25-multicast-list_head.patch +++ b/patches/25-multicast-list_head.patch @@ -437,6 +437,51 @@ This also backport commit 2f787b0b76bf5de2eaa3ca3a29d89123ae03c856 int determine_fw_capabilities(struct orinoco_private *priv, char *fw_name, size_t fw_name_len, u32 *hw_ver); +--- a/drivers/net/wireless/p54/main.c ++++ b/drivers/net/wireless/p54/main.c +@@ -308,11 +308,18 @@ out: + return ret; + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + static u64 p54_prepare_multicast(struct ieee80211_hw *dev, + struct netdev_hw_addr_list *mc_list) ++#else ++static u64 p54_prepare_multicast(struct ieee80211_hw *dev, int mc_count, ++ struct dev_addr_list *ha) ++#endif + { + struct p54_common *priv = dev->priv; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + struct netdev_hw_addr *ha; ++#endif + int i; + + BUILD_BUG_ON(ARRAY_SIZE(priv->mc_maclist) != +@@ -322,12 +329,23 @@ static u64 p54_prepare_multicast(struct + * Otherwise the firmware will drop it and ARP will no longer work. + */ + i = 1; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + priv->mc_maclist_num = netdev_hw_addr_list_count(mc_list) + i; + netdev_hw_addr_list_for_each(ha, mc_list) { + memcpy(&priv->mc_maclist[i], ha->addr, ETH_ALEN); ++#else ++ priv->mc_maclist_num = mc_count + i; ++ while (i <= mc_count) { ++ if (!ha) ++ break; ++ memcpy(&priv->mc_maclist[i], ha->dmi_addr, ETH_ALEN); ++#endif + i++; + if (i >= ARRAY_SIZE(priv->mc_maclist)) + break; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)) ++ ha = ha->next; ++#endif + } + + return 1; /* update */ --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c @@ -1629,7 +1629,11 @@ static void set_multicast_list(struct us