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: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Paolo Abeni 2024-11-26 10:13:01 +01:00
commit 70ab873797
2 changed files with 36 additions and 14 deletions

View File

@ -9,7 +9,10 @@
#ifndef RTASE_H
#define RTASE_H
#define RTASE_HW_VER_MASK 0x7C800000
#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

View File

@ -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);
cmd->base.speed = SPEED_5000;
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;
switch (hw_ver) {
case 0x00800000:
case 0x04000000:
case 0x04800000:
known_ver = true;
tp->hw_ver = rtase_r32(tp, RTASE_TX_CONFIG_0) & RTASE_HW_VER_MASK;
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;