linux/drivers/net/ethernet
Sebastian Siewior 2488a54e48 net: fec_main: dma_map() only the length of the skb
On tx submit the driver always dma_map_single() FEC_ENET_TX_FRSIZE (=2048)
bytes. This works because we don't overwrite any memory after the data buffer,
we remove it from cache if it was there. So we hurt performace in case the
mapping of a smaller area makes a difference.
There is also a bug: If the data area starts shortly before the end of
RAM say 0xc7fffa10 and the RAM ends at 0xc8000000 then we have enough
space to fit the data area (according to skb->len) but we would map beyond
end of ram if we are using 2048. In v2.6.31 (against which kernel this patch
made) there is the following check in dma_cache_maint():

|BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));

Since the area starting at 0xc8000000 is no longer virt_addr_valid() we
BUG() during dma_map_single(). The BUG() statement was removed in v3.5-rc1 as
per 2dc6a016 ("ARM: dma-mapping: use asm-generic/dma-mapping-common.h").

This patch was tested on v2.6.31 and then forward-ported and compile
tested only against the net tree. I think it is still worth fixing
mainline even after the BUG() statement is gone.

Tested-by: Fugang Duan <B38611@freescale.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-12-02 16:59:20 -05:00
..
3com net: typhoon: remove unnecessary pci_set_drvdata() 2013-10-18 00:03:28 -04:00
8390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
adaptec net: starfire: remove unnecessary pci_set_drvdata() 2013-10-18 00:03:28 -04:00
adi adi: Remove extern from function prototypes 2013-09-24 10:09:18 -04:00
aeroflex drivers:net: Convert dma_alloc_coherent(...__GFP_ZERO) to dma_zalloc_coherent 2013-08-29 21:55:23 -04:00
allwinner drivers: net: sun4i-emac: select MDIO_SUN4I 2013-07-26 13:57:58 -07:00
alteon
amd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
apple macmace: add missing platform_set_drvdata() in mace_probe() 2013-11-11 14:02:08 -05:00
arc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
atheros alx: Reset phy speed after resume 2013-11-14 17:14:42 -05:00
broadcom PCI / tg3: Give up chip reset and carrier loss handling if PCI device is not present 2013-12-02 16:01:49 -05:00
brocade Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
cadence Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
calxeda net: calxedaxgmac: Fix panic caused by MTU change of active interface 2013-11-07 19:25:53 -05:00
chelsio Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-11-04 13:48:30 -05:00
cirrus net: ep93xx_eth: use dev_get_platdata() 2013-08-30 17:43:35 -04:00
cisco net: enic: remove unnecessary pci_set_drvdata() 2013-10-18 00:03:30 -04:00
davicom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 16:49:34 -04:00
dec net: tulip: use DEFINE_PCI_DEVICE_TABLE 2013-10-22 02:19:23 -04:00
dlink net: dl2k: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:00 -04:00
emulex be2net: call napi_disable() for all event queues 2013-11-28 18:54:02 -05:00
faraday drivers:net: Convert dma_alloc_coherent(...__GFP_ZERO) to dma_zalloc_coherent 2013-08-29 21:55:23 -04:00
freescale net: fec_main: dma_map() only the length of the skb 2013-12-02 16:59:20 -05:00
fujitsu net: fujitsu: Remove ISA depdendency from Kconfig 2013-10-07 15:52:54 -04:00
hp hp100: replace hardcoded name in /proc/interrupts with interface name 2013-09-27 17:38:32 -04:00
i825xx net:drivers/net: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO 2013-11-07 03:01:59 -05:00
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
icplus net: icplus: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
intel ixgbe: Make ixgbe_identify_qsfp_module_generic static 2013-11-30 00:21:47 -08:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-11-19 15:50:47 -08:00
mellanox net/mlx4_en: Remove selftest TX queues empty condition 2013-12-01 20:36:07 -05:00
micrel Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-11-20 13:20:24 -08:00
microchip
moxa ethernet: moxa: remove duplicate includes 2013-10-21 18:46:45 -04:00
myricom net: myri10ge: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:02 -04:00
natsemi xtsonic: add missing platform_set_drvdata() in xtsonic_probe() 2013-11-11 14:02:08 -05:00
neterion Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-14 16:30:30 +09:00
nuvoton drivers:net: delete premature free_irq 2013-09-04 13:18:19 -04:00
nvidia net: Explicitly initialize u64_stats_sync structures for lockdep 2013-11-06 12:40:25 +01:00
nxp DMA-API: net: nxp/lpc_eth: use dma_coerce_mask_and_coherent() 2013-10-31 14:48:56 +00:00
octeon Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
oki-semi pch_gbe: Validate hwtstamp_config completely before applying it 2013-11-14 16:22:10 -05:00
packetengines net: packetengines: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:02 -04:00
pasemi net: pasemi: remove unnecessary pci_set_drvdata() 2013-10-22 02:11:51 -04:00
qlogic Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-11-15 16:47:22 -08:00
rdc net: r6040: remove unnecessary pci_set_drvdata() 2013-10-22 02:11:52 -04:00
realtek net: 8139cp: fix a BUG_ON triggered by wrong bytes_compl 2013-11-29 16:18:23 -05:00
renesas sh_eth: check platform data pointer 2013-11-04 15:49:28 -05:00
seeq net: seeq: use dev_get_platdata() 2013-08-30 17:43:37 -04:00
sfc sfc: Convert to use hwmon_device_register_with_groups 2013-11-29 16:26:16 -05:00
sgi net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
silan
sis net: sis190: remove unnecessary pci_set_drvdata() 2013-10-22 02:11:52 -04:00
smsc net: smc91: fix crash regression on the versatile 2013-11-29 16:23:35 -05:00
stmicro stmmac: Validate hwtstamp_config completely before applying it 2013-11-14 16:22:10 -05:00
sun net: niu: remove unnecessary pci_set_drvdata() 2013-10-23 16:58:41 -04:00
tehuti net: tehuti: remove unnecessary pci_set_drvdata() 2013-10-23 16:58:41 -04:00
ti drivers: net: cpsw: fix dt probe for one port ethernet 2013-12-02 16:55:30 -05:00
tile Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-14 16:30:30 +09:00
toshiba net: tc35815: remove unnecessary pci_set_drvdata() 2013-10-23 16:58:41 -04:00
tundra net: tsi108: use dev_get_platdata() 2013-08-30 17:43:38 -04:00
via via-velocity: fix netif_receive_skb use in irq disabled section. 2013-11-28 18:43:35 -05:00
wiznet net: w5100: use dev_get_platdata() 2013-08-30 17:43:38 -04:00
xilinx Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
xircom
xscale ixp4xx_eth: Validate hwtstamp_config completely before applying it 2013-11-14 16:22:10 -05:00
Kconfig net: Add MOXA ART SoCs ethernet driver 2013-08-11 21:38:12 -07:00
Makefile net: Add MOXA ART SoCs ethernet driver 2013-08-11 21:38:12 -07:00
dnet.c
dnet.h
ethoc.c net: ethoc: use dev_get_platdata() 2013-08-30 17:43:35 -04:00
fealnx.c net: fealnx: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.c net: jme: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.h jme: Remove unused #define PFX 2013-11-07 02:14:32 -05:00
korina.c net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
lantiq_etop.c net: lantiq_etop: remove deprecated IRQF_DISABLED 2013-09-15 22:01:05 -04:00
netx-eth.c net: netx-eth: remove unnecessary casting 2013-09-04 00:27:27 -04:00
s6gmac.c net: ethernet: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:51 -07:00