[PATCH 1/2] net: phy: Make phy_interface_is_sgmii a switch statement

Nishanth Menon nm at ti.com
Fri Apr 14 00:51:32 CEST 2023


On 23:22-20230413, Marek Behún wrote:
> On Thu, Apr 13, 2023 at 02:02:34PM -0500, Nishanth Menon wrote:
> > On 20:56-20230413, Marek Behún wrote:
> > > On Thu, Apr 13, 2023 at 01:07:12PM -0500, Nishanth Menon wrote:
> > > > Recent commit 75d28899e3e9 ("net: phy: Synchronize PHY interface modes
> > > > with Linux") reordered the enum definitions. This caused the range of
> > > > enums that this api was checking to go bad.
> > > > 
> > > > While it is possible for the phy drivers to practically use the enum's
> > > > directly, drivers such as dp83867 use this helper to manage the
> > > > configuration of the phy correctly.
> > > > 
> > > > Reported-by: Tom Rini <trini at konsulko.com>
> > > > Signed-off-by: Nishanth Menon <nm at ti.com>
> > > > ---
> > > >  include/phy.h | 12 ++++++++++--
> > > >  1 file changed, 10 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/include/phy.h b/include/phy.h
> > > > index a837fed72352..1c4dc23bc5ba 100644
> > > > --- a/include/phy.h
> > > > +++ b/include/phy.h
> > > > @@ -373,8 +373,16 @@ static inline bool phy_interface_is_rgmii(struct phy_device *phydev)
> > > >   */
> > > >  static inline bool phy_interface_is_sgmii(struct phy_device *phydev)
> > > >  {
> > > > -	return phydev->interface >= PHY_INTERFACE_MODE_SGMII &&
> > > > -		phydev->interface <= PHY_INTERFACE_MODE_QSGMII;
> > > > +	switch (phydev->interface) {
> > > > +	case PHY_INTERFACE_MODE_SGMII:
> > > > +	case PHY_INTERFACE_MODE_QUSGMII:
> > > > +	case PHY_INTERFACE_MODE_USXGMII:
> > > > +	case PHY_INTERFACE_MODE_QSGMII:
> > > > +		return 1;
> > > > +	default:
> > > > +		fallthrough;
> > > 
> > > Why not just put the return 0; statement here instead of fallthrough and
> > > drop it from after the switch statement?
> > 
> > Just dropping the default also will work, though it does leave something
> > un-handled. handling the default on the other hand allows for additional
> > code (meh?) to be added in default.. But really what? I'd rather drop
> > the default and fall through to save on a couple of lines.. if that
> > is'nt creating confusion..
> 
> You can't drop the default if you use a switch statement and not
> enumerating all enumerator entries.
> 
> So you either have to use
> 
> 	switch (x) {
> 	case A:
> 		return 1;
> 	case B:
> 		return 2;
> 	default:
> 		return 3;
> 	}
> 
> or
> 
> 	switch (x) {
> 	case A:
> 		return 1;
> 	case B:
> 		return 2;
> 	default:
> 		break; /* or fallthourgh */
> 	}
> 	return 3;
> 
> The first one is shorter one line. It is also used in this way already.
> 
> IMO it makes more sense.
> 
> But keep in mind, this is just a nit-pick. I don't actually care that
> much. I just think it makes more sense this way. If all possibilities
> are handled by return statements inside the switch, you don't need to
> have another return in top level of the function.

Sigh, remnants of a few years of misra misery :( - yep, dropping..

new rev incoming..

> 
> Look for example at Linux' include/linux/phy.h function phy_modes():
>   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/phy.h?h=v6.3-rc6#n216
> 

-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D


More information about the U-Boot mailing list