linux/drivers/net/ethernet
Ben Hutchings 950c54df1e sfc: Reduce RX scatter buffer size, and reduce alignment if appropriate
efx_start_datapath() asserts that we can fit 2 RX scatter buffers plus
a software structure, each appropriately aligned, into a single page.
Where L1_CACHE_BYTES == 256 and PAGE_SIZE == 4096, which is the case
on s390, this assertion fails.

The current scatter buffer size is also not a multiple of 64 or 128,
which are more common cache line sizes.  If we can make both the start
and end of a scatter buffer cache-aligned, this will reduce the need
for read-modify-write operations on inter- processor links.

Fix the alignment by reducing EFX_RX_USR_BUF_SIZE to 2048 - 256 ==
1792.  (We could use 2048 - L1_CACHE_BYTES, but EFX_RX_USR_BUF_SIZE
also affects user-level networking where a larger amount of
housekeeping data may be needed.  Although this version of the driver
does not support user-level networking, I prefer to keep scattering
behaviour consistent with the out-of-tree version.)

This still doesn't fix the s390 build because like most architectures
it has NET_IP_ALIGN == 2.  When NET_IP_ALIGN != 0 we cannot achieve
cache line alignment at either the start or end of a scatter buffer,
so there is actually no point in padding the buffers to a multiple of
the cache line size.  All we need is 4-byte alignment of the network
header, so do that.

Adjust the assertions accordingly.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-05-14 11:32:04 -07:00
..
3com 3c59x: fix PCI resource management 2013-05-11 17:40:14 -07:00
8390 Char / Misc driver update for 3.10-rc1 2013-04-29 11:18:34 -07:00
adaptec net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
adi bfin_mac: fix error return code in bfin_mac_probe() 2013-05-08 13:13:30 -07:00
aeroflex
alteon net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
amd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
apple
atheros Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
broadcom tg3: Fix data corruption on 5725 with TSO 2013-05-14 11:32:04 -07:00
brocade bna: add missing iounmap() on error in bnad_init() 2013-05-13 12:54:38 -07:00
cadence net/ethernet: MACB should depend on HAS_DMA 2013-05-11 16:28:24 -07:00
calxeda net/ethernet: NET_CALXEDA_XGMAC should depend on HAS_DMA 2013-05-11 16:28:23 -07:00
chelsio cxgb4: fix error recovery when t4_fw_hello returns a positive value 2013-05-03 16:10:34 -04:00
cirrus
cisco net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
davicom
dec
dlink
emulex be2net: disable TX in be_close() 2013-05-08 11:59:48 -07:00
faraday
freescale net: fec: enable hardware checksum only on imx6q-fec 2013-05-11 16:12:44 -07:00
fujitsu Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
hp
i825xx
ibm emac: Fix EMAC soft reset on 460EX/GT 2013-05-11 17:40:14 -07:00
icplus
intel e1000e: fix scheduling while atomic bug 2013-05-07 07:51:37 -07:00
marvell sky2: Fix crash on receiving VLAN frames 2013-05-03 16:10:34 -04:00
mellanox net/mlx4: Strengthen VLAN tags/priorities enforcement in VST mode 2013-05-11 16:12:44 -07:00
micrel ks8851: Remove unneeded PM_OPS definitions 2013-04-16 16:30:51 -04:00
microchip net: ethernet: enc28j60: use spi_get_drvdata() and spi_set_drvdata() 2013-04-07 16:48:19 -04:00
myricom net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
natsemi net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
neterion net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
nuvoton
nvidia net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
nxp net/nxp/lpc_eth: Drop ifdef CONFIG_OF_NET 2013-04-02 16:43:56 -04:00
octeon
oki-semi pch_gbe: minor: report the actual error on MTU change 2013-04-16 16:43:35 -04:00
packetengines
pasemi
qlogic qlge: fix dma map leak when the last chunk is not allocated 2013-05-13 12:54:38 -07:00
rdc
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-30 03:55:20 -04:00
renesas sh_eth: use random MAC address if no valid one supplied 2013-04-30 15:37:08 -04:00
seeq
sfc sfc: Reduce RX scatter buffer size, and reduce alignment if appropriate 2013-05-14 11:32:04 -07:00
sgi
silan
sis sis900: check for DMA map errors 2013-04-15 14:11:37 -04:00
smsc ARM: arm-soc non-critical fixes for 3.10 2013-05-02 08:56:55 -07:00
stmicro net/ethernet: STMMAC_ETH should depend on HAS_DMA 2013-05-11 16:28:23 -07:00
sun
tehuti net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
ti drivers: net: cpsw: irq not disabled in cpsw isr in particular sequence 2013-05-02 16:52:04 -04:00
tile tile: support new Tilera hypervisor 2013-05-02 16:20:31 -04:00
toshiba net/spider_net: fix error return code in spider_net_open() 2013-05-08 13:13:29 -07:00
tundra
via net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
wiznet
xilinx net: vlan: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* 2013-04-19 14:45:26 -04:00
xircom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
xscale
dnet.c
dnet.h
ethoc.c
fealnx.c
jme.c net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
jme.h
Kconfig
korina.c
lantiq_etop.c
Makefile
netx-eth.c
s6gmac.c