CHROMIUM: ath10k: add tx delay into timestamp IE of probe response
Add tx delay and tbtt offset value into probe response timestamp
IE similar to beacon timestamp.
BUG=b:167645146
TEST=Basic sanity
Change-Id: I4e7efebff75824f5d39e522d287270b7171e7705
Signed-off-by: Tamizh Chelvam <tamizhr@codeaurora.org>
Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2402806
Commit-Queue: Srinivasa duvvuri <sduvvuri@google.com>
Tested-by: Srinivasa duvvuri <sduvvuri@google.com>
Reviewed-by: Srinivasa duvvuri <sduvvuri@google.com>
diff --git a/drivers/net/wireless-4.2/ath/ath10k/mac.c b/drivers/net/wireless-4.2/ath/ath10k/mac.c
index 35b0373..2dfc885 100644
--- a/drivers/net/wireless-4.2/ath/ath10k/mac.c
+++ b/drivers/net/wireless-4.2/ath/ath10k/mac.c
@@ -4233,9 +4233,12 @@
struct ieee80211_vif *vif = info->control.vif;
struct ieee80211_sta *sta = control->sta;
struct ieee80211_txq *txq = NULL;
+ struct ath10k_vif *arvif = (void *)vif->drv_priv;
struct ieee80211_hdr *hdr = (void *)skb->data;
enum ath10k_hw_txrx_mode txmode;
enum ath10k_mac_tx_path txpath;
+ struct ieee80211_mgmt *mgmt;
+ u64 adjusted_tsf;
bool is_htt;
bool is_mgmt;
bool is_presp;
@@ -4275,6 +4278,14 @@
ieee80211_free_txskb(ar->hw, skb);
return;
}
+ if (is_presp) {
+ mgmt = (struct ieee80211_mgmt *)skb->data;
+ adjusted_tsf =
+ cpu_to_le64(0ULL -
+ arvif->tbttoffset_list[arvif->vdev_id]);
+ memcpy(&mgmt->u.probe_resp.timestamp,
+ &adjusted_tsf, sizeof(adjusted_tsf));
+ }
spin_unlock_bh(&ar->htt.tx_lock);
}