ks7010/src/ks_hostif.c |
2183 | 2183 | |
2184 | 2184 | struct net_device *dev = priv->net_dev; |
2185 | 2185 | int mc_count; |
| 2186 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) |
| 2187 | struct netdev_hw_addr *ha; |
| 2188 | #else |
2186 | 2189 | struct dev_mc_list *mclist; |
| 2190 | #endif |
2187 | 2191 | char set_address[NIC_MAX_MCAST_LIST*ETH_ALEN]; |
2188 | 2192 | unsigned long filter_type; |
2189 | 2193 | int i; |
... | ... | |
2199 | 2203 | hostif_mib_set_request(priv, LOCAL_MULTICAST_FILTER, sizeof(filter_type), |
2200 | 2204 | MIB_VALUE_TYPE_BOOL, &filter_type); |
2201 | 2205 | } |
2202 | | else if ((dev->mc_count > NIC_MAX_MCAST_LIST) || (dev->flags & IFF_ALLMULTI)){ |
| 2206 | else if ((netdev_mc_count(dev) > NIC_MAX_MCAST_LIST) || (dev->flags & IFF_ALLMULTI)){ |
2203 | 2207 | filter_type = cpu_to_le32((uint32_t)MCAST_FILTER_MCASTALL); |
2204 | 2208 | hostif_mib_set_request(priv, LOCAL_MULTICAST_FILTER, sizeof(filter_type), |
2205 | 2209 | MIB_VALUE_TYPE_BOOL, &filter_type); |
2206 | 2210 | } |
2207 | 2211 | else { |
2208 | 2212 | if (priv->sme_i.sme_flag & SME_MULTICAST){ |
2209 | | mc_count = dev->mc_count; |
| 2213 | mc_count = netdev_mc_count(dev); |
| 2214 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) |
| 2215 | netdev_for_each_mc_addr(ha, dev) { |
| 2216 | memcpy(&set_address[i*ETH_ALEN], ha->addr, ETH_ALEN); |
| 2217 | } |
| 2218 | #else |
2210 | 2219 | for (i = 0, mclist = dev->mc_list; mclist && i < mc_count; i++, mclist = mclist->next) |
2211 | 2220 | memcpy(&set_address[i*ETH_ALEN], mclist->dmi_addr, ETH_ALEN); |
| 2221 | #endif |
2212 | 2222 | priv->sme_i.sme_flag &= ~SME_MULTICAST; |
2213 | 2223 | hostif_mib_set_request(priv, LOCAL_MULTICAST_ADDRESS, |
2214 | 2224 | (ETH_ALEN*mc_count), MIB_VALUE_TYPE_OSTRING, &set_address[0]); |