* [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates
@ 2021-11-17 16:45 Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 1/3] net: ag71xx: populate supported_interfaces member Russell King
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Russell King (Oracle) @ 2021-11-17 16:45 UTC (permalink / raw)
To: Chris Snook, Oleksij Rempel; +Cc: David S. Miller, Jakub Kicinski, netdev
Hi,
This series converts ag71xx to fill in the supported_interfaces member
of phylink_config, cleans up the validate() implementation, and then
converts to phylink_generic_validate().
The question over the port linkmode restriction has been answered by
Oleksij - there is no reason for this restriction, so we can go the
whole hog with this conversion. Thanks!
drivers/net/ethernet/atheros/ag71xx.c | 96 +++++++++++------------------------
1 file changed, 29 insertions(+), 67 deletions(-)
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next 1/3] net: ag71xx: populate supported_interfaces member
2021-11-17 16:45 [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates Russell King (Oracle)
@ 2021-11-17 16:46 ` Russell King
2021-11-17 16:46 ` [PATCH net-next 2/3] net: ag71xx: remove interface checks in ag71xx_mac_validate() Russell King (Oracle)
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Russell King @ 2021-11-17 16:46 UTC (permalink / raw)
To: Chris Snook, Oleksij Rempel; +Cc: David S. Miller, Jakub Kicinski, netdev
Populate the phy_interface_t bitmap for the Atheros ag71xx driver with
interfaces modes supported by the MAC.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/atheros/ag71xx.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/drivers/net/ethernet/atheros/ag71xx.c b/drivers/net/ethernet/atheros/ag71xx.c
index 88d2ab748399..8d55ce266aa3 100644
--- a/drivers/net/ethernet/atheros/ag71xx.c
+++ b/drivers/net/ethernet/atheros/ag71xx.c
@@ -1178,6 +1178,32 @@ static int ag71xx_phylink_setup(struct ag71xx *ag)
ag->phylink_config.dev = &ag->ndev->dev;
ag->phylink_config.type = PHYLINK_NETDEV;
+ if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 0) ||
+ ag71xx_is(ag, AR9340) ||
+ ag71xx_is(ag, QCA9530) ||
+ (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
+ __set_bit(PHY_INTERFACE_MODE_MII,
+ ag->phylink_config.supported_interfaces);
+
+ if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 1) ||
+ (ag71xx_is(ag, AR9340) && ag->mac_idx == 1) ||
+ (ag71xx_is(ag, QCA9530) && ag->mac_idx == 1))
+ __set_bit(PHY_INTERFACE_MODE_GMII,
+ ag->phylink_config.supported_interfaces);
+
+ if (ag71xx_is(ag, QCA9550) && ag->mac_idx == 0)
+ __set_bit(PHY_INTERFACE_MODE_SGMII,
+ ag->phylink_config.supported_interfaces);
+
+ if (ag71xx_is(ag, AR9340) && ag->mac_idx == 0)
+ __set_bit(PHY_INTERFACE_MODE_RMII,
+ ag->phylink_config.supported_interfaces);
+
+ if ((ag71xx_is(ag, AR9340) && ag->mac_idx == 0) ||
+ (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
+ __set_bit(PHY_INTERFACE_MODE_RGMII,
+ ag->phylink_config.supported_interfaces);
+
phylink = phylink_create(&ag->phylink_config, ag->pdev->dev.fwnode,
ag->phy_if_mode, &ag71xx_phylink_mac_ops);
if (IS_ERR(phylink))
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next 2/3] net: ag71xx: remove interface checks in ag71xx_mac_validate()
2021-11-17 16:45 [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 1/3] net: ag71xx: populate supported_interfaces member Russell King
@ 2021-11-17 16:46 ` Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 3/3] net: ag71xx: use phylink_generic_validate() Russell King (Oracle)
2021-11-18 11:40 ` [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Russell King (Oracle) @ 2021-11-17 16:46 UTC (permalink / raw)
To: Chris Snook, Oleksij Rempel; +Cc: David S. Miller, Jakub Kicinski, netdev
As phylink checks the interface mode against the supported_interfaces
bitmap, we no longer need to validate the interface mode, nor handle
PHY_INTERFACE_MODE_NA in the validation function. Remove these to
simplify the implementation.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/atheros/ag71xx.c | 41 +--------------------------
1 file changed, 1 insertion(+), 40 deletions(-)
diff --git a/drivers/net/ethernet/atheros/ag71xx.c b/drivers/net/ethernet/atheros/ag71xx.c
index 8d55ce266aa3..20c2cfdc30da 100644
--- a/drivers/net/ethernet/atheros/ag71xx.c
+++ b/drivers/net/ethernet/atheros/ag71xx.c
@@ -1028,42 +1028,8 @@ static void ag71xx_mac_validate(struct phylink_config *config,
unsigned long *supported,
struct phylink_link_state *state)
{
- struct ag71xx *ag = netdev_priv(to_net_dev(config->dev));
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
- switch (state->interface) {
- case PHY_INTERFACE_MODE_NA:
- break;
- case PHY_INTERFACE_MODE_MII:
- if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 0) ||
- ag71xx_is(ag, AR9340) ||
- ag71xx_is(ag, QCA9530) ||
- (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
- break;
- goto unsupported;
- case PHY_INTERFACE_MODE_GMII:
- if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 1) ||
- (ag71xx_is(ag, AR9340) && ag->mac_idx == 1) ||
- (ag71xx_is(ag, QCA9530) && ag->mac_idx == 1))
- break;
- goto unsupported;
- case PHY_INTERFACE_MODE_SGMII:
- if (ag71xx_is(ag, QCA9550) && ag->mac_idx == 0)
- break;
- goto unsupported;
- case PHY_INTERFACE_MODE_RMII:
- if (ag71xx_is(ag, AR9340) && ag->mac_idx == 0)
- break;
- goto unsupported;
- case PHY_INTERFACE_MODE_RGMII:
- if ((ag71xx_is(ag, AR9340) && ag->mac_idx == 0) ||
- (ag71xx_is(ag, QCA9550) && ag->mac_idx == 1))
- break;
- goto unsupported;
- default:
- goto unsupported;
- }
-
phylink_set(mask, MII);
phylink_set(mask, Pause);
@@ -1074,8 +1040,7 @@ static void ag71xx_mac_validate(struct phylink_config *config,
phylink_set(mask, 100baseT_Half);
phylink_set(mask, 100baseT_Full);
- if (state->interface == PHY_INTERFACE_MODE_NA ||
- state->interface == PHY_INTERFACE_MODE_SGMII ||
+ if (state->interface == PHY_INTERFACE_MODE_SGMII ||
state->interface == PHY_INTERFACE_MODE_RGMII ||
state->interface == PHY_INTERFACE_MODE_GMII) {
phylink_set(mask, 1000baseT_Full);
@@ -1084,10 +1049,6 @@ static void ag71xx_mac_validate(struct phylink_config *config,
linkmode_and(supported, supported, mask);
linkmode_and(state->advertising, state->advertising, mask);
-
- return;
-unsupported:
- linkmode_zero(supported);
}
static void ag71xx_mac_pcs_get_state(struct phylink_config *config,
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next 3/3] net: ag71xx: use phylink_generic_validate()
2021-11-17 16:45 [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 1/3] net: ag71xx: populate supported_interfaces member Russell King
2021-11-17 16:46 ` [PATCH net-next 2/3] net: ag71xx: remove interface checks in ag71xx_mac_validate() Russell King (Oracle)
@ 2021-11-17 16:46 ` Russell King (Oracle)
2021-11-18 11:40 ` [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Russell King (Oracle) @ 2021-11-17 16:46 UTC (permalink / raw)
To: Chris Snook, Oleksij Rempel; +Cc: David S. Miller, Jakub Kicinski, netdev
ag71xx apparently only supports MII port type, which makes it different
from other implementations. However, Oleksij says there is no special
reason for this.
Convert the driver to use phylink_generic_validate(), which will allow
all ethtool port linkmodes instead of only MII, giving the driver
consistent behaviour with other drivers.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/atheros/ag71xx.c | 31 +++------------------------
1 file changed, 3 insertions(+), 28 deletions(-)
diff --git a/drivers/net/ethernet/atheros/ag71xx.c b/drivers/net/ethernet/atheros/ag71xx.c
index 20c2cfdc30da..c747dc7984fd 100644
--- a/drivers/net/ethernet/atheros/ag71xx.c
+++ b/drivers/net/ethernet/atheros/ag71xx.c
@@ -1024,33 +1024,6 @@ static void ag71xx_mac_config(struct phylink_config *config, unsigned int mode,
ag71xx_wr(ag, AG71XX_REG_FIFO_CFG3, ag->fifodata[2]);
}
-static void ag71xx_mac_validate(struct phylink_config *config,
- unsigned long *supported,
- struct phylink_link_state *state)
-{
- __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
-
- phylink_set(mask, MII);
-
- phylink_set(mask, Pause);
- phylink_set(mask, Asym_Pause);
- phylink_set(mask, Autoneg);
- phylink_set(mask, 10baseT_Half);
- phylink_set(mask, 10baseT_Full);
- phylink_set(mask, 100baseT_Half);
- phylink_set(mask, 100baseT_Full);
-
- if (state->interface == PHY_INTERFACE_MODE_SGMII ||
- state->interface == PHY_INTERFACE_MODE_RGMII ||
- state->interface == PHY_INTERFACE_MODE_GMII) {
- phylink_set(mask, 1000baseT_Full);
- phylink_set(mask, 1000baseX_Full);
- }
-
- linkmode_and(supported, supported, mask);
- linkmode_and(state->advertising, state->advertising, mask);
-}
-
static void ag71xx_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state)
{
@@ -1124,7 +1097,7 @@ static void ag71xx_mac_link_up(struct phylink_config *config,
}
static const struct phylink_mac_ops ag71xx_phylink_mac_ops = {
- .validate = ag71xx_mac_validate,
+ .validate = phylink_generic_validate,
.mac_pcs_get_state = ag71xx_mac_pcs_get_state,
.mac_an_restart = ag71xx_mac_an_restart,
.mac_config = ag71xx_mac_config,
@@ -1138,6 +1111,8 @@ static int ag71xx_phylink_setup(struct ag71xx *ag)
ag->phylink_config.dev = &ag->ndev->dev;
ag->phylink_config.type = PHYLINK_NETDEV;
+ ag->phylink_config.mac_capabilities = MAC_SYM_PAUSE | MAC_ASYM_PAUSE |
+ MAC_10 | MAC_100 | MAC_1000FD;
if ((ag71xx_is(ag, AR9330) && ag->mac_idx == 0) ||
ag71xx_is(ag, AR9340) ||
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates
2021-11-17 16:45 [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates Russell King (Oracle)
` (2 preceding siblings ...)
2021-11-17 16:46 ` [PATCH net-next 3/3] net: ag71xx: use phylink_generic_validate() Russell King (Oracle)
@ 2021-11-18 11:40 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-11-18 11:40 UTC (permalink / raw)
To: Russell King; +Cc: chris.snook, linux, davem, kuba, netdev
Hello:
This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:
On Wed, 17 Nov 2021 16:45:57 +0000 you wrote:
> Hi,
>
> This series converts ag71xx to fill in the supported_interfaces member
> of phylink_config, cleans up the validate() implementation, and then
> converts to phylink_generic_validate().
>
> The question over the port linkmode restriction has been answered by
> Oleksij - there is no reason for this restriction, so we can go the
> whole hog with this conversion. Thanks!
>
> [...]
Here is the summary with links:
- [net-next,1/3] net: ag71xx: populate supported_interfaces member
https://git.kernel.org/netdev/net-next/c/680e9d2cd4bf
- [net-next,2/3] net: ag71xx: remove interface checks in ag71xx_mac_validate()
https://git.kernel.org/netdev/net-next/c/5e20a8aa48a0
- [net-next,3/3] net: ag71xx: use phylink_generic_validate()
https://git.kernel.org/netdev/net-next/c/c8fa4bac30e1
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-11-18 11:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-17 16:45 [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 1/3] net: ag71xx: populate supported_interfaces member Russell King
2021-11-17 16:46 ` [PATCH net-next 2/3] net: ag71xx: remove interface checks in ag71xx_mac_validate() Russell King (Oracle)
2021-11-17 16:46 ` [PATCH net-next 3/3] net: ag71xx: use phylink_generic_validate() Russell King (Oracle)
2021-11-18 11:40 ` [PATCH net-next 0/3] net: ag71xx: phylink validate implementation updates patchwork-bot+netdevbpf
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).