lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 26 Mar 2021 08:36:35 +0000
From:   Joakim Zhang <qiangqing.zhang@....com>
To:     Joakim Zhang <qiangqing.zhang@....com>,
        Andrew Lunn <andrew@...n.ch>
CC:     Florian Fainelli <f.fainelli@...il.com>,
        "hkallweit1@...il.com" <hkallweit1@...il.com>,
        "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: FEC unbind/bind feature


> -----Original Message-----
> From: Joakim Zhang <qiangqing.zhang@....com>
> Sent: 2021年3月26日 16:03
> To: Andrew Lunn <andrew@...n.ch>
> Cc: Florian Fainelli <f.fainelli@...il.com>; hkallweit1@...il.com;
> netdev@...r.kernel.org
> Subject: RE: FEC unbind/bind feature
> 
> 
> Hi Andrew,
> 
> Thanks for your kindly reply!
> 
> > -----Original Message-----
> > From: Andrew Lunn <andrew@...n.ch>
> > Sent: 2021年3月25日 20:45
> > To: Joakim Zhang <qiangqing.zhang@....com>
> > Cc: Florian Fainelli <f.fainelli@...il.com>; hkallweit1@...il.com;
> > netdev@...r.kernel.org
> > Subject: Re: FEC unbind/bind feature
> >
> > On Thu, Mar 25, 2021 at 08:04:58AM +0000, Joakim Zhang wrote:
> > >
> > > Hi Andrew, Florian, Heiner
> > >
> > > You are all Ethernet MDIO bus and PHY experts, I have some questions
> > > may
> > need your help, thanks a lot in advance.
> > >
> > > For many board designs, if it has dual MAC instances, they always
> > > share one
> > MDIO bus to save PINs. Such as, i.MX6UL EVK board:
> >
> > Please wrap your lines at around 75 characters. Standard netiquette
> > rules for emails apply to all Linux lists.
> 
> Ok, thanks.
> 
> > >
> > > &fec1 {
> > > 	pinctrl-names = "default";
> > > 	pinctrl-0 = <&pinctrl_enet1>;
> > > 	phy-mode = "rmii";
> > > 	phy-handle = <&ethphy0>;
> > > 	phy-supply = <&reg_peri_3v3>;
> > > 	status = "okay";
> > > };
> > >
> > > &fec2 {
> > > 	pinctrl-names = "default";
> > > 	pinctrl-0 = <&pinctrl_enet2>;
> > > 	phy-mode = "rmii";
> > > 	phy-handle = <&ethphy1>;
> > > 	phy-supply = <&reg_peri_3v3>;
> > > 	status = "okay";
> > >
> > > 	mdio {
> > > 		#address-cells = <1>;
> > > 		#size-cells = <0>;
> > >
> > > 		ethphy0: ethernet-phy@2 {
> > > 			compatible = "ethernet-phy-id0022.1560";
> > > 			reg = <2>;
> > > 			micrel,led-mode = <1>;
> > > 			clocks = <&clks IMX6UL_CLK_ENET_REF>;
> > > 			clock-names = "rmii-ref";
> > >
> > > 		};
> > >
> > > 		ethphy1: ethernet-phy@1 {
> > > 			compatible = "ethernet-phy-id0022.1560";
> > > 			reg = <1>;
> > > 			micrel,led-mode = <1>;
> > > 			clocks = <&clks IMX6UL_CLK_ENET2_REF>;
> > > 			clock-names = "rmii-ref";
> > > 		};
> > > 	};
> > > };
> > >
> > > For FEC driver now, there is a patch from Fabio to prevent
> > > unbind/bind feature since dual FEC controllers share one MDIO bus.
> > > (https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> > > it
> > > .kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fnext%2Flinux-next.
> g
> > > i
> > t
> > > %2Fcommit%2Fdrivers%2Fnet%2Fethernet%2Ffreescale%2Ffec_main.c%3F
> h
> > %3Dne
> > >
> >
> xt-20210324%26id%3D272bb0e9e8cdc76e04baeefa0cd43019daa0841b&amp;
> > data=0
> > >
> >
> 4%7C01%7Cqiangqing.zhang%40nxp.com%7C4ac266f1ef514bd09e9c08d8ef8b
> > ee33%
> > >
> >
> 7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637522731561505308
> > %7CUnkn
> > >
> >
> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1h
> > aWwi
> > >
> >
> LCJXVCI6Mn0%3D%7C1000&amp;sdata=dstGAIhwHtLt3YW9D8p8L5cNpxIWL
> > h3wKzQmLp
> > > oGGgE%3D&amp;reserved=0) If we unbind fec2 and then fec1 can't work
> > > since MDIO bus is controlled by FEC1, FEC2 can't use it independently.
> > >
> > > My question is that if we want to implement unbind/bind feature,
> > > what need
> > we do?
> >
> > One option is you unbind FEC1 first, and then FEC2.
> 
> Yes, you are right. It should be always fine for single FEC controller, and
> unbind/bind one by one should also be fine for dual FEC controllers which share
> one MDIO bus. I test on i.MX6UL, i.MX8MM/MP.
> 
> > > It seems to abstract an independent MDIO bus for dual FEC instances.
> > > I look at the MDIO dt bindings, it seems support such case as it has
> > > "reg"
> > > property. (Documentation/devicetree/bindings/net/mdio.yaml)
> >
> > You can have fully standalone MDIO bus drivers. You generally do this
> > when the MDIO bus registers are in their own address space, which you
> > can ioremap() separately from the MAC registers. Take a look in
> drivers/net/mdio/.

One more add, yes, I am looking the drivers/net/mdio, it is better to implement standalone MDIO driver when writing the MAC driver at the beginning.
Now if I abstract MDIO driver from FEC driver, dt bindings would change, it will break all existing implementations in the kernel based on FEC driver, let them can't work.
How to compatible the legacy dt bindings? I have no idea now. At the same time, I also feel that it seems not necessary to rewrite it.

Best Regards,
Joakim Zhang
> > > From your opinions, do you think it is necessary to improve it?
> >
> > What is you use case for unbinding/binding the FEC?
> 
> Users may want to unbind FEC driver, and then bind to FEC UIO driver, such as
> for DPDK use case to improve the throughput.
> 
> Best Regards,
> Joakim Zhang
> >      Andrew

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