rtase: Refactor the rtase_check_mac_version_valid() function
[ Upstream commit a1f8609ff1f658e410f78d800ca947d57e51996a ]
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: a36e9f5cfe ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9f603e66e1
commit
b55b245e46
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user