public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Larry Chiu <larry.chiu@realtek.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Justin Lai <justinlai0215@realtek.com>,
	"kuba@kernel.org" <kuba@kernel.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"edumazet@google.com" <edumazet@google.com>,
	"pabeni@redhat.com" <pabeni@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"jiri@resnulli.us" <jiri@resnulli.us>,
	"horms@kernel.org" <horms@kernel.org>,
	Ping-Ke Shih <pkshih@realtek.com>
Subject: RE: [PATCH net-next v19 01/13] rtase: Add pci table supported in this module
Date: Wed, 22 May 2024 14:47:50 +0000	[thread overview]
Message-ID: <5270598ca3fc4712ac46600fcc844d73@realtek.com> (raw)
In-Reply-To: <7aab03ba-d8ed-4c9c-8bfd-b2bbed0a922d@lunn.ch>

 
> On Wed, May 22, 2024 at 04:43:11AM +0000, Larry Chiu wrote:
> >
> > > On Tue, May 21, 2024 at 06:20:04AM +0000, Larry Chiu wrote:
> > > >
> > > > >> + *  Below is a simplified block diagram of the chip and its relevant
> > > interfaces.
> > > > >> + *
> > > > >> + *               *************************
> > > > >> + *               *                       *
> > > > >> + *               *  CPU network device   *
> > > > >> + *               *                       *
> > > > >> + *               *   +-------------+     *
> > > > >> + *               *   |  PCIE Host  |     *
> > > > >> + *               ***********++************
> > > > >> + *                          ||
> > > > >> + *                         PCIE
> > > > >> + *                          ||
> > > > >> + *      ********************++**********************
> > > > >> + *      *            | PCIE Endpoint |             *
> > > > >> + *      *            +---------------+             *
> > > > >> + *      *                | GMAC |                  *
> > > > >> + *      *                +--++--+  Realtek         *
> > > > >> + *      *                   ||     RTL90xx Series  *
> > > > >> + *      *                   ||                     *
> > > > >> + *      *     +-------------++----------------+    *
> > > > >> + *      *     |           | MAC |             |    *
> > > > >> + *      *     |           +-----+             |    *
> > > > >> + *      *     |                               |    *
> > > > >> + *      *     |     Ethernet Switch Core      |    *
> > > > >> + *      *     |                               |    *
> > > > >> + *      *     |   +-----+           +-----+   |    *
> > > > >> + *      *     |   | MAC |...........| MAC |   |    *
> > > > >> + *      *     +---+-----+-----------+-----+---+    *
> > > > >> + *      *         | PHY |...........| PHY |        *
> > > > >> + *      *         +--++-+           +--++-+        *
> > > > >> + *      *************||****************||***********
> > > > >> + *
> > > > >> + *  The block of the Realtek RTL90xx series is our entire chip
> > > > >> + architecture,
> > > > >> + *  the GMAC is connected to the switch core, and there is no PHY
> in
> > > between.
> > > > >
> > > > >Given this architecture, this driver cannot be used unless there is a
> switch
> > > > >driver as well. This driver is nearly ready to be merged. So what are
> your
> > > > >plans for the switch driver? Do you have a first version you can post?
> That
> > > > >will reassure us you do plan to release a switch driver, and not use a
> SDK in
> > > > >userspace.
> > > > >
> > > > >        Andrew
> > > >
> > > > Hi Andrew,
> > > > This GMAC is configured after the switch is boot-up and does not
> require a
> > > > switch driver to work.
> > >
> > > But if you cannot configure the switch, it is pointless passing the switch
> > > packets. The Linux architecture is that Linux needs to be able to control
> the
> > > switch somehow. There needs to be a driver with the switchdev API on
> its
> > > upper side which connects it to the Linux network stack. Ideally the
> lower
> > > side of this driver can directly write switch registers. Alternatively it can
> make
> > > some sort of RPC to firmware which configures the switch.
> > >
> > > Before committing this MAC driver, we will want to be convinced there is
> a
> > > switchdev driver for the switch.
> > >
> > >         Andrew
> >
> >
> > I know what you mean.
> > But actually this GMAC works like a NIC connected to an Ethernet Switch
> not a
> > management port, its packets communicating with other ports.
> 
> Linux has two different models for switches.
> 
> The first is switchdev. Linux has a netdev per port of the switch, and
> use you those netdev's to manage the switch, just as if they are
> individual NICs.
> 
> The second is very, very old, since the beginning of Ethernet
> switches. The cable comes out of the machine and plugs into the
> switch. Linux has no idea there is a switch there, the switch is just
> part of the magic if networking. This also means Linux cannot manage
> the switch, it is a different box, a different administration domain.
> 
> The second model does not really work here. The switch is not in
> another box at the end of a cable. It is integrated into the SoC!
> 
> > The PCIe Endpoint is a multi-function device, the other function is used to
> > control the switch register, we are still working on where to put this driver
> in
> > Linux. We thought it should be separated into different device drivers, or
> you
> > think we should register two pcie functions in this driver.
> 
> Look at the architecture of other switch drivers. There are two broad
> categories.
> 
> 1) Pure switchdev drivers, e.g. mellanox, sparx5, prestera. There is
> one driver which provides both the netdev interfaces per port, and
> implements the switchdev API for managing the switch.
> 
> 2) DSA + switchdev, e.g. mv88e6xxx, rtl8365, starfigher2, etc. These
> use a conventional NIC to provide the conduit to pass packets to the
> switch. These packets have additional headers, added by a tag driver,
> indicating which port a packet should go out. And there is a switch
> driver, which makes use of the DSA framework to manage the switch. DSA
> provides the netdev per port.
> 
> This is actually something i ask you about with version 1 of the
> patches. I've forget what your answer was, and we concentrated on
> getting your code up to mainline quality. Now it is time to go back to
> that question.
> 
> How do you control where a packet passed over this GMAC NIC goes
> within the switch? Is there an additional header? Are their fields in
> the DMA descriptor?
> 
> If your hardware is DSA like, you can write another driver which binds
> to a different PCI function. If however you use DMA descriptors, you
> need a pure switchdev driver, one driver which binds to multiple PCI
> functions.
> 
>         Andrew

