1
linux/drivers/net
Shawn Lin c60c9c71ad r6040: fix multicast operations
The original code does not work well when the number of mulitcast
address to handle is greater than MCAST_MAX. It only enable promiscous
mode instead of multicast hash table mode, so the hash table function
will not be activated and all multicast frames will be recieved in this
condition.

This patch fixes the following issues with the r6040 NIC operating in
multicast:

1) When the IFF_ALLMULTI flag is set, we should write 0xffff to the NIC
hash table registers to make it process multicast traffic.

2) When the number of multicast address to handle is smaller than
MCAST_MAX, we should use the NIC multicast registers MID1_{L,M,H}.

3) The hashing of the address was not correct, due to an invalid
substraction (15 - (crc & 0x0f)) instead of (crc & 0x0f) and an
incorrect crc algorithm (ether_crc_le) instead of (ether_crc).

4) If necessary, we should set HASH_EN flag in MCR0 to enable multicast
hash table function.

Reported-by: Marc Leclerc <marc-leclerc@signaturealpha.com>
Tested-by: Marc Leclerc <marc-leclerc@signaturealpha.com>
Signed-off-by: Shawn Lin <shawn@dmp.com.tw>
Signed-off-by: Albert Chen <albert.chen@rdc.com.tw>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-03-08 14:21:50 -08:00
..
appletalk
arcnet
arm module: fix missing semicolons in MODULE macro usage 2011-01-24 14:32:54 +10:30
atl1c atl1c: Add missing PCI device ID 2011-02-02 15:02:08 -08:00
atl1e net: Fix drivers advertising HW_CSUM feature to use csum_start 2010-12-16 14:43:15 -08:00
atlx Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-04 11:57:25 -08:00
benet benet: Avoid potential null deref in be_cmd_get_seeprom_data() 2011-02-05 17:58:18 -08:00
bna bna: Remove unnecessary memset(,0,) 2011-01-12 19:00:39 -08:00
bnx2x bnx2x: fix MaxBW configuration 2011-03-06 18:06:04 -08:00
bonding bonding 802.3ad: Rename rx_machine_lock to state_machine_lock 2011-03-07 16:02:18 -08:00
caif Merge branch 'ux500-core' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into devel-stable 2011-01-03 10:31:58 +00:00
can CAN: add controller hardware name for Softing cards 2011-02-28 12:08:48 -08:00
chelsio Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
cris net: cris/eth_v10: Use net_device_stats from struct net_device_stats 2010-12-06 13:24:47 -08:00
cxgb3 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
cxgb4 cxgb4: fix reported state of interfaces without link 2011-01-20 16:45:55 -08:00
cxgb4vf cxgb4vf: Use defined Mailbox Timeout 2011-02-14 17:37:11 -08:00
e1000 e1000: fix sparse warning 2011-03-02 03:20:56 -08:00
e1000e e1000e: disable broken PHY wakeup for ICH10 LOMs, use MAC wakeup instead 2011-03-02 03:34:27 -08:00
ehea ehea: Increase the skb array usage 2011-01-11 14:03:09 -08:00
enic Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-17 12:27:22 -08:00
fs_enet
hamradio hamradio: Resolve memory leak due to missing firmware release in add_mcs() 2011-01-09 15:45:48 -08:00
ibm_newemac Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2011-01-07 16:58:04 -08:00
igb igb: Add Anti-spoofing feature support 2010-12-24 21:36:51 -08:00
igbvf igb: fix sparse warning 2011-03-02 03:33:48 -08:00
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-19 20:25:45 -08:00
ixgb net: Fix drivers advertising HW_CSUM feature to use csum_start 2010-12-16 14:43:15 -08:00
ixgbe ixgbe: work around for DDP last buffer size 2011-02-17 01:18:46 -08:00
ixgbevf ixgbevf: Add X540 VF device support to the ixgbevf driver 2010-12-24 21:45:42 -08:00
ixp2000
mlx4 mlx4_core: Add ConnectX-3 device IDs 2011-01-28 15:24:55 -08:00
myri10ge Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2011-01-14 09:29:05 -08:00
netxen netxen: update driver version 4.0.75 2011-01-03 11:56:18 -08:00
octeon
pch_gbe pch_gbe: Fix the MAC Address load issue. 2011-02-14 13:37:26 -08:00
pcmcia fmvj18x_cs: add new id 2011-02-28 12:06:20 -08:00
phy Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-17 12:27:22 -08:00
qlcnic qlcnic: change module parameter permissions 2011-01-10 13:34:55 -08:00
qlge drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
sfc sfc: lower stack usage in efx_ethtool_self_test 2011-02-22 10:12:01 -08:00
skfp Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-04 11:57:25 -08:00
stmmac stmmac: enable wol via magic frame by default. 2011-02-13 17:00:05 -08:00
tile netdev: tilepro: Use is_unicast_ether_addr helper 2011-01-13 21:49:56 -08:00
tokenring drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
tulip drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
usb Added support for usb ethernet (0x0fe6, 0x9700) 2011-02-23 14:32:28 -08:00
vmxnet3 vmxnet3: Dont allocate extra MSI-x vectors 2011-01-15 21:21:14 -08:00
vxge vxge: Fix wrong boolean operator 2011-02-01 12:30:23 -08:00
wan Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
wimax Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-03-01 12:38:18 -08:00
3c59x.c
3c501.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c501.h
3c503.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c503.h
3c505.c
3c505.h
3c507.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c509.c
3c515.c
3c523.c
3c523.h
3c527.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c527.h
7990.c
7990.h
8139cp.c
8139too.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
8390.c
8390.h
8390p.c
82596.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
amd8111e.c
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
atarilance.c
atp.c
atp.h
au1000_eth.c net: au1000_eth: remove unused global variable. 2010-12-11 12:01:48 -08:00
au1000_eth.h
ax88796.c
b44.c b44: fix workarround for wap54g10 2010-12-01 11:11:31 -08:00
b44.h
bcm63xx_enet.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
bcm63xx_enet.h
bfin_mac.c netdev: bfin_mac: Remove is_multicast_ether_addr use in netdev_for_each_mc_addr 2011-01-13 21:48:25 -08:00
bfin_mac.h netdev: bfin_mac: let boards set vlan masks 2011-01-10 13:31:14 -08:00
bmac.c
bmac.h
bnx2_fw.h
bnx2.c bnx2: Eliminate AER error messages on systems not supporting it 2011-01-26 14:28:52 -08:00
bnx2.h bnx2: Eliminate AER error messages on systems not supporting it 2011-01-26 14:28:52 -08:00
bsd_comp.c
cassini.c cassini: Fix build bustage on x86. 2011-01-14 12:39:59 -08:00
cassini.h cassini: Use local-mac-address prom property for Cassini MAC address 2011-01-06 11:50:30 -08:00
cnic_defs.h cnic: Add FCoE support on 57712 2010-12-23 11:44:34 -08:00
cnic_if.h cnic: Do not call bnx2i when bnx2i is calling cnic_unregister_driver() 2011-01-03 19:08:07 -08:00
cnic.c cnic: Fix lost interrupt on bnx2x 2011-03-02 15:57:51 -08:00
cnic.h cnic: Add FCoE support on 57712 2010-12-23 11:44:34 -08:00
cpmac.c
cs89x0.c
cs89x0.h
davinci_cpdma.c
davinci_cpdma.h
davinci_emac.c davinci_emac: Add Carrier Link OK check in Davinci RX Handler 2011-02-28 13:16:14 -08:00
davinci_mdio.c
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c depca: Fix warnings 2011-02-01 13:19:07 -08:00
depca.h
dl2k.c dl2k: nulify fraginfo after unmap 2011-01-27 14:18:34 -08:00
dl2k.h
dm9000.c DM9000B: Fix PHY power for network down/up 2011-02-23 14:29:50 -08:00
dm9000.h
dnet.c dnet: fix wrong use of platform_set_drvdata() 2011-02-28 12:22:21 -08:00
dnet.h
dummy.c
e100.c
e2100.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
eepro.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
eexpress.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
eexpress.h
enc28j60_hw.h
enc28j60.c enc28j60: Fix reading of transmit status vector 2011-01-31 20:56:54 -08:00
epic100.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
eql.c
es3210.c
eth16i.c
ethoc.c ethoc: remove division from loops 2010-11-28 11:16:38 -08:00
ewrk3.c
ewrk3.h
fealnx.c
fec_mpc52xx_phy.c
fec_mpc52xx.c
fec_mpc52xx.h
fec.c net/fec: fix unterminated platform_device_id table 2011-02-28 12:35:44 -08:00
fec.h net/fec: add dual fec support for mx28 2011-01-09 15:42:56 -08:00
forcedeth.c drivers/net: Call netif_carrier_off at the end of the probe 2011-02-17 14:09:57 -08:00
fsl_pq_mdio.c
fsl_pq_mdio.h
gianfar_ethtool.c
gianfar_sysfs.c
gianfar.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-19 20:25:45 -08:00
gianfar.h net: remove dev_txq_stats_fold() 2011-01-13 21:44:34 -08:00
greth.c GRETH: resolve SMP issues and other problems 2011-01-14 12:45:55 -08:00
greth.h GRETH: handle frame error interrupts 2011-01-14 12:45:54 -08:00
hamachi.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
hp100.c
hp100.h
hp-plus.c
hp.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c netdev: Use default implementation of ethtool_ops::get_link where possible 2010-12-10 15:55:24 -08:00
ibmveth.h
ifb.c ifb: add performance flags 2011-01-03 12:43:10 -08:00
ioc3-eth.c
ipg.c
ipg.h
iseries_veth.c iseries_veth: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
jazzsonic.c
jme.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
jme.h
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
korina.c
ks8842.c
ks8851_mll.c
ks8851.c
ks8851.h
ksz884x.c ksz884x: Fix section mismatch derived from pcidev_init() 2011-01-03 13:27:37 -08:00
lance.c
lasi_82596.c
lib8390.c
lib82596.c
LICENSE.SRC
ll_temac_main.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
ll_temac_mdio.c
ll_temac.h
lne390.c
loopback.c
lp486e.c
mac89x0.c
mac8390.c
macb.c macb: don't use platform_set_drvdata() on a net_device 2011-02-28 12:22:20 -08:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c
macvtap.c drivers/net/macvtap: fix error check 2011-03-07 15:57:58 -08:00
Makefile drivers/net/tile/: on-chip network drivers for the tile architecture 2010-11-24 13:11:18 -05:00
mdio.c
meth.c
meth.h
mii.c
mipsnet.c
mv643xx_eth.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
mvme147.c
myri_sbus.c
myri_sbus.h
natsemi.c
ne2.c
ne2k-pci.c
ne3210.c
ne-h8300.c
ne.c
netconsole.c netconsole: clarify stopping message 2011-01-06 11:30:23 -08:00
netx-eth.c
ni52.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
ni52.h
ni65.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
ni65.h
ni5010.c
ni5010.h
niu.c niu: Fix races between up/down and get_stats. 2011-02-03 16:12:50 -08:00
niu.h
ns83820.c ns83820: Avoid bad pointer deref in ns83820_init_one(). 2011-01-18 16:13:49 -08:00
pasemi_mac_ethtool.c
pasemi_mac.c
pasemi_mac.h
pci-skeleton.c
pcnet32.c
plip.c
ppp_async.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_deflate.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_generic.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_mppe.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_mppe.h
ppp_synctty.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
pppoe.c pppoe.c: Fix kernel panic caused by __pppoe_xmit 2010-12-12 15:06:16 -08:00
pppox.c
pptp.c ipv4: Don't pre-seed hoplimit metric. 2010-12-12 22:08:17 -08:00
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
pxa168_eth.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
qla3xxx.c
qla3xxx.h
r6040.c r6040: fix multicast operations 2011-03-08 14:21:50 -08:00
r8169.c r8169: disable ASPM 2011-03-03 11:55:43 -08:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
s2io.h s2io: make strings at tables const 2010-12-11 11:46:36 -08:00
s6gmac.c
sb1000.c
sb1250-mac.c
sc92031.c net: Fix too optimistic NETIF_F_HW_CSUM features 2010-12-06 12:59:04 -08:00
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c drivers/net: remove unnecessary flush_scheduled_work() calls 2010-12-12 16:45:14 +01:00
sh_eth.h drivers/net: remove unnecessary flush_scheduled_work() calls 2010-12-12 16:45:14 +01:00
sis190.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
sis900.c sis900: Fix mem leak in sis900_rx error path 2011-02-05 18:08:57 -08:00
sis900.h
skge.c skge: don't mark carrier down at start 2011-02-24 22:17:02 -08:00
skge.h
sky2.c sky2: convert to new VLAN model (v0.2) 2011-01-09 15:54:15 -08:00
sky2.h sky2: convert to new VLAN model (v0.2) 2011-01-09 15:54:15 -08:00
slhc.c
slip.c
slip.h
smc91x.c
smc91x.h
smc911x.c
smc911x.h
smc9194.c
smc9194.h
smc-mca.c
smc-ultra32.c
smc-ultra.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
smsc911x.c net/smsc911x.c: Set the VLAN1 register to fix VLAN MTU problem 2011-03-07 12:30:12 -08:00
smsc911x.h
smsc9420.c
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c net/Space: delete orphaned externs from deleted drivers 2011-01-03 11:06:35 -08:00
spider_net_ethtool.c
spider_net.c
spider_net.h
starfire.c starfire: Fix dma_addr_t size test for MIPS 2010-12-31 12:33:17 -08:00
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 22:37:05 -08:00
sungem_phy.c
sungem_phy.h
sungem.c net: Fix drivers advertising HW_CSUM feature to use csum_start 2010-12-16 14:43:15 -08:00
sungem.h
sunhme.c net: Fix drivers advertising HW_CSUM feature to use csum_start 2010-12-16 14:43:15 -08:00
sunhme.h
sunlance.c netdev: Use default implementation of ethtool_ops::get_link where possible 2010-12-10 15:55:24 -08:00
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
tehuti.h
tg3.c tg3: Restrict phy ioctl access 2011-02-17 14:11:15 -08:00
tg3.h tg3: Use new VLAN code 2011-01-26 13:13:10 -08:00
tlan.c
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
typhoon.c typhoon: memory corruption in typhoon_get_drvinfo() 2010-12-20 10:43:02 -08:00
typhoon.h
ucc_geth_ethtool.c
ucc_geth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-14 13:25:30 -08:00
ucc_geth.h ucc_geth: fix ucc halt problem in half duplex mode 2010-11-28 18:36:57 -08:00
veth.c net/veth: Fix packet checksumming 2010-12-16 14:41:35 -08:00
via-rhine.c via-rhine: hardware VLAN support 2010-12-08 10:23:36 -08:00
via-velocity.c fix comment typos concerning "consistent" 2010-12-10 16:04:28 +01:00
via-velocity.h
virtio_net.c virtio_net: Add schedule check to napi_enable call 2011-02-10 11:03:31 -08:00
wd.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
xen-netfront.c xen: netfront: handle incoming GSO SKBs which are not CHECKSUM_PARTIAL 2011-01-27 14:17:35 -08:00
xilinx_emaclite.c Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2011-01-10 08:57:03 -08:00
xtsonic.c
yellowfin.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
znet.c
zorro8390.c