| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- From 80fd8687db41b1e04f78c37137d090f2165cca6e Mon Sep 17 00:00:00 2001
- From: Martin Kaistra <[email protected]>
- Date: Fri, 22 Dec 2023 11:14:28 +0100
- Subject: [PATCH 07/21] wifi: rtl8xxxu: extend check for matching bssid to both
- interfaces
- The driver will support two interfaces soon, which both can be in
- station mode, so extend the check, whether cfo information should be
- parsed, to cover both interfaces.
- For better code readability put the lines with priv->vifs[port_num] in a
- separate function.
- Signed-off-by: Martin Kaistra <[email protected]>
- Reviewed-by: Ping-Ke Shih <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- Link: https://msgid.link/[email protected]
- ---
- .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 22 ++++++++++++-------
- 1 file changed, 14 insertions(+), 8 deletions(-)
- --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
- +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
- @@ -5706,6 +5706,16 @@ static void rtl8xxxu_update_beacon_work_
- rtl8xxxu_send_beacon_frame(hw, vif);
- }
-
- +static inline bool rtl8xxxu_is_packet_match_bssid(struct rtl8xxxu_priv *priv,
- + struct ieee80211_hdr *hdr,
- + int port_num)
- +{
- + return priv->vifs[port_num] &&
- + priv->vifs[port_num]->type == NL80211_IFTYPE_STATION &&
- + priv->vifs[port_num]->cfg.assoc &&
- + ether_addr_equal(priv->vifs[port_num]->bss_conf.bssid, hdr->addr2);
- +}
- +
- void rtl8723au_rx_parse_phystats(struct rtl8xxxu_priv *priv,
- struct ieee80211_rx_status *rx_status,
- struct rtl8723au_phy_stats *phy_stats,
- @@ -5722,12 +5732,10 @@ void rtl8723au_rx_parse_phystats(struct
- rx_status->signal = priv->fops->cck_rssi(priv, phy_stats);
- } else {
- bool parse_cfo = priv->fops->set_crystal_cap &&
- - priv->vif &&
- - priv->vif->type == NL80211_IFTYPE_STATION &&
- - priv->vif->cfg.assoc &&
- !crc_icv_err &&
- !ieee80211_is_ctl(hdr->frame_control) &&
- - ether_addr_equal(priv->vif->bss_conf.bssid, hdr->addr2);
- + (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
- + rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
-
- if (parse_cfo) {
- priv->cfo_tracking.cfo_tail[0] = phy_stats->path_cfotail[0];
- @@ -5762,12 +5770,10 @@ static void jaguar2_rx_parse_phystats_ty
- bool crc_icv_err)
- {
- bool parse_cfo = priv->fops->set_crystal_cap &&
- - priv->vif &&
- - priv->vif->type == NL80211_IFTYPE_STATION &&
- - priv->vif->cfg.assoc &&
- !crc_icv_err &&
- !ieee80211_is_ctl(hdr->frame_control) &&
- - ether_addr_equal(priv->vif->bss_conf.bssid, hdr->addr2);
- + (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
- + rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
- u8 pwdb_max = 0;
- int rx_path;
-
|