Re: [PATCH v2 1/2] net: macb: Clean up macb_validate
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
Date: 2021-10-14 16:34:40
On Tue, Oct 12, 2021 at 10:33:04AM +0200, Antoine Tenart wrote:
Hello Sean, Quoting Sean Anderson (2021-10-11 18:55:16)quoted
As the number of interfaces grows, the number of if statements grows ever more unweildy. Clean everything up a bit by using a switch statement. No functional change intended.I'm not 100% convinced this makes macb_validate more readable: there are lots of conditions, and jumps, in the switch. Maybe you could try a mixed approach; keeping the invalid modes checks (bitmap_zero) at the beginning and once we know the mode is valid using a switch statement. That might make it easier to read as this should remove lots of conditionals. (We'll still have the one/_NA checks though).
Some of this could be improved if we add the ability for a MAC to specify the phy_interface_t modes that it supports as a bitmap before calling phylink_create() - then we can have phylink check that the mode is supported itself prior to calling the validate handler. You can find some patches that add the "supported_interfaces" masks in git.armlinux.org.uk/linux-arm.git net-queue and we could add to phylink_validate(): if (!phy_interface_empty(pl->config->supported_interfaces) && !test_bit(state->interface, pl->config->supported_interfaces)) return -EINVAL; which should go a long way to simplifying a lot of these validation implementations. Any thoughts on that? -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!