From: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Anthony Liguori" <aliguori@amazon.com>,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
"Alistair Francis" <alistair.francis@xilinx.com>,
"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: Mon, 13 Jan 2014 08:00:37 +1000 [thread overview]
Message-ID: <CAEgOgz7Sh-Y3aFAp7PjxEbXqV952mRHX-4x7UitnppK6E2CrBg@mail.gmail.com> (raw)
In-Reply-To: <20140112135934.GB17594@zapo>
On Sun, Jan 12, 2014 at 11:59 PM, Edgar E. Iglesias
<edgar.iglesias@gmail.com> wrote:
> 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.
Yeh, so I think that really translates to do option 3 and go to option
2 later if needed. So option 3 looks to be the winning plan for the
first series.
> Or possibly nr 2, not sure if I understood
> that one correctly though.
>
Option 2 is is the hardest but does solve your problem of either MAC
or PHY connecting to a network and with a more accurate data flow
model. I think you want to do 3 first to get there. So we can plan 3
with consideration for 2.
Regards,
Peter
> Cheers,
> Edgar
>
next prev parent reply other threads:[~2014-01-12 22: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
2014-01-12 22:00 ` Peter Crosthwaite [this message]
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=CAEgOgz7Sh-Y3aFAp7PjxEbXqV952mRHX-4x7UitnppK6E2CrBg@mail.gmail.com \
--to=peter.crosthwaite@xilinx.com \
--cc=afaerber@suse.de \
--cc=aliguori@amazon.com \
--cc=alistair.francis@xilinx.com \
--cc=b.galvani@gmail.com \
--cc=edgar.iglesias@gmail.com \
--cc=grant.likely@linaro.org \
--cc=lig.fnst@cn.fujitsu.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 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).