linux/drivers/net
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
..
appletalk
arcnet
bonding bonding: Don't allow mode change via sysfs with slaves present 2011-11-17 19:31:54 -05:00
caif caif-hsi: Added recovery check of CA wake status. 2011-10-19 03:25:43 -04:00
can net, sja1000: Don't include version.h in peak_pci.c when not needed 2011-11-21 16:43:53 -05:00
cris
ethernet qlge: fix size of external list for TX address descriptors 2011-11-23 19:10:00 -05:00
fddi
hamradio
hippi net: drivers/net/hippi/Kconfig should be sourced 2011-11-09 15:55:06 -05:00
irda Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2011-11-03 13:28:14 -07:00
phy drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
plip
ppp Merge branch 'master' of ra.kernel.org:/pub/scm/linux/kernel/git/davem/net 2011-10-24 18:18:09 -04:00
slip
tokenring
usb net-next:asix: V2 Update VERSION 2011-11-15 16:26:07 -05:00
vmxnet3 drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
wan wan: make LAPB callbacks const 2011-09-16 19:20:20 -04:00
wimax drivers/net: Add moduleparam.h to drivers as required. 2011-10-31 19:31:09 -04:00
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2011-11-22 16:46:55 -05:00
xen-netback xen-netback: use correct index for invalidation in xen_netbk_tx_check_gop() 2011-11-21 15:32:15 -05:00
dummy.c
eql.c
ifb.c
Kconfig net: drivers/net/hippi/Kconfig should be sourced 2011-11-09 15:55:06 -05:00
LICENSE.SRC
loopback.c
macvlan.c macvlan: receive multicast with local address 2011-11-04 17:39:32 -04:00
macvtap.c macvtap: Fix the minor device number allocation 2011-10-21 02:53:07 -04:00
Makefile
mdio.c
mii.c
netconsole.c netconsole: enable netconsole can make net_device refcnt incorrent 2011-10-18 23:55:29 -04:00
rionet.c drivers/net/rionet.c: fix ethernet address macros for LE platforms 2011-11-02 16:07:01 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c
veth.c drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
virtio_net.c virtio-net: Use virtio_config_val() for retrieving config 2011-11-02 11:40:58 +10:30
xen-netfront.c net: add skb frag size accessors 2011-10-19 03:10:46 -04:00