linux/drivers/net/ethernet
Thadeu Lima de Souza Cascardo 782428535e qlge: fix size of external list for TX address descriptors
When transmiting a fragmented skb, qlge fills a descriptor with the
fragment addresses, after DMA-mapping them. If there are more than eight
fragments, it will use the eighth descriptor as a pointer to an external
list. After mapping this external list, called OAL to a structure
containing more descriptors, it fills it with the extra fragments.

However, considering that systems with pages larger than 8KiB would have
less than 8 fragments, which was true before commit a715dea3c8, it
defined a macro for the OAL size as 0 in those cases.

Now, if a skb with more than 8 fragments (counting skb->data as one
fragment), this would start overwriting the list of addresses already
mapped and would make the driver fail to properly unmap the right
addresses on architectures with pages larger than 8KiB.

Besides that, the list of mappings was one size too small, since it must
have a mapping for the maxinum number of skb fragments plus one for
skb->data and another for the OAL. So, even on architectures with page
sizes 4KiB and 8KiB, a skb with the maximum number of fragments would
make the driver overwrite its counter for the number of mappings, which,
again, would make it fail to unmap the mapped DMA addresses.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-11-23 19:10:00 -05:00
..
3com
8390
adaptec
adi
aeroflex
alteon
amd Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2011-11-03 13:28:14 -07:00
apple
atheros
broadcom bnx2x: Fix 5461x LED 2011-11-23 19:07:55 -05:00
brocade
cadence net/cadence: enable by default NET_ATMEL 2011-11-16 17:33:50 -05:00
chelsio
cirrus
cisco
davicom
dec
dlink
emulex Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
faraday
freescale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-11-07 10:55:33 -08:00
fujitsu
hp
i825xx
ibm iseries_veth: Fix wrong parameter given to sizeof call 2011-11-21 14:56:35 -05:00
icplus
intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-11-07 10:55:33 -08:00
marvell sky2: fix hang in napi_disable 2011-11-17 21:43:57 -05:00
mellanox mlx4_en: Remove FCS bytes from packet length. 2011-11-14 14:25:36 -05:00
micrel
microchip
myricom
natsemi i825xx:xscale:8390:freescale: Fix Kconfig dependancies 2011-11-04 17:41:20 -04:00
neterion
nuvoton
nvidia forcedeth: fix stats on hardware without extended stats support 2011-11-14 00:14:39 -05:00
octeon
oki-semi pch_gbe: Move #include of module.h 2011-11-16 17:38:03 -05:00
packetengines
pasemi
qlogic qlge: fix size of external list for TX address descriptors 2011-11-23 19:10:00 -05:00
racal
rdc r6040: fix check against MCRO_HASHEN bit in r6040_multicast_list 2011-11-16 20:24:52 -05:00
realtek r8169: increase the delay parameter of pm_schedule_suspend 2011-11-08 12:37:06 -05:00
renesas
seeq
sfc
sgi
silan
sis
smsc net/smsc911x: Always wait for the chip to be ready 2011-11-14 00:40:50 -05:00
stmicro stmmac: mask mmc interrupts 2011-11-21 15:31:15 -05:00
sun sunhme: Allow usage on SBI based SBus systems 2011-11-08 14:01:42 -05:00
tehuti
ti
tile
toshiba Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2011-11-06 17:12:03 -08:00
tundra
via
xilinx net/ll_temac: FIX : Wait for indirect wait to end 2011-11-09 15:39:57 -05:00
xircom
xscale
dnet.c
dnet.h
ethoc.c
fealnx.c
jme.c
jme.h
Kconfig
korina.c
lantiq_etop.c NET: MIPS: lantiq: fix etop compile error 2011-11-14 14:34:54 -05:00
Makefile
mipsnet.c
netx-eth.c
s6gmac.c