Commit 70ab8737 authored by Paolo Abeni's avatar Paolo Abeni
Browse files

Merge branch 'correcting-switch-hardware-versions-and-reported-speeds'

Justin Lai says:

====================
Correcting switch hardware versions and reported speeds

This patch set mainly involves correcting switch hardware versions and
reported speeds.
Details are as follows:
1. Refactor the rtase_check_mac_version_valid() function.
2. Correct the speed for RTL907XD-V1
3. Corrects error handling of the rtase_check_mac_version_valid()

v1 -> v2:
- Add Fixes: tag.
- Add defines for hardware version id.
- Modify the error message for an invalid hardware version ID.

v2 -> v3:
- Remove the patch "Add support for RTL907XD-VA PCIe port".

v3 -> v4:
- Modify commit message to describe the main reason for the fix.

v4 -> v5
- Integrate the addition of defines for hardware version ID into the patch
"rtase: Refactor the rtase_check_mac_version_valid() function."
====================

Link: https://patch.msgid.link/20241120075624.499464-1-justinlai0215@realtek.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents ebaf8131 a01cfcfd
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@
#define RTASE_H

#define RTASE_HW_VER_MASK     0x7C800000
#define RTASE_HW_VER_906X_7XA 0x00800000
#define RTASE_HW_VER_906X_7XC 0x04000000
#define RTASE_HW_VER_907XD_V1 0x04800000

#define RTASE_RX_DMA_BURST_256       4
#define RTASE_TX_DMA_BURST_UNLIMITED 7
@@ -327,6 +330,8 @@ struct rtase_private {
	u16 int_nums;
	u16 tx_int_mit;
	u16 rx_int_mit;

	u32 hw_ver;
};

#define RTASE_LSO_64K 64000
+30 −13
Original line number Diff line number Diff line
@@ -1714,10 +1714,21 @@ static int rtase_get_settings(struct net_device *dev,
			      struct ethtool_link_ksettings *cmd)
{
	u32 supported = SUPPORTED_MII | SUPPORTED_Pause | SUPPORTED_Asym_Pause;
	const struct rtase_private *tp = netdev_priv(dev);

	ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
						supported);

	switch (tp->hw_ver) {
	case RTASE_HW_VER_906X_7XA:
	case RTASE_HW_VER_906X_7XC:
		cmd->base.speed = SPEED_5000;
		break;
	case RTASE_HW_VER_907XD_V1:
		cmd->base.speed = SPEED_10000;
		break;
	}

	cmd->base.duplex = DUPLEX_FULL;
	cmd->base.port = PORT_MII;
	cmd->base.autoneg = AUTONEG_DISABLE;
@@ -1972,20 +1983,21 @@ static void rtase_init_software_variable(struct pci_dev *pdev,
	tp->dev->max_mtu = RTASE_MAX_JUMBO_SIZE;
}

static bool rtase_check_mac_version_valid(struct rtase_private *tp)
static int rtase_check_mac_version_valid(struct rtase_private *tp)
{
	u32 hw_ver = rtase_r32(tp, RTASE_TX_CONFIG_0) & RTASE_HW_VER_MASK;
	bool known_ver = false;
	int ret = -ENODEV;

	tp->hw_ver = rtase_r32(tp, RTASE_TX_CONFIG_0) & RTASE_HW_VER_MASK;

	switch (hw_ver) {
	case 0x00800000:
	case 0x04000000:
	case 0x04800000:
		known_ver = true;
	switch (tp->hw_ver) {
	case RTASE_HW_VER_906X_7XA:
	case RTASE_HW_VER_906X_7XC:
	case RTASE_HW_VER_907XD_V1:
		ret = 0;
		break;
	}

	return known_ver;
	return ret;
}

static int rtase_init_board(struct pci_dev *pdev, struct net_device **dev_out,
@@ -2105,9 +2117,13 @@ static int rtase_init_one(struct pci_dev *pdev,
	tp->pdev = pdev;

	/* identify chip attached to board */
	if (!rtase_check_mac_version_valid(tp))
		return dev_err_probe(&pdev->dev, -ENODEV,
				     "unknown chip version, contact rtase maintainers (see MAINTAINERS file)\n");
	ret = rtase_check_mac_version_valid(tp);
	if (ret != 0) {
		dev_err(&pdev->dev,
			"unknown chip version: 0x%08x, contact rtase maintainers (see MAINTAINERS file)\n",
			tp->hw_ver);
		goto err_out_release_board;
	}

	rtase_init_software_variable(pdev, tp);
	rtase_init_hardware(tp);
@@ -2181,6 +2197,7 @@ static int rtase_init_one(struct pci_dev *pdev,
		netif_napi_del(&ivec->napi);
	}

err_out_release_board:
	rtase_release_board(pdev, dev, ioaddr);

	return ret;