Patch "net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-dsa-mv88e6xxx-add-phylink_get_caps-for-the-mv88e.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2f4e2292e8a850fe01dc524b08cd3ae2ce1ca6f3
Author: Steffen Bätz <steffen@xxxxxxxxxxxx>
Date:   Wed May 8 09:29:43 2024 +0200

    net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family
    
    [ Upstream commit f39bf3cf08a49e7d20c44bc8bc8e390fea69959a ]
    
    As of commit de5c9bf40c45 ("net: phylink: require supported_interfaces to
    be filled")
    Marvell 88e6320/21 switches fail to be probed:
    
    ...
    mv88e6085 30be0000.ethernet-1:00: phylink: error: empty supported_interfaces
    error creating PHYLINK: -22
    ...
    
    The problem stems from the use of mv88e6185_phylink_get_caps() to get
    the device capabilities.
    Since there are serdes only ports 0/1 included, create a new dedicated
    phylink_get_caps for the 6320 and 6321 to properly support their
    set of capabilities.
    
    Fixes: de5c9bf40c45 ("net: phylink: require supported_interfaces to be filled")
    Signed-off-by: Steffen Bätz <steffen@xxxxxxxxxxxx>
    Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
    Reviewed-by: Fabio Estevam <festevam@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20240508072944.54880-2-steffen@xxxxxxxxxxxx
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index bb0552469ae84..967d9136313f4 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -697,6 +697,18 @@ static void mv88e6352_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
 	}
 }
 
+static void mv88e632x_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
+				       struct phylink_config *config)
+{
+	unsigned long *supported = config->supported_interfaces;
+
+	/* Translate the default cmode */
+	mv88e6xxx_translate_cmode(chip->ports[port].cmode, supported);
+
+	config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100 |
+				   MAC_1000FD;
+}
+
 static void mv88e6341_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
 				       struct phylink_config *config)
 {
@@ -5090,7 +5102,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
-	.phylink_get_caps = mv88e6185_phylink_get_caps,
+	.phylink_get_caps = mv88e632x_phylink_get_caps,
 };
 
 static const struct mv88e6xxx_ops mv88e6321_ops = {
@@ -5136,7 +5148,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
-	.phylink_get_caps = mv88e6185_phylink_get_caps,
+	.phylink_get_caps = mv88e632x_phylink_get_caps,
 };
 
 static const struct mv88e6xxx_ops mv88e6341_ops = {




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux