summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2021-11-27 16:17:42 +0000
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2022-01-18 10:17:25 +0000
commit471fbe635ee0c3fd7034c17ed1e10f8699f5b6b9 (patch)
treeab614b8718a8a511cb363d6e6a12070cd0cc7db2
parentce15e75e6844994caed2a53ed0a00c98a806a07a (diff)
net: phylink: split PCS in-band from inband mode
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
-rw-r--r--include/linux/phylink.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
index 96c91be166eb..ff14bdabc64b 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -17,9 +17,18 @@ enum {
MLO_PAUSE_TXRX_MASK = MLO_PAUSE_TX | MLO_PAUSE_RX,
MLO_PAUSE_AN = BIT(2),
- MLO_AN_PHY = 0, /* Conventional PHY */
- MLO_AN_FIXED, /* Fixed-link mode */
- MLO_AN_INBAND, /* In-band protocol */
+ __PHYLINK_AN_MASK = 3,
+ __PHYLINK_AN_PHY = 0,
+ __PHYLINK_AN_FIXED,
+ __PHYLINK_AN_INBAND,
+ __PHYLINK_PCS_INBAND = BIT(3),
+
+ /* Conventional PHY mode - PHY status passed via phylib and phylink */
+ MLO_AN_PHY = __PHYLINK_AN_PHY,
+ /* Fixed-link mode */
+ MLO_AN_FIXED = __PHYLINK_AN_FIXED,
+ /* In-band protocol - status / negotiation passed inband */
+ MLO_AN_INBAND = __PHYLINK_AN_INBAND | __PHYLINK_PCS_INBAND,
/* pcs_validate() return values */
PCS_VALIDATE_FAIL = -EINVAL, /* Failed */
@@ -52,17 +61,17 @@ enum {
static inline bool phylink_mode_inband(unsigned int mode)
{
- return mode == MLO_AN_INBAND;
+ return (mode & __PHYLINK_AN_MASK) == __PHYLINK_AN_INBAND;
}
static inline bool phylink_mode_fixed(unsigned int mode)
{
- return mode == MLO_AN_FIXED;
+ return (mode & __PHYLINK_AN_MASK) == __PHYLINK_AN_FIXED;
}
static inline bool phylink_mode_phy(unsigned int mode)
{
- return mode == MLO_AN_PHY;
+ return (mode & __PHYLINK_AN_MASK) == __PHYLINK_AN_PHY;
}
static inline bool phylink_autoneg_inband(unsigned int mode)