]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ionic: add speed defines for 200G and 400G
authorShannon Nelson <shannon.nelson@amd.com>
Tue, 10 Dec 2024 18:30:44 +0000 (10:30 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 12 Dec 2024 11:06:33 +0000 (12:06 +0100)
Add higher speed defines to the ionic_if.h API and decode them
in the ethtool get_link_ksettings callback.

Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
drivers/net/ethernet/pensando/ionic/ionic_if.h

index dda22fa4448cff7f0af88640aa85f36dd770b28f..272317048cb9379cfb54876e75411106fe91aa8a 100644 (file)
@@ -158,6 +158,20 @@ static int ionic_get_link_ksettings(struct net_device *netdev,
                                                     25000baseCR_Full);
                copper_seen++;
                break;
+       case IONIC_XCVR_PID_QSFP_50G_CR2_FC:
+       case IONIC_XCVR_PID_QSFP_50G_CR2:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    50000baseCR2_Full);
+               copper_seen++;
+               break;
+       case IONIC_XCVR_PID_QSFP_200G_CR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported, 200000baseCR4_Full);
+               copper_seen++;
+               break;
+       case IONIC_XCVR_PID_QSFP_400G_CR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported, 400000baseCR4_Full);
+               copper_seen++;
+               break;
        case IONIC_XCVR_PID_SFP_10GBASE_AOC:
        case IONIC_XCVR_PID_SFP_10GBASE_CU:
                ethtool_link_ksettings_add_link_mode(ks, supported,
@@ -196,6 +210,31 @@ static int ionic_get_link_ksettings(struct net_device *netdev,
                ethtool_link_ksettings_add_link_mode(ks, supported,
                                                     25000baseSR_Full);
                break;
+       case IONIC_XCVR_PID_QSFP_200G_AOC:
+       case IONIC_XCVR_PID_QSFP_200G_SR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    200000baseSR4_Full);
+               break;
+       case IONIC_XCVR_PID_QSFP_200G_FR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    200000baseLR4_ER4_FR4_Full);
+               break;
+       case IONIC_XCVR_PID_QSFP_200G_DR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    200000baseDR4_Full);
+               break;
+       case IONIC_XCVR_PID_QSFP_400G_FR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    400000baseLR4_ER4_FR4_Full);
+               break;
+       case IONIC_XCVR_PID_QSFP_400G_DR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    400000baseDR4_Full);
+               break;
+       case IONIC_XCVR_PID_QSFP_400G_SR4:
+               ethtool_link_ksettings_add_link_mode(ks, supported,
+                                                    400000baseSR4_Full);
+               break;
        case IONIC_XCVR_PID_SFP_10GBASE_SR:
                ethtool_link_ksettings_add_link_mode(ks, supported,
                                                     10000baseSR_Full);
index 6ea190f1a706c29001929b0d6b98d931cbe1a239..830c8adbfbee0e299322a0df9e14bbb5bedbf23e 100644 (file)
@@ -1277,7 +1277,10 @@ enum ionic_xcvr_pid {
        IONIC_XCVR_PID_SFP_25GBASE_CR_S  = 3,
        IONIC_XCVR_PID_SFP_25GBASE_CR_L  = 4,
        IONIC_XCVR_PID_SFP_25GBASE_CR_N  = 5,
-
+       IONIC_XCVR_PID_QSFP_50G_CR2_FC   = 6,
+       IONIC_XCVR_PID_QSFP_50G_CR2      = 7,
+       IONIC_XCVR_PID_QSFP_200G_CR4     = 8,
+       IONIC_XCVR_PID_QSFP_400G_CR4     = 9,
        /* Fiber */
        IONIC_XCVR_PID_QSFP_100G_AOC    = 50,
        IONIC_XCVR_PID_QSFP_100G_ACC    = 51,
@@ -1303,6 +1306,15 @@ enum ionic_xcvr_pid {
        IONIC_XCVR_PID_SFP_25GBASE_ACC  = 71,
        IONIC_XCVR_PID_SFP_10GBASE_T    = 72,
        IONIC_XCVR_PID_SFP_1000BASE_T   = 73,
+       IONIC_XCVR_PID_QSFP_200G_AOC    = 74,
+       IONIC_XCVR_PID_QSFP_200G_FR4    = 75,
+       IONIC_XCVR_PID_QSFP_200G_DR4    = 76,
+       IONIC_XCVR_PID_QSFP_200G_SR4    = 77,
+       IONIC_XCVR_PID_QSFP_200G_ACC    = 78,
+       IONIC_XCVR_PID_QSFP_400G_FR4    = 79,
+       IONIC_XCVR_PID_QSFP_400G_DR4    = 80,
+       IONIC_XCVR_PID_QSFP_400G_SR4    = 81,
+       IONIC_XCVR_PID_QSFP_400G_VR4    = 82,
 };
 
 /**
@@ -1404,6 +1416,8 @@ struct ionic_xcvr_status {
  */
 union ionic_port_config {
        struct {
+#define IONIC_SPEED_400G       400000  /* 400G in Mbps */
+#define IONIC_SPEED_200G       200000  /* 200G in Mbps */
 #define IONIC_SPEED_100G       100000  /* 100G in Mbps */
 #define IONIC_SPEED_50G                50000   /* 50G in Mbps */
 #define IONIC_SPEED_40G                40000   /* 40G in Mbps */