]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
igc: add support to get MAC Merge data via ethtool
authorFaizal Rahim <faizal.abdul.rahim@linux.intel.com>
Tue, 18 Mar 2025 03:07:41 +0000 (23:07 -0400)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 18 Apr 2025 16:17:14 +0000 (09:17 -0700)
Implement "ethtool --show-mm" callback for IGC.

Tested with command:
$ ethtool --show-mm enp1s0.
  MAC Merge layer state for enp1s0:
  pMAC enabled: on
  TX enabled: on
  TX active: on
  TX minimum fragment size: 64
  RX minimum fragment size: 60
  Verify enabled: on
  Verify time: 128
  Max verify time: 128
  Verification status: SUCCEEDED

Verified that the fields value are retrieved correctly.

Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igc/igc_ethtool.c
drivers/net/ethernet/intel/igc/igc_tsn.h

index 529654ccd83f67d1d6eeab98495a48a8af865890..fd4b4b332309344e99e12287c47843341aab223a 100644 (file)
@@ -1782,6 +1782,19 @@ static int igc_ethtool_set_eee(struct net_device *netdev,
        return 0;
 }
 
+static int igc_ethtool_get_mm(struct net_device *netdev,
+                             struct ethtool_mm_state *cmd)
+{
+       struct igc_adapter *adapter = netdev_priv(netdev);
+       struct igc_fpe_t *fpe = &adapter->fpe;
+
+       ethtool_mmsv_get_mm(&fpe->mmsv, cmd);
+       cmd->tx_min_frag_size = fpe->tx_min_frag_size;
+       cmd->rx_min_frag_size = IGC_RX_MIN_FRAG_SIZE;
+
+       return 0;
+}
+
 static int igc_ethtool_set_mm(struct net_device *netdev,
                              struct ethtool_mm_cfg *cmd,
                              struct netlink_ext_ack *extack)
@@ -2101,6 +2114,7 @@ static const struct ethtool_ops igc_ethtool_ops = {
        .get_link_ksettings     = igc_ethtool_get_link_ksettings,
        .set_link_ksettings     = igc_ethtool_set_link_ksettings,
        .self_test              = igc_ethtool_diag_test,
+       .get_mm                 = igc_ethtool_get_mm,
        .set_mm                 = igc_ethtool_set_mm,
 };
 
index 58fe5f0773d760a9839b29a4f40b0732dafff1d6..c2a77229207b359198238bd78cf478b3788aba1d 100644 (file)
@@ -4,6 +4,7 @@
 #ifndef _IGC_TSN_H_
 #define _IGC_TSN_H_
 
+#define IGC_RX_MIN_FRAG_SIZE           60
 #define SMD_FRAME_SIZE                 60
 
 enum igc_txd_popts_type {