net: stmmac: Fixes for -net
Subsystems (4)
PATCH 3/3 net: stmmac: tc: Do not return a fragment entry
In reply to Jose AbreuDo not try to return a fragment entry from TC list. Otherwise we may not clean properly allocated entries.
---
Cc: Giuseppe Cavallaro <[email protected]>
Cc: Alexandre Torgue <[email protected]>
Cc: Jose Abreu <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
--- drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +1 -1
@@ -37,7 +37,7 @@ static struct stmmac_tc_entry *tc_find_entry(struct stmmac_priv *priv, entry = &priv->tc_entries[i];if (!entry->in_use && !first && free) first = entry; -if (entry->handle == loc && !free) +if ((entry->handle == loc) && !free && !entry->is_frag) dup = entry; }
Signature · 1 line
2.7.4
PATCH 2/3 net: stmmac: Fix issues when number of Queues >= 4
In reply to Jose AbreuWhen queues >= 4 we use different registers but we were not subtracting the offset of 4. Fix this.
Found out by Coverity.
---
Cc: Giuseppe Cavallaro <[email protected]>
Cc: Alexandre Torgue <[email protected]>
Cc: Jose Abreu <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
--- drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 4 ++++ drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 4 ++++ 2 files changed, 8 insertions(+)
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +4 -0
@@ -85,6 +85,8 @@ static void dwmac4_rx_queue_priority(struct mac_device_info *hw,u32 value; base_register = (queue <4 ) ?GMAC_RXQ_CTRL2 :GMAC_RXQ_CTRL3 ; +if (queue >=4 ) + queue -=4 ; value =readl (ioaddr + base_register);
@@ -102,6 +104,8 @@ static void dwmac4_tx_queue_priority(struct mac_device_info *hw,u32 value; base_register = (queue <4 ) ?GMAC_TXQ_PRTY_MAP0 :GMAC_TXQ_PRTY_MAP1 ; +if (queue >=4 ) + queue -=4 ; value =readl (ioaddr + base_register);
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +4 -0
@@ -108,6 +108,8 @@ static void dwxgmac2_rx_queue_prio(struct mac_device_info *hw, u32 prio,u32 value, reg; reg = (queue <4 ) ?XGMAC_RXQ_CTRL2 :XGMAC_RXQ_CTRL3 ; +if (queue >=4 ) + queue -=4 ; value =readl (ioaddr + reg); value &= ~XGMAC_PSRQ (queue);
@@ -171,6 +173,8 @@ static void dwxgmac2_map_mtl_to_dma(struct mac_device_info *hw, u32 queue,u32 value, reg; reg = (queue <4 ) ?XGMAC_MTL_RXQ_DMA_MAP0 :XGMAC_MTL_RXQ_DMA_MAP1 ; +if (queue >=4 ) + queue -=4 ; value =readl (ioaddr + reg); value &= ~XGMAC_QxMDMACH (queue);
Signature · 1 line
2.7.4
PATCH 1/3 net: stmmac: xgmac: Fix XGMAC selftests
In reply to Jose AbreuFixup the XGMAC selftests by correctly finishing the implementation of set_filter callback.
Result:
$ ethtool -t enp4s0 The test result is PASS The test extra info: 1. MAC Loopback 0 2. PHY Loopback -95 3. MMC Counters -95 4. EEE -95 5. Hash Filter MC 0 6. Perfect Filter UC 0 7. MC Filter 0 8. UC Filter 0 9. Flow Control 0
---
Cc: Giuseppe Cavallaro <[email protected]>
Cc: Alexandre Torgue <[email protected]>
Cc: Jose Abreu <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
--- drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 7 +- .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 83 +++++++++++++++++++--- 2 files changed, 79 insertions(+), 11 deletions(-)
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h +5 -2
@@ -44,11 +44,13 @@#define XGMAC_CORE_INIT_RX 0#define XGMAC_PACKET_FILTER 0x00000008#define XGMAC_FILTER_RA BIT(31) +#define XGMAC_FILTER_HPF BIT(10)#define XGMAC_FILTER_PCF BIT(7)#define XGMAC_FILTER_PM BIT(4)#define XGMAC_FILTER_HMC BIT(2)#define XGMAC_FILTER_PR BIT(0)#define XGMAC_HASH_TABLE (x) (0x00000010 + (x) * 4) +#define XGMAC_MAX_HASH_TABLE 8#define XGMAC_RXQ_CTRL0 0x000000a0#define XGMAC_RXQEN (x) GENMASK((x) * 2 + 1, (x) * 2)#define XGMAC_RXQEN_SHIFT (x) ((x) * 2)
@@ -99,11 +101,12 @@#define XGMAC_MDIO_ADDR 0x00000200#define XGMAC_MDIO_DATA 0x00000204#define XGMAC_MDIO_C22P 0x00000220 -#define XGMAC_ADDR0_HIGH 0x00000300 +#define XGMAC_ADDRx_HIGH (x) (0x00000300 + (x) * 0x8) +#define XGMAC_ADDR_MAX 32#define XGMAC_AE BIT(31)#define XGMAC_DCS GENMASK(19, 16)#define XGMAC_DCS_SHIFT 16 -#define XGMAC_ADDR0_LOW 0x00000304 +#define XGMAC_ADDRx_LOW (x) (0x00000304 + (x) * 0x8)#define XGMAC_ARP_ADDR 0x00000c10#define XGMAC_TIMESTAMP_STATUS 0x00000d20#define XGMAC_TXTSC BIT(15)
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +74 -9
117 lines not on this page · raw message
Signature · 1 line
2.7.4
cover net: stmmac: Fixes for -net
Couple of fixes for -net. More info in commit log.
---
Cc: Giuseppe Cavallaro <[email protected]>
Cc: Alexandre Torgue <[email protected]>
Cc: Jose Abreu <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
Jose Abreu (3):
net: stmmac: xgmac: Fix XGMAC selftests
net: stmmac: Fix issues when number of Queues >= 4
net: stmmac: tc: Do not return a fragment entry
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 4 + drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 7 +- .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 87 +++++++++++++++++++--- drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 2 +- 4 files changed, 88 insertions(+), 12 deletions(-)
Signature · 7 lines
2.7.4 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
David Miller
maintainerFrom: Jose Abreu <[email protected]>
Date: Tue, 6 Aug 2019 15:16:15 +0200
Quoted 1 line
Couple of fixes for -net. More info in commit log.
Series applied, thank you.