From: Greg Ungerer <gerg@kernel.org>
To: John Crispin <john@phrozen.org>
Cc: "René van Dorst" <opensource@vdorst.com>,
"Bjørn Mork" <bjorn@mork.no>,
sean.wang@mediatek.com, andrew@lunn.ch,
vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com,
netdev@vger.kernel.org, neil@brown.name
Subject: Re: [PATCH 0/3]: net: dsa: mt7530: support MT7530 in the MT7621 SoC
Date: Fri, 7 Dec 2018 17:12:59 +1000 [thread overview]
Message-ID: <37dba8c4-5af2-9582-6c57-c044c7a87df6@kernel.org> (raw)
In-Reply-To: <3c07dbef-8e7c-8e4f-e13f-e40099e55570@phrozen.org>
Hi John,
On 4/12/18 12:02 am, John Crispin wrote:
> On 03/12/2018 15:00, René van Dorst wrote:
>> Quoting Bjørn Mork <bjorn@mork.no>:
>>> Greg Ungerer <gerg@kernel.org> writes:
>>>
>>>> The following change helped alot, but I still get some problems under
>>>> sustained load and some types of port setups. Still trying to figure
>>>> out what exactly is going on.
>>>>
>>>> --- a/linux/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>>>> +++ b/linux/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>>>> @@ -1750,8 +1750,8 @@ static irqreturn_t mtk_handle_irq_rx(int irq, void *_eth)
>>>> if (likely(napi_schedule_prep(ð->rx_napi))) {
>>>> __napi_schedule(ð->rx_napi);
>>>> - mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
>>>> }
>>>> + mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
>>>> return IRQ_HANDLED;
>>>> }
>>>> @@ -1762,11 +1762,53 @@ static irqreturn_t mtk_handle_irq_tx(int irq, void *_eth)
>>>> if (likely(napi_schedule_prep(ð->tx_napi))) {
>>>> __napi_schedule(ð->tx_napi);
>>>> - mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
>>>> }
>>>> + mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
>>>> return IRQ_HANDLED;
>>>> }
>>>
>>> Yes, sorry I didn't point to that as well. Just to be clear: I have no
>>> clue how this thing is actually wired up, or if you could use three
>>> interrupts on the MT7621 too. I just messed with it until I got
>>> something to work, based on Renés original idea and code.
>>
>> My idea is a just a copy of mtk_handle_irq_{rx,tx} see [1]
>> You probably want to look at the staging driver or Ubiquity source with a 3.10.x kernel [2] or padavan with 3.4.x kernel [3].
>> AFAIK mt7621 only has 1 IRQ for ethernet part.
>
> correct there is only 1 single IRQ on mt7621
One of the main differences I see between the mainline mtk_eth_soc.c
and the older mediatek/openwrt driver is that the older driver uses
the PDMA module for TX transmission, while the mainline uses the
QDMA module. I have no documentation on the what the differences
are between the 2 (or why there is even 2 DMA engines in there?).
Can you shed any light on that?
I did a quick and dirty recode of the QDMA transmission parts of
the mainline driver code to use the PDMA engine instead. The most
immediate result is that it suffers the same IP header checksum
problem on TX packets :-( But it also still suffers from the
same occasional TX watchdog timeout I see with only the mainline
driver and basic support of MT7621.
What I see with the TX watchdog timeouts is that there is valid
TX descriptors, but the frame engine is just not processing them.
It seems to be just sitting there idle. The CTX and DTX registers
look valid and consistent with the local last_free/next_free
pointers.
Regards
Greg
next prev parent reply other threads:[~2018-12-07 7:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-30 7:57 [PATCH 0/3]: net: dsa: mt7530: support MT7530 in the MT7621 SoC gerg
2018-11-30 7:57 ` [PATCH 1/3] net: dsa: mt7530: make clock/regulator setup optional gerg
2018-11-30 7:57 ` [PATCH 2/3] net: dsa: mt7530: optional setting CPU field in MFC register gerg
2018-11-30 7:57 ` [PATCH 3/3] dt-bindings: net: dsa: add new bindings MT7530 gerg
2018-11-30 17:41 ` Florian Fainelli
2018-12-03 7:03 ` Greg Ungerer
2018-12-03 13:19 ` Andrew Lunn
2018-11-30 11:27 ` [PATCH 0/3]: net: dsa: mt7530: support MT7530 in the MT7621 SoC René van Dorst
2018-11-30 13:25 ` Greg Ungerer
2018-11-30 11:30 ` René van Dorst
2018-11-30 12:16 ` Bjørn Mork
2018-11-30 13:41 ` Greg Ungerer
2018-11-30 13:42 ` Andrew Lunn
2018-12-03 7:20 ` Greg Ungerer
2018-12-03 11:34 ` Bjørn Mork
2018-12-03 14:00 ` René van Dorst
2018-12-03 14:02 ` John Crispin
2018-12-07 7:12 ` Greg Ungerer [this message]
2018-12-04 7:23 ` Greg Ungerer
2018-12-11 5:02 ` NeilBrown
2018-12-11 8:28 ` Bjørn Mork
2018-12-16 22:08 ` NeilBrown
2018-12-16 22:14 ` David Miller
2018-12-16 23:19 ` NeilBrown
2018-12-17 0:00 ` Florian Fainelli
2018-12-17 7:11 ` NeilBrown
2018-11-30 13:33 ` Andrew Lunn
2018-12-03 6:47 ` Greg Ungerer
2018-11-30 13:37 ` Andrew Lunn
2018-11-30 13:45 ` Greg Ungerer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=37dba8c4-5af2-9582-6c57-c044c7a87df6@kernel.org \
--to=gerg@kernel.org \
--cc=andrew@lunn.ch \
--cc=bjorn@mork.no \
--cc=f.fainelli@gmail.com \
--cc=john@phrozen.org \
--cc=neil@brown.name \
--cc=netdev@vger.kernel.org \
--cc=opensource@vdorst.com \
--cc=sean.wang@mediatek.com \
--cc=vivien.didelot@savoirfairelinux.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).