aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/typhoon.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/typhoon.c')
-rw-r--r--drivers/net/typhoon.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
index 6e4f754c4baf..edabc49a49bc 100644
--- a/drivers/net/typhoon.c
+++ b/drivers/net/typhoon.c
@@ -924,17 +924,18 @@ typhoon_set_rx_mode(struct net_device *dev)
924 filter = TYPHOON_RX_FILTER_DIRECTED | TYPHOON_RX_FILTER_BROADCAST; 924 filter = TYPHOON_RX_FILTER_DIRECTED | TYPHOON_RX_FILTER_BROADCAST;
925 if(dev->flags & IFF_PROMISC) { 925 if(dev->flags & IFF_PROMISC) {
926 filter |= TYPHOON_RX_FILTER_PROMISCOUS; 926 filter |= TYPHOON_RX_FILTER_PROMISCOUS;
927 } else if((dev->mc_count > multicast_filter_limit) || 927 } else if ((netdev_mc_count(dev) > multicast_filter_limit) ||
928 (dev->flags & IFF_ALLMULTI)) { 928 (dev->flags & IFF_ALLMULTI)) {
929 /* Too many to match, or accept all multicasts. */ 929 /* Too many to match, or accept all multicasts. */
930 filter |= TYPHOON_RX_FILTER_ALL_MCAST; 930 filter |= TYPHOON_RX_FILTER_ALL_MCAST;
931 } else if(dev->mc_count) { 931 } else if (!netdev_mc_empty(dev)) {
932 struct dev_mc_list *mclist; 932 struct dev_mc_list *mclist;
933 int i; 933 int i;
934 934
935 memset(mc_filter, 0, sizeof(mc_filter)); 935 memset(mc_filter, 0, sizeof(mc_filter));
936 for(i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count; 936 for (i = 0, mclist = dev->mc_list;
937 i++, mclist = mclist->next) { 937 mclist && i < netdev_mc_count(dev);
938 i++, mclist = mclist->next) {
938 int bit = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3f; 939 int bit = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3f;
939 mc_filter[bit >> 5] |= 1 << (bit & 0x1f); 940 mc_filter[bit >> 5] |= 1 << (bit & 0x1f);
940 } 941 }