Re: lantiq_xrx200: Ethernet MAC with multiple TX queues
From: Vladimir Oltean <olteanv@gmail.com>
Date: 2021-03-24 22:22:11
Hi Florian, On Wed, Mar 24, 2021 at 02:09:02PM -0700, Florian Fainelli wrote:
On 3/24/2021 1:13 PM, Vladimir Oltean wrote:quoted
Hi Martin, On Wed, Mar 24, 2021 at 09:04:16PM +0100, Martin Blumenstingl wrote:quoted
Hello, the PMAC (Ethernet MAC) IP built into the Lantiq xRX200 SoCs has support for multiple (TX) queues. This MAC is connected to the SoC's built-in switch IP (called GSWIP). Right now the lantiq_xrx200 driver only uses one TX and one RX queue. The vendor driver (which mixes DSA/switch and MAC functionality in one driver) uses the following approach: - eth0 ("lan") uses the first TX queue - eth1 ("wan") uses the second TX queue With the current (mainline) lantiq_xrx200 driver some users are able to fill up the first (and only) queue. This is why I am thinking about adding support for the second queue to the lantiq_xrx200 driver. My main question is: how do I do it properly? Initializing the second TX queue seems simple (calling netif_tx_napi_add for a second time). But how do I choose the "right" TX queue in xrx200_start_xmit then?If you use DSA you will have a DSA slave network device which will be calling into dev_queue_xmit() into the DSA master which will be the xrx200 driver, so it's fairly simple for you to implement a queue selection within the xrx200 tagger for instance. You can take a look at how net/dsa/tag_brcm.c and drivers/net/ethernet/broadcom/bcmsysport.c work as far as mapping queues from the DSA slave network device queue/port number into a queue number for the DSA master.
What are the benefits of mapping packets to TX queues of the DSA master from the DSA layer?