rtase: Refactor the rtase_check_mac_version_valid() function
authorJustin Lai <justinlai0215@realtek.com>
Wed, 20 Nov 2024 07:56:22 +0000 (15:56 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 26 Nov 2024 09:12:58 +0000 (10:12 +0100)
Different hardware requires different configurations, but this distinction
was not made previously. Additionally, the error message was not clear
enough. Therefore, this patch will address the issues mentioned above.

Fixes: a36e9f5cfe9e ("rtase: Add support for a pci table in this module")
Signed-off-by: Justin Lai <justinlai0215@realtek.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/realtek/rtase/rtase.h
drivers/net/ethernet/realtek/rtase/rtase_main.c

index 942f1e531a8513f38b96c05be831596514d4d456..dbc3f92eebc48006b1f231ddf8e7d2b299207720 100644 (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
index 874994d9ceb953052895f6721b75d1b4f1d1336a..d4ae0dd315d3a4b84feb6fc99e3f2ec4ced28431 100644 (file)
@@ -1972,20 +1972,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 +2106,12 @@ 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);
+       }
 
        rtase_init_software_variable(pdev, tp);
        rtase_init_hardware(tp);