2
0

001-09-v6.9-wifi-rtl8xxxu-support-setting-bssid-register-for-mul.patch 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. From 3ff7a05996f901a7a10068b42e9dc8435f908a4c Mon Sep 17 00:00:00 2001
  2. From: Martin Kaistra <[email protected]>
  3. Date: Fri, 22 Dec 2023 11:14:30 +0100
  4. Subject: [PATCH 09/21] wifi: rtl8xxxu: support setting bssid register for
  5. multiple interfaces
  6. To prepare for concurrent mode, enhance rtl8xxxu_set_bssid() to write the
  7. BSSID of the respective interface to REG_BSSID or REG_BSSID1.
  8. Like done with rtl8xxxu_set_mac(), call rtl8xxxu_set_bssid() with
  9. port_num = 0, until the callers also support multiple interfaces.
  10. Signed-off-by: Martin Kaistra <[email protected]>
  11. Reviewed-by: Ping-Ke Shih <[email protected]>
  12. Signed-off-by: Kalle Valo <[email protected]>
  13. Link: https://msgid.link/[email protected]
  14. ---
  15. .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 18 ++++++++++++++----
  16. 1 file changed, 14 insertions(+), 4 deletions(-)
  17. --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
  18. +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
  19. @@ -3603,14 +3603,24 @@ static int rtl8xxxu_set_mac(struct rtl8x
  20. return 0;
  21. }
  22. -static int rtl8xxxu_set_bssid(struct rtl8xxxu_priv *priv, const u8 *bssid)
  23. +static int rtl8xxxu_set_bssid(struct rtl8xxxu_priv *priv, const u8 *bssid, int port_num)
  24. {
  25. int i;
  26. u16 reg;
  27. dev_dbg(&priv->udev->dev, "%s: (%pM)\n", __func__, bssid);
  28. - reg = REG_BSSID;
  29. + switch (port_num) {
  30. + case 0:
  31. + reg = REG_BSSID;
  32. + break;
  33. + case 1:
  34. + reg = REG_BSSID1;
  35. + break;
  36. + default:
  37. + WARN_ONCE("%s: invalid port_num\n", __func__);
  38. + return -EINVAL;
  39. + }
  40. for (i = 0; i < ETH_ALEN; i++)
  41. rtl8xxxu_write8(priv, reg + i, bssid[i]);
  42. @@ -5068,7 +5078,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
  43. if (changed & BSS_CHANGED_BSSID) {
  44. dev_dbg(dev, "Changed BSSID!\n");
  45. - rtl8xxxu_set_bssid(priv, bss_conf->bssid);
  46. + rtl8xxxu_set_bssid(priv, bss_conf->bssid, 0);
  47. }
  48. if (changed & BSS_CHANGED_BASIC_RATES) {
  49. @@ -5097,7 +5107,7 @@ static int rtl8xxxu_start_ap(struct ieee
  50. struct device *dev = &priv->udev->dev;
  51. dev_dbg(dev, "Start AP mode\n");
  52. - rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid);
  53. + rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid, 0);
  54. rtl8xxxu_write16(priv, REG_BCN_INTERVAL, vif->bss_conf.beacon_int);
  55. priv->fops->report_connect(priv, RTL8XXXU_BC_MC_MACID, 0, true);