summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvraham Stern <avraham.stern@intel.com>2022-01-27 13:56:29 +0200
committerJohannes Berg <johannes.berg@intel.com>2022-07-22 14:28:27 +0200
commit1ff715ffa0ec1b5af9093c43185e686f575f15cc (patch)
tree7c4db45b4537627084d08adacf3b377f5c6ce24b
parent00b3d8401019e6abf89ea577cb1de060ea65e3fd (diff)
wifi: cfg80211: add hardware timestamps to frame RX info
Add hardware timestamps to management frame RX info. This shall be used by drivers that support hardware timestamping for Timing measurement and Fine timing measurement action frames RX. Signed-off-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--include/net/cfg80211.h4
-rw-r--r--net/wireless/nl80211.c10
2 files changed, 13 insertions, 1 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 535e326a35b0..2f5c271bcde1 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -7800,6 +7800,8 @@ void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr,
* @buf: Management frame (header + body)
* @len: length of the frame data
* @flags: flags, as defined in enum nl80211_rxmgmt_flags
+ * @rx_tstamp: Hardware timestamp of frame RX in nanoseconds
+ * @ack_tstamp: Hardware timestamp of ack TX in nanoseconds
*/
struct cfg80211_rx_info {
int freq;
@@ -7807,6 +7809,8 @@ struct cfg80211_rx_info {
const u8 *buf;
size_t len;
u32 flags;
+ u64 rx_tstamp;
+ u64 ack_tstamp;
};
/**
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 80d3471041d1..e5ed0950ef0b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18383,7 +18383,15 @@ int nl80211_send_mgmt(struct cfg80211_registered_device *rdev,
nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, info->sig_dbm)) ||
nla_put(msg, NL80211_ATTR_FRAME, info->len, info->buf) ||
(info->flags &&
- nla_put_u32(msg, NL80211_ATTR_RXMGMT_FLAGS, info->flags)))
+ nla_put_u32(msg, NL80211_ATTR_RXMGMT_FLAGS, info->flags)) ||
+ (info->rx_tstamp && nla_put_u64_64bit(msg,
+ NL80211_ATTR_RX_HW_TIMESTAMP,
+ info->rx_tstamp,
+ NL80211_ATTR_PAD)) ||
+ (info->ack_tstamp && nla_put_u64_64bit(msg,
+ NL80211_ATTR_TX_HW_TIMESTAMP,
+ info->ack_tstamp,
+ NL80211_ATTR_PAD)))
goto nla_put_failure;
genlmsg_end(msg, hdr);