mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
a7bd96c98f
This is required for managed operation of the SFP ports on
the Ten64 (LS1088A) and other boards.
The two issues resolved are:
- Validation of 10G SFP link modes fail as Linux did not
consider the equivalence of modes like XFI, 10GBase-R
- Fix a locking issue that prevented the system rebooting
when SFP ports were controlled by the SFP driver.
Please note, these patches are replaced by upstream ones
in 6.x, see: commit 61ec9a8154
("armvirt: add SFP support
patches for NXP Layerscape DPAA2 platforms") in OpenWrt for
the relevant patches.
Signed-off-by: Mathew McBride <matt@traverse.com.au>
35 lines
1.4 KiB
Diff
35 lines
1.4 KiB
Diff
From c314138bd045e050432158ab021160de3ba51c5e Mon Sep 17 00:00:00 2001
|
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
Date: Thu, 30 Jan 2020 22:42:38 +0000
|
|
Subject: [PATCH 2/4] net: dpaa2-mac: add support for more 10G modes
|
|
|
|
Phylink documentation says:
|
|
* Note that the PHY may be able to transform from one connection
|
|
* technology to another, so, eg, don't clear 1000BaseX just
|
|
* because the MAC is unable to BaseX mode. This is more about
|
|
* clearing unsupported speeds and duplex settings. The port modes
|
|
* should not be cleared; phylink_set_port_modes() will help with this.
|
|
|
|
So add the missing 10G modes.
|
|
|
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
---
|
|
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
|
@@ -140,6 +140,12 @@ static void dpaa2_mac_validate(struct ph
|
|
case PHY_INTERFACE_MODE_10GBASER:
|
|
case PHY_INTERFACE_MODE_USXGMII:
|
|
phylink_set(mask, 10000baseT_Full);
|
|
+ phylink_set(mask, 10000baseKR_Full);
|
|
+ phylink_set(mask, 10000baseCR_Full);
|
|
+ phylink_set(mask, 10000baseSR_Full);
|
|
+ phylink_set(mask, 10000baseLR_Full);
|
|
+ phylink_set(mask, 10000baseLRM_Full);
|
|
+ phylink_set(mask, 10000baseER_Full);
|
|
if (state->interface == PHY_INTERFACE_MODE_10GBASER)
|
|
break;
|
|
phylink_set(mask, 5000baseT_Full);
|