[LEDE-DEV] Transmit timeouts with mtk_eth_soc and MT7621

Kristian Evensen kristian.evensen at gmail.com
Sat Aug 26 03:38:47 PDT 2017


Hi,

On Sat, Aug 26, 2017 at 7:43 AM, Mingyu Li <igvtee at gmail.com> wrote:
> Hi.
>
> i check the code again. found xmit_more can cause tx timeout. you can
> reference this.
> https://www.mail-archive.com/netdev@vger.kernel.org/msg123334.html
> so the patch should be like this. edit mtk_eth_soc.c
>
>         tx_num = fe_cal_txd_req(skb);
>         if (unlikely(fe_empty_txd(ring) <= tx_num)) {
> +                if (skb->xmit_more)
> +                        fe_reg_w32(ring->tx_next_idx, FE_REG_TX_CTX_IDX0);
>                 netif_stop_queue(dev);
>                 netif_err(priv, tx_queued, dev,
>                           "Tx Ring full when queue awake!\n");
>
> but i am not sure. maybe the pause frame cause the problem.

Thanks for the patch. I tested it, but I unfortunately still see the
error. I also added a print-statement inside the conditional and can
see that the condition is never hit. I also don't see the "Tx Ring
full"-message. One difference which I noticed now though, is that I
don't see the bursty bandwidth pattern I described earlier (32, 0, 32,
0, ...). With your patch, it is always 32, 0, crash.

-Kristian



More information about the Lede-dev mailing list