3c5xx: use netdev_mc_* helpers
Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
bf473a268a
commit
59ce25d9eb
@@ -812,7 +812,7 @@ static void set_multicast_list(struct net_device *dev)
|
|||||||
if (dev->flags & IFF_PROMISC) {
|
if (dev->flags & IFF_PROMISC) {
|
||||||
outb(RX_PROM, RX_CMD);
|
outb(RX_PROM, RX_CMD);
|
||||||
inb(RX_STATUS);
|
inb(RX_STATUS);
|
||||||
} else if (dev->mc_list || dev->flags & IFF_ALLMULTI) {
|
} else if (!netdev_mc_empty(dev) || dev->flags & IFF_ALLMULTI) {
|
||||||
/* Multicast or all multicast is the same */
|
/* Multicast or all multicast is the same */
|
||||||
outb(RX_MULT, RX_CMD);
|
outb(RX_MULT, RX_CMD);
|
||||||
inb(RX_STATUS); /* Clear status. */
|
inb(RX_STATUS); /* Clear status. */
|
||||||
|
@@ -1216,7 +1216,7 @@ static int elp_close(struct net_device *dev)
|
|||||||
static void elp_set_mc_list(struct net_device *dev)
|
static void elp_set_mc_list(struct net_device *dev)
|
||||||
{
|
{
|
||||||
elp_device *adapter = netdev_priv(dev);
|
elp_device *adapter = netdev_priv(dev);
|
||||||
struct dev_mc_list *dmi = dev->mc_list;
|
struct dev_mc_list *dmi;
|
||||||
int i;
|
int i;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
@@ -1230,10 +1230,9 @@ static void elp_set_mc_list(struct net_device *dev)
|
|||||||
/* if num_addrs==0 the list will be cleared */
|
/* if num_addrs==0 the list will be cleared */
|
||||||
adapter->tx_pcb.command = CMD_LOAD_MULTICAST_LIST;
|
adapter->tx_pcb.command = CMD_LOAD_MULTICAST_LIST;
|
||||||
adapter->tx_pcb.length = 6 * netdev_mc_count(dev);
|
adapter->tx_pcb.length = 6 * netdev_mc_count(dev);
|
||||||
for (i = 0; i < netdev_mc_count(dev); i++) {
|
i = 0;
|
||||||
memcpy(adapter->tx_pcb.data.multicast[i], dmi->dmi_addr, 6);
|
netdev_for_each_mc_addr(dmi, dev)
|
||||||
dmi = dmi->next;
|
memcpy(adapter->tx_pcb.data.multicast[i++], dmi->dmi_addr, 6);
|
||||||
}
|
|
||||||
adapter->got[CMD_LOAD_MULTICAST_LIST] = 0;
|
adapter->got[CMD_LOAD_MULTICAST_LIST] = 0;
|
||||||
if (!send_pcb(dev, &adapter->tx_pcb))
|
if (!send_pcb(dev, &adapter->tx_pcb))
|
||||||
pr_err("%s: couldn't send set_multicast command\n", dev->name);
|
pr_err("%s: couldn't send set_multicast command\n", dev->name);
|
||||||
|
@@ -1536,7 +1536,7 @@ static void set_rx_mode(struct net_device *dev)
|
|||||||
pr_debug("%s: Setting promiscuous mode.\n",
|
pr_debug("%s: Setting promiscuous mode.\n",
|
||||||
dev->name);
|
dev->name);
|
||||||
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast | RxProm;
|
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast | RxProm;
|
||||||
} else if ((dev->mc_list) || (dev->flags & IFF_ALLMULTI)) {
|
} else if (!netdev_mc_empty(dev) || dev->flags & IFF_ALLMULTI) {
|
||||||
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast;
|
new_mode = SetRxFilter | RxStation | RxMulticast | RxBroadcast;
|
||||||
} else
|
} else
|
||||||
new_mode = SetRxFilter | RxStation | RxBroadcast;
|
new_mode = SetRxFilter | RxStation | RxBroadcast;
|
||||||
|
@@ -625,7 +625,7 @@ static int init586(struct net_device *dev)
|
|||||||
volatile struct iasetup_cmd_struct *ias_cmd;
|
volatile struct iasetup_cmd_struct *ias_cmd;
|
||||||
volatile struct tdr_cmd_struct *tdr_cmd;
|
volatile struct tdr_cmd_struct *tdr_cmd;
|
||||||
volatile struct mcsetup_cmd_struct *mc_cmd;
|
volatile struct mcsetup_cmd_struct *mc_cmd;
|
||||||
struct dev_mc_list *dmi = dev->mc_list;
|
struct dev_mc_list *dmi;
|
||||||
int num_addrs = netdev_mc_count(dev);
|
int num_addrs = netdev_mc_count(dev);
|
||||||
|
|
||||||
ptr = (void *) ((char *) p->scb + sizeof(struct scb_struct));
|
ptr = (void *) ((char *) p->scb + sizeof(struct scb_struct));
|
||||||
@@ -787,10 +787,9 @@ static int init586(struct net_device *dev)
|
|||||||
mc_cmd->cmd_cmd = CMD_MCSETUP | CMD_LAST;
|
mc_cmd->cmd_cmd = CMD_MCSETUP | CMD_LAST;
|
||||||
mc_cmd->cmd_link = 0xffff;
|
mc_cmd->cmd_link = 0xffff;
|
||||||
mc_cmd->mc_cnt = num_addrs * 6;
|
mc_cmd->mc_cnt = num_addrs * 6;
|
||||||
for (i = 0; i < num_addrs; i++) {
|
i = 0;
|
||||||
memcpy((char *) mc_cmd->mc_list[i], dmi->dmi_addr, 6);
|
netdev_for_each_mc_addr(dmi, dev)
|
||||||
dmi = dmi->next;
|
memcpy((char *) mc_cmd->mc_list[i++], dmi->dmi_addr, 6);
|
||||||
}
|
|
||||||
p->scb->cbl_offset = make16(mc_cmd);
|
p->scb->cbl_offset = make16(mc_cmd);
|
||||||
p->scb->cmd = CUC_START;
|
p->scb->cmd = CUC_START;
|
||||||
elmc_id_attn586();
|
elmc_id_attn586();
|
||||||
|
@@ -1533,9 +1533,7 @@ static void do_mc32_set_multicast_list(struct net_device *dev, int retry)
|
|||||||
{
|
{
|
||||||
unsigned char block[62];
|
unsigned char block[62];
|
||||||
unsigned char *bp;
|
unsigned char *bp;
|
||||||
struct dev_mc_list *dmc=dev->mc_list;
|
struct dev_mc_list *dmc;
|
||||||
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if(retry==0)
|
if(retry==0)
|
||||||
lp->mc_list_valid = 0;
|
lp->mc_list_valid = 0;
|
||||||
@@ -1545,11 +1543,9 @@ static void do_mc32_set_multicast_list(struct net_device *dev, int retry)
|
|||||||
block[0]=netdev_mc_count(dev);
|
block[0]=netdev_mc_count(dev);
|
||||||
bp=block+2;
|
bp=block+2;
|
||||||
|
|
||||||
for(i=0;i<netdev_mc_count(dev);i++)
|
netdev_for_each_mc_addr(dmc, dev) {
|
||||||
{
|
|
||||||
memcpy(bp, dmc->dmi_addr, 6);
|
memcpy(bp, dmc->dmi_addr, 6);
|
||||||
bp+=6;
|
bp+=6;
|
||||||
dmc=dmc->next;
|
|
||||||
}
|
}
|
||||||
if(mc32_command_nowait(dev, 2, block,
|
if(mc32_command_nowait(dev, 2, block,
|
||||||
2+6*netdev_mc_count(dev))==-1)
|
2+6*netdev_mc_count(dev))==-1)
|
||||||
|
@@ -2970,7 +2970,7 @@ static void set_rx_mode(struct net_device *dev)
|
|||||||
if (vortex_debug > 3)
|
if (vortex_debug > 3)
|
||||||
pr_notice("%s: Setting promiscuous mode.\n", dev->name);
|
pr_notice("%s: Setting promiscuous mode.\n", dev->name);
|
||||||
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast|RxProm;
|
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast|RxProm;
|
||||||
} else if ((dev->mc_list) || (dev->flags & IFF_ALLMULTI)) {
|
} else if (!netdev_mc_empty(dev) || dev->flags & IFF_ALLMULTI) {
|
||||||
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast;
|
new_mode = SetRxFilter|RxStation|RxMulticast|RxBroadcast;
|
||||||
} else
|
} else
|
||||||
new_mode = SetRxFilter | RxStation | RxBroadcast;
|
new_mode = SetRxFilter | RxStation | RxBroadcast;
|
||||||
|
Reference in New Issue
Block a user