001-15-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-bss_inf.patch 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. From 073401c3b6b9eaea027240baf07f2b84dd2d2d26 Mon Sep 17 00:00:00 2001
  2. From: Martin Kaistra <[email protected]>
  3. Date: Fri, 22 Dec 2023 11:14:36 +0100
  4. Subject: [PATCH 15/21] wifi: rtl8xxxu: support multiple interfaces in
  5. bss_info_changed()
  6. Call set_linktype and set_bssid now with correct port_num. Call
  7. stop_tx_beacon only for port 0, as we don't support beacons on port 1.
  8. Explicit changes to BEACON will only happen for AP type interfaces, so
  9. we don't need an additional check there.
  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. drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 8 +++++---
  16. 1 file changed, 5 insertions(+), 3 deletions(-)
  17. --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
  18. +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
  19. @@ -4983,6 +4983,7 @@ static void
  20. rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
  21. struct ieee80211_bss_conf *bss_conf, u64 changed)
  22. {
  23. + struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
  24. struct rtl8xxxu_priv *priv = hw->priv;
  25. struct device *dev = &priv->udev->dev;
  26. struct ieee80211_sta *sta;
  27. @@ -4995,7 +4996,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
  28. if (changed & BSS_CHANGED_ASSOC) {
  29. dev_dbg(dev, "Changed ASSOC: %i!\n", vif->cfg.assoc);
  30. - rtl8xxxu_set_linktype(priv, vif->type, 0);
  31. + rtl8xxxu_set_linktype(priv, vif->type, rtlvif->port_num);
  32. if (vif->cfg.assoc) {
  33. u32 ramask;
  34. @@ -5042,7 +5043,8 @@ rtl8xxxu_bss_info_changed(struct ieee802
  35. rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff);
  36. - rtl8xxxu_stop_tx_beacon(priv);
  37. + if (rtlvif->port_num == 0)
  38. + rtl8xxxu_stop_tx_beacon(priv);
  39. /* joinbss sequence */
  40. rtl8xxxu_write16(priv, REG_BCN_PSR_RPT,
  41. @@ -5084,7 +5086,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
  42. if (changed & BSS_CHANGED_BSSID) {
  43. dev_dbg(dev, "Changed BSSID!\n");
  44. - rtl8xxxu_set_bssid(priv, bss_conf->bssid, 0);
  45. + rtl8xxxu_set_bssid(priv, bss_conf->bssid, rtlvif->port_num);
  46. }
  47. if (changed & BSS_CHANGED_BASIC_RATES) {