aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/dvb/dvb-core/dvb_net.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
index 441c0642b30a..cccea412088b 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -1109,14 +1109,14 @@ static int dvb_net_feed_stop(struct net_device *dev)
1109} 1109}
1110 1110
1111 1111
1112static int dvb_set_mc_filter (struct net_device *dev, struct dev_mc_list *mc) 1112static int dvb_set_mc_filter(struct net_device *dev, unsigned char *addr)
1113{ 1113{
1114 struct dvb_net_priv *priv = netdev_priv(dev); 1114 struct dvb_net_priv *priv = netdev_priv(dev);
1115 1115
1116 if (priv->multi_num == DVB_NET_MULTICAST_MAX) 1116 if (priv->multi_num == DVB_NET_MULTICAST_MAX)
1117 return -ENOMEM; 1117 return -ENOMEM;
1118 1118
1119 memcpy(priv->multi_macs[priv->multi_num], mc->dmi_addr, 6); 1119 memcpy(priv->multi_macs[priv->multi_num], addr, ETH_ALEN);
1120 1120
1121 priv->multi_num++; 1121 priv->multi_num++;
1122 return 0; 1122 return 0;
@@ -1140,8 +1140,7 @@ static void wq_set_multicast_list (struct work_struct *work)
1140 dprintk("%s: allmulti mode\n", dev->name); 1140 dprintk("%s: allmulti mode\n", dev->name);
1141 priv->rx_mode = RX_MODE_ALL_MULTI; 1141 priv->rx_mode = RX_MODE_ALL_MULTI;
1142 } else if (!netdev_mc_empty(dev)) { 1142 } else if (!netdev_mc_empty(dev)) {
1143 int mci; 1143 struct netdev_hw_addr *ha;
1144 struct dev_mc_list *mc;
1145 1144
1146 dprintk("%s: set_mc_list, %d entries\n", 1145 dprintk("%s: set_mc_list, %d entries\n",
1147 dev->name, netdev_mc_count(dev)); 1146 dev->name, netdev_mc_count(dev));
@@ -1149,11 +1148,8 @@ static void wq_set_multicast_list (struct work_struct *work)
1149 priv->rx_mode = RX_MODE_MULTI; 1148 priv->rx_mode = RX_MODE_MULTI;
1150 priv->multi_num = 0; 1149 priv->multi_num = 0;
1151 1150
1152 for (mci = 0, mc=dev->mc_list; 1151 netdev_for_each_mc_addr(ha, dev)
1153 mci < netdev_mc_count(dev); 1152 dvb_set_mc_filter(dev, ha->addr);
1154 mc = mc->next, mci++) {
1155 dvb_set_mc_filter(dev, mc);
1156 }
1157 } 1153 }
1158 1154
1159 netif_addr_unlock_bh(dev); 1155 netif_addr_unlock_bh(dev);