Thank you very much for your clear reply.

As I mentioned, it works like a NIC connected to an Ethernet Switch, not a
Management port.
The packets from this GMAC are routed according to switch rules such as
ACL, L2, .... and it does not control packet forwarding through any special
header or descriptor. In this case, we have our switch tool which is used 
for provisioning these rules in advance. Once the switch boots up, the 
rules will be configured into the switch after the initialization. With this 
driver and the provisioning by our switch tool, it can make switch forward 
the frame as what you want. So it's not a DSA like device.

In another case, we do have other function which is used for controlling 
the switch registers instead of sending packets from the switch ports.
At the meanwhile, we are investigating how to implement the function to
Integrate into switchdev.

  reply	other threads:[~2024-05-22 14:48 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-17  7:52 [PATCH net-next v19 00/13] Add Realtek automotive PCIe driver Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 01/13] rtase: Add pci table supported in this module Justin Lai
2024-05-17 13:49   ` Andrew Lunn
2024-05-21  6:20     ` Larry Chiu
2024-05-21 12:47       ` Andrew Lunn
2024-05-22  4:43         ` Larry Chiu
2024-05-22 12:37           ` Andrew Lunn
2024-05-22 14:47             ` Larry Chiu [this message]
2024-05-22 15:53               ` Andrew Lunn
2024-05-23  6:29                 ` Larry Chiu
2024-05-23 13:19                   ` Andrew Lunn
2024-05-24  3:03                     ` Larry Chiu
2024-05-25 22:44                       ` Andrew Lunn
2024-05-17  7:52 ` [PATCH net-next v19 02/13] rtase: Implement the .ndo_open function Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 03/13] rtase: Implement the rtase_down function Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 04/13] rtase: Implement the interrupt routine and rtase_poll Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 05/13] rtase: Implement hardware configuration function Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 06/13] rtase: Implement .ndo_start_xmit function Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 07/13] rtase: Implement a function to receive packets Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 08/13] rtase: Implement net_device_ops Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 09/13] rtase: Implement pci_driver suspend and resume function Justin Lai
2024-05-17  7:52 ` [PATCH net-next v19 10/13] rtase: Implement ethtool function Justin Lai
2024-05-17 13:32   ` Andrew Lunn
2024-05-17  7:53 ` [PATCH net-next v19 11/13] rtase: Add a Makefile in the rtase folder Justin Lai
2024-05-17 13:33   ` Andrew Lunn
2024-05-17  7:53 ` [PATCH net-next v19 12/13] realtek: Update the Makefile and Kconfig in the realtek folder Justin Lai
2024-05-17 13:34   ` Andrew Lunn
2024-05-17  7:53 ` [PATCH net-next v19 13/13] MAINTAINERS: Add the rtase ethernet driver entry Justin Lai
2024-05-17 13:40   ` Andrew Lunn

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=5270598ca3fc4712ac46600fcc844d73@realtek.com \
    --to=larry.chiu@realtek.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=justinlai0215@realtek.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pkshih@realtek.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