It's supposed to significantly improve performance but doesn't seem to affect Northstar unfortunately. It seems only some other platforms were limited because of this DMA setup mistake. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>master
parent
4fae9db765
commit
e2a65f4aa5
@ -0,0 +1,25 @@ |
||||
From c121f72a66c5f92fbe2fc53baa274eef39875cec Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Mon, 24 Oct 2016 23:46:18 +0100
|
||||
Subject: [PATCH] net: bgmac: fix spelling mistake: "connecton" -> "connection"
|
||||
|
||||
trivial fix to spelling mistake in dev_err message
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
Acked-by: Jon Mason <jon.mason@broadcom.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/bgmac.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1465,7 +1465,7 @@ static int bgmac_phy_connect(struct bgma
|
||||
phy_dev = phy_connect(bgmac->net_dev, bus_id, &bgmac_adjust_link,
|
||||
PHY_INTERFACE_MODE_MII);
|
||||
if (IS_ERR(phy_dev)) {
|
||||
- dev_err(bgmac->dev, "PHY connecton failed\n");
|
||||
+ dev_err(bgmac->dev, "PHY connection failed\n");
|
||||
return PTR_ERR(phy_dev);
|
||||
}
|
||||
|
@ -0,0 +1,59 @@ |
||||
From fcdefccac976ee51dd6071832b842d8fb41c479c Mon Sep 17 00:00:00 2001
|
||||
From: Andy Gospodarek <gospo@broadcom.com>
|
||||
Date: Mon, 31 Oct 2016 13:32:03 -0400
|
||||
Subject: [PATCH] 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: 56ceecde1f29 ("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>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/bgmac.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
index 31ca204..91cbf92 100644
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -307,6 +307,10 @@ static void bgmac_dma_rx_enable(struct bgmac *bgmac,
|
||||
u32 ctl;
|
||||
|
||||
ctl = bgmac_read(bgmac, ring->mmio_base + BGMAC_DMA_RX_CTL);
|
||||
+
|
||||
+ /* preserve ONLY bits 16-17 from current hardware value */
|
||||
+ ctl &= BGMAC_DMA_RX_ADDREXT_MASK;
|
||||
+
|
||||
if (bgmac->feature_flags & BGMAC_FEAT_RX_MASK_SETUP) {
|
||||
ctl &= ~BGMAC_DMA_RX_BL_MASK;
|
||||
ctl |= BGMAC_DMA_RX_BL_128 << BGMAC_DMA_RX_BL_SHIFT;
|
||||
@@ -317,7 +321,6 @@ static void bgmac_dma_rx_enable(struct bgmac *bgmac,
|
||||
ctl &= ~BGMAC_DMA_RX_PT_MASK;
|
||||
ctl |= BGMAC_DMA_RX_PT_1 << BGMAC_DMA_RX_PT_SHIFT;
|
||||
}
|
||||
- ctl &= BGMAC_DMA_RX_ADDREXT_MASK;
|
||||
ctl |= BGMAC_DMA_RX_ENABLE;
|
||||
ctl |= BGMAC_DMA_RX_PARITY_DISABLE;
|
||||
ctl |= BGMAC_DMA_RX_OVERFLOW_CONT;
|
||||
--
|
||||
2.10.1
|
||||
|
Loading…
Reference in new issue