xirc2ps_cs: re-initialize the multicast address in do_reset keep bit7,8 of XIRCREG42_SWC1 in set_multicast_list.

Signed-off-by: Komuro <komurojun-mbn@nifty.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

authored by Komuro and committed by Jeff Garzik 43fc63dc f7f312a0

+8 -4
+8 -4
drivers/net/pcmcia/xirc2ps_cs.c
··· 1461 1461 set_multicast_list(struct net_device *dev) 1462 1462 { 1463 1463 unsigned int ioaddr = dev->base_addr; 1464 + unsigned value; 1464 1465 1465 1466 SelectPage(0x42); 1467 + value = GetByte(XIRCREG42_SWC1) & 0xC0; 1468 + 1466 1469 if (dev->flags & IFF_PROMISC) { /* snoop */ 1467 - PutByte(XIRCREG42_SWC1, 0x06); /* set MPE and PME */ 1470 + PutByte(XIRCREG42_SWC1, value | 0x06); /* set MPE and PME */ 1468 1471 } else if (dev->mc_count > 9 || (dev->flags & IFF_ALLMULTI)) { 1469 - PutByte(XIRCREG42_SWC1, 0x02); /* set MPE */ 1472 + PutByte(XIRCREG42_SWC1, value | 0x02); /* set MPE */ 1470 1473 } else if (dev->mc_count) { 1471 1474 /* the chip can filter 9 addresses perfectly */ 1472 - PutByte(XIRCREG42_SWC1, 0x01); 1475 + PutByte(XIRCREG42_SWC1, value | 0x01); 1473 1476 SelectPage(0x40); 1474 1477 PutByte(XIRCREG40_CMD0, Offline); 1475 1478 set_addresses(dev); 1476 1479 SelectPage(0x40); 1477 1480 PutByte(XIRCREG40_CMD0, EnableRecv | Online); 1478 1481 } else { /* standard usage */ 1479 - PutByte(XIRCREG42_SWC1, 0x00); 1482 + PutByte(XIRCREG42_SWC1, value | 0x00); 1480 1483 } 1481 1484 SelectPage(0); 1482 1485 } ··· 1725 1722 1726 1723 /* enable receiver and put the mac online */ 1727 1724 if (full) { 1725 + set_multicast_list(dev); 1728 1726 SelectPage(0x40); 1729 1727 PutByte(XIRCREG40_CMD0, EnableRecv | Online); 1730 1728 }