All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Anthony Liguori" <aliguori@amazon.com>,
	"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
	"Beniamino Galvani" <b.galvani@gmail.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Grant Likely" <grant.likely@linaro.org>,
	"Andreas Färber" <afaerber@suse.de>,
	"Li Guang" <lig.fnst@cn.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] hw/net: add support for Allwinner EMAC Fast Ethernet controller
Date: Sun, 12 Jan 2014 23:59:34 +1000	[thread overview]
Message-ID: <20140112135934.GB17594@zapo> (raw)
In-Reply-To: <CAEgOgz7w2WCwVr5wBns14Gwwic3xZnsQ1tJmf_JF=LKHde64jA@mail.gmail.com>

On Sat, Jan 11, 2014 at 08:48:12AM +1000, Peter Crosthwaite wrote:
> On Mon, Jan 6, 2014 at 4:12 PM, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > On Mon, Jan 06, 2014 at 01:46:54PM +1000, Peter Crosthwaite wrote:
> >> On Mon, Jan 6, 2014 at 1:27 PM, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> >> > On Thu, Jan 02, 2014 at 08:25:10PM +1000, Peter Crosthwaite wrote:
> >> >> Hi Beniamino,
> >> >>
> >> >> On Thu, Jan 2, 2014 at 7:18 PM, Beniamino Galvani <b.galvani@gmail.com> wrote:
> >> >> > This patch adds support for the Fast Ethernet MAC found on Allwinner
> >> >> > SoCs, together with a basic emulation of Realtek RTL8201CP PHY.
> >> >> >
> >> >>
> >> >> More a comment for net in general, but I think sooner or later we need
> >> >> to move towards a split between phy and mac on the device level.
> >> >> continuing the phy-within-mac philosophy is going to make the
> >> >> socification efforts awkward. Are MII and friends a busses (as in
> >> >> TYPE_BUS) in their own right, and connection of mac and phy has to
> >> >> happen on the board level?
> >> >
> >> > I see PHY and MAC split as advantageous because it allows code reuse and
> >> > better testing.  The main thing I'd like to see is PHY device tests
> >> > using tests/libqtest.h.
> >> >
> >> > If someone wants to implement it, great.  It would make it easier to add
> >> > more NIC models in the future.
> >> >
> >> > Regarding SOCification and busses, I'm not sure.  Is it okay to just say
> >> > a NIC has-a PHY (i.e. composition)?
> >> >
> >>
> >> Generally speaking, in the (ARM) SoCification the MAC is part of the
> >> SoC which in the latest styling guidelines is a composite device. This
> >> composite is supposed to reflect the self contained SoC product which
> >> the PHY is usually not a part of. So we have two opposing compositions
> >> here:
> >>
> >> NIC = MAC + PHY
> >> SOC = CPUs + MAC + ...
> >>
> >> MAC can't be in both. So for SoCs the NIC concept needs to abandoned.
> >> After all the expansion of NIC as "Network Interface Card" is a little
> >> bit PCish. Your average SoC networking solution has no such "card".
> >> Just an on chip MAC (same pacakge/die as CPU etc) connecting to a PHY
> >> via PCB traces.
> >>
> >> So I think long term, MII has to be a TYPE_BUS that is visible on the
> >> top level SoC device. Self contained NICs (as we know them today) are
> >> then also implementable as container devices (of MAC and PHY) that use
> >> this bus internally (in much the same way the SoC boards would attach
> >> external PHY to SoC).
> >
> > Okay, that makes sense.  Given the amount of emulated hardware in QEMU
> > today, I think it would be okay to simply add new MAC/PHYs while still
> > supporting the NICs of old.  If someone is enthusiastic about
> > refactoring and testing existing NICs then great.  But I think it's more
> > pragmatic to simply start working with a split MAC/PHY where that is
> > beneficial.
> >
> 
> Alright,
> 
> So lets make some plans. There is devil in the detail here. There was
> a previous attempt to do something similar by Grant early last year so
> cc as FYI.
> 
> So the main question is whether or not this new interface is just for
> MDIO or is the full MII interface (both MDIO and packet data).
> 
> My inclination is the latter, we want a new proper QOM bus that is
> both. What this would mean, is that these MAC-only devices wont be net
> devices at all. the -net args are instead applied to the PHY. This
> makes the most sense to me as its the phy that actually has copper
> connection to the external network, not MAC.
> 
> MAC <---- TYPE_MII_BUS ----> PHY <-----net layer ------> external
> network: "-net foo,bar,baz"

