linux/drivers/net/ethernet/broadcom
Andy Gospodarek fcdefccac9 bgmac: stop clearing DMA receive control register right after it is set
Current bgmac code initializes some DMA settings in the receive control
register for some hardware and then immediately clears those settings.
Not clearing those settings results in ~420Mbps *improvement* in
throughput; this system can now receive frames at line-rate on Broadcom
5871x hardware compared to ~520Mbps today.  I also tested a few other
values but found there to be no discernible difference in CPU
utilization even if burst size and prefetching values are different.

On the hardware tested there was no need to keep the code that cleared
all but bits 16-17, but since there is a wide variety of hardware that
used this driver (I did not look at all hardware docs for hardware using
this IP block), I find it wise to move this call up and clear bits just
after reading the default value from the hardware rather than completely
removing it.

This is a good candidate for -stable >=3.14 since that is when the code
that was supposed to improve performance (but did not) was introduced.

Signed-off-by: Andy Gospodarek <gospo@broadcom.com>
Fixes: 56ceecde1f ("bgmac: initialize the DMA controller of core...")
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-31 20:51:01 -04:00
..
bnx2x bnx2x: Use the correct divisor value for PHC clock readings. 2016-10-23 17:34:41 -04:00
bnxt net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
genet net: bcmgenet: use new api ethtool_{get|set}_link_ksettings 2016-09-27 07:43:07 -04:00
b44.c net: ethernet: broadcom: b44: use new api ethtool_{get|set}_link_ksettings 2016-09-19 21:39:12 -04:00
b44.h net: ethernet: broadcom: b44: use phydev from struct net_device 2016-09-19 21:39:11 -04:00
bcm63xx_enet.c net: bcm63xx: avoid referencing uninitialized variable 2016-10-18 14:20:36 -04:00
bcm63xx_enet.h net: ethernet: broadcom: bcm63xx: use phydev from struct net_device 2016-09-19 21:39:12 -04:00
bcmsysport.c net: systemport: constify ethtool_ops structures 2016-08-31 09:22:31 -07:00
bcmsysport.h net: ethernet: bcmsysport: use phydev from struct net_device 2016-06-19 16:15:55 -07:00
bgmac-bcma-mdio.c net: ethernet: bgmac: Add platform device support 2016-07-09 18:10:41 -04:00
bgmac-bcma.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-08-30 00:54:02 -04:00
bgmac-platform.c net: ethernet: bgmac: Remove redundant dev_err call in bgmac_probe() 2016-07-13 18:07:56 -07:00
bgmac.c bgmac: stop clearing DMA receive control register right after it is set 2016-10-31 20:51:01 -04:00
bgmac.h net: bgmac: support Ethernet core on BCM53573 SoCs 2016-08-18 23:36:07 -07:00
bnx2_fw.h bnx2-cnic: Driver Rebranding Changes 2015-02-20 15:46:49 -05:00
bnx2.c bnx2: fix locking when netconsole is used 2016-10-18 10:01:51 -04:00
bnx2.h BNX2: fix a Null Pointer for stats_blk 2015-10-11 05:06:21 -07:00
cnic_defs.h
cnic_if.h cnic: Add the interfaces to get FC-NPIV table. 2015-08-06 21:54:12 -07:00
cnic.c cnic: call cp->stop_hw() in cnic_start_hw() on allocation failure 2016-05-06 15:44:54 -04:00
cnic.h
Kconfig net: ethernet: bgmac: Add platform device support 2016-07-09 18:10:41 -04:00
Makefile net: ethernet: bgmac: Add platform device support 2016-07-09 18:10:41 -04:00
sb1250-mac.c treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
tg3.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-02 22:20:41 -04:00
tg3.h mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00