mediatek: sync and patches add support for several boards
[openwrt.git] / target / linux / mediatek / patches-4.4 / 0077-net-mediatek-do-not-set-the-QID-field-in-the-TX-DMA-.patch
1 From 6a6f264e82649f8d9933271f2e9b08af94daad50 Mon Sep 17 00:00:00 2001
2 From: John Crispin <blogic@openwrt.org>
3 Date: Thu, 7 Apr 2016 17:36:23 +0200
4 Subject: [PATCH 77/90] net: mediatek: do not set the QID field in the TX DMA
5  descriptors
6
7 The QID field gets set to the mac id. This made the DMA linked list queue
8 the traffic of each MAC on a different internal queue. However during long
9 term testing we found that this will cause traffic stalls as the multi
10 queue setup requires a more complete initialisation which is not part of
11 the upstream driver yet.
12
13 This patch removes the code setting the QID field, resulting in all
14 traffic ending up in queue 0 which works without any special setup.
15
16 Signed-off-by: John Crispin <blogic@openwrt.org>
17 ---
18  drivers/net/ethernet/mediatek/mtk_eth_soc.c |    3 +--
19  1 file changed, 1 insertion(+), 2 deletions(-)
20
21 diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
22 index bbcd607..bab5d45 100644
23 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
24 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
25 @@ -603,8 +603,7 @@ static int mtk_tx_map(struct sk_buff *skb, struct net_device *dev,
26                         WRITE_ONCE(txd->txd1, mapped_addr);
27                         WRITE_ONCE(txd->txd3, (TX_DMA_SWC |
28                                                TX_DMA_PLEN0(frag_map_size) |
29 -                                              last_frag * TX_DMA_LS0) |
30 -                                              mac->id);
31 +                                              last_frag * TX_DMA_LS0));
32                         WRITE_ONCE(txd->txd4, 0);
33  
34                         tx_buf->skb = (struct sk_buff *)MTK_DMA_DUMMY_DESC;
35 -- 
36 1.7.10.4
37