I don't really agree with this. You can do ethernet without a PHY,
it is in fact fairly common in the embedded switch space. You can also
have a single MDIO iface that is completely separate from any MAC take
care of many PHYs.

IMO, the MDIO bus should be separate from the data path.


> Another approach is to make both net devices in their own right. Phy
> has two net-layer-managed attachments, one for external network, and
> one point-to-point for the MII connecting to MAC. The MDIO bus is then
> a side channel which may or may not be QOMified (depending on effort
> levels). So you can still connect a standalone MAC to an external
> network, assuming the guest can handle no PHY (may in reality have
> limited use).
> 
> MAC <---- net layer --------> PHY <-----net layer ------> external network
>     <---- TYPE_MDIO_BUS ---->
> 
> OR:
> 
> MAC <---- net layer --------> external network
> 
> 
> The third approach (which is closest to current implementation) is to
> only have the phy do MDIO and still connect the MAC straight to an
> external network:
> 
> MAC <---- net layer --------> external network
>      \
>       <-- TYPE_MDIO_BUS ----> PHY
> 
> I dont like this though, as its a little mismatched to real hw.
> Although it may be a good stepping stone to approaches 1 or 2.

I'd go for this third one and possibly do something about the
data path later if needed. Or possibly nr 2, not sure if I understood
that one correctly though.

Cheers,
Edgar

  reply	other threads:[~2014-01-12 14:00 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-02  9:18 [Qemu-devel] [PATCH 0/2] hw/arm: add ethernet support to Allwinner A10 Beniamino Galvani
2014-01-02  9:18 ` [Qemu-devel] [PATCH 1/2] hw/net: add support for Allwinner EMAC Fast Ethernet controller Beniamino Galvani
2014-01-02 10:25   ` Peter Crosthwaite
2014-01-02 14:58     ` Beniamino Galvani
2014-01-03  1:26       ` Peter Crosthwaite
2014-01-03 17:42         ` Beniamino Galvani
2014-01-06  3:27     ` Stefan Hajnoczi
2014-01-06  3:46       ` Peter Crosthwaite
2014-01-06  6:12         ` Stefan Hajnoczi
2014-01-10 21:48           ` Beniamino Galvani
2014-01-10 22:16             ` Peter Crosthwaite
2014-01-10 22:48           ` Peter Crosthwaite
2014-01-12 13:59             ` Edgar E. Iglesias [this message]
2014-01-12 22:00               ` Peter Crosthwaite
2014-01-13  4:00                 ` Stefan Hajnoczi
2014-01-04  0:56   ` Peter Crosthwaite
2014-01-04  9:36     ` Beniamino Galvani
2014-01-02  9:18 ` [Qemu-devel] [PATCH 2/2] hw/arm/allwinner-a10: initialize EMAC Beniamino Galvani
2014-01-02 10:20   ` Peter Crosthwaite
2014-01-02 10:21     ` Peter Crosthwaite
2014-01-02 17:19     ` Beniamino Galvani
2014-01-02 22:32       ` Peter Crosthwaite
2014-01-06  0:49   ` Li Guang
2014-01-06 13:56     ` Beniamino Galvani
2014-01-08  7:27       ` Li Guang
2014-01-08  8:14         ` Peter Crosthwaite

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=20140112135934.GB17594@zapo \
    --to=edgar.iglesias@gmail.com \
    --cc=afaerber@suse.de \
    --cc=aliguori@amazon.com \
    --cc=b.galvani@gmail.com \
    --cc=grant.likely@linaro.org \
    --cc=lig.fnst@cn.fujitsu.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.