| From d6b466e3a94fc6ca0da53f02e4d8d844d65e1c5b Mon Sep 17 00:00:00 2001 |
| From: Jose Abreu <jose.abreu@synopsys.com> |
| Date: Wed, 30 Jan 2019 15:54:20 +0100 |
| Subject: net: stmmac: Send TSO packets always from Queue 0 |
| |
| [ Upstream commit c5acdbee22a1b200dde07effd26fd1f649e9ab8a ] |
| |
| The number of TSO enabled channels in HW can be different than the |
| number of total channels. There is no way to determined, at runtime, the |
| number of TSO capable channels and its safe to assume that if TSO is |
| enabled then at least channel 0 will be TSO capable. |
| |
| Lets always send TSO packets from Queue 0. |
| |
| Signed-off-by: Jose Abreu <joabreu@synopsys.com> |
| Cc: Joao Pinto <jpinto@synopsys.com> |
| Cc: David S. Miller <davem@davemloft.net> |
| Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com> |
| Cc: Alexandre Torgue <alexandre.torgue@st.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 ++++++++++- |
| 1 file changed, 10 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| index 123b74e25ed8..57c56e295705 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -3030,8 +3030,17 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) |
| |
| /* Manage oversized TCP frames for GMAC4 device */ |
| if (skb_is_gso(skb) && priv->tso) { |
| - if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) |
| + if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) { |
| + /* |
| + * There is no way to determine the number of TSO |
| + * capable Queues. Let's use always the Queue 0 |
| + * because if TSO is supported then at least this |
| + * one will be capable. |
| + */ |
| + skb_set_queue_mapping(skb, 0); |
| + |
| return stmmac_tso_xmit(skb, dev); |
| + } |
| } |
| |
| if (unlikely(stmmac_tx_avail(priv, queue) < nfrags + 1)) { |
| -- |
| 2.19.1 |
| |