Backporting upstream patches to improve RTL8188F support. Signed-off-by: Shiji Yang <yangshiji66@qq.com>
73 lines
2.1 KiB
Diff
73 lines
2.1 KiB
Diff
From 00add60cad3c9690ac0f9d4f6685f96ccd607670 Mon Sep 17 00:00:00 2001
|
|
From: Martin Kaistra <martin.kaistra@linutronix.de>
|
|
Date: Fri, 22 Dec 2023 11:14:26 +0100
|
|
Subject: [PATCH 05/21] wifi: rtl8xxxu: support setting mac address register
|
|
for both interfaces
|
|
|
|
To prepare for concurrent mode, enhance rtl8xxxu_set_mac() to write the
|
|
mac address of the respective interface to REG_MACID or REG_MACID1.
|
|
|
|
Remove the call to rtl8xxxu_set_mac() from the init function as we set
|
|
it in rtl8xxxu_add_interface() later anyway.
|
|
|
|
Until rtl8xxxu_add_interface() can handle both interfaces, call
|
|
rtl8xxxu_set_mac() with port_num = 0.
|
|
|
|
Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
|
|
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
|
Link: https://msgid.link/20231222101442.626837-6-martin.kaistra@linutronix.de
|
|
---
|
|
.../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 20 +++++++++++++------
|
|
1 file changed, 14 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
|
|
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
|
|
@@ -3580,15 +3580,25 @@ void rtl8723a_phy_lc_calibrate(struct rt
|
|
rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00);
|
|
}
|
|
|
|
-static int rtl8xxxu_set_mac(struct rtl8xxxu_priv *priv)
|
|
+static int rtl8xxxu_set_mac(struct rtl8xxxu_priv *priv, int port_num)
|
|
{
|
|
int i;
|
|
u16 reg;
|
|
|
|
- reg = REG_MACID;
|
|
+ switch (port_num) {
|
|
+ case 0:
|
|
+ reg = REG_MACID;
|
|
+ break;
|
|
+ case 1:
|
|
+ reg = REG_MACID1;
|
|
+ break;
|
|
+ default:
|
|
+ WARN_ONCE("%s: invalid port_num\n", __func__);
|
|
+ return -EINVAL;
|
|
+ }
|
|
|
|
for (i = 0; i < ETH_ALEN; i++)
|
|
- rtl8xxxu_write8(priv, reg + i, priv->mac_addr[i]);
|
|
+ rtl8xxxu_write8(priv, reg + i, priv->vifs[port_num]->addr[i]);
|
|
|
|
return 0;
|
|
}
|
|
@@ -4243,8 +4253,6 @@ static int rtl8xxxu_init_device(struct i
|
|
rtl8xxxu_write32(priv, REG_HIMR, 0xffffffff);
|
|
}
|
|
|
|
- rtl8xxxu_set_mac(priv);
|
|
-
|
|
/*
|
|
* Configure initial WMAC settings
|
|
*/
|
|
@@ -6619,7 +6627,7 @@ static int rtl8xxxu_add_interface(struct
|
|
|
|
rtl8xxxu_set_linktype(priv, vif->type, 0);
|
|
ether_addr_copy(priv->mac_addr, vif->addr);
|
|
- rtl8xxxu_set_mac(priv);
|
|
+ rtl8xxxu_set_mac(priv, 0);
|
|
|
|
return ret;
|
|
}
|