From cf55254350d9c3e6abc0751badaeb0acb39964fc Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 7 Jan 2019 21:39:08 -0500 Subject: [PATCH] freebsd_wlan: Implement ieee80211_{add|get}_toa_params. Required by the FreeBSD 12 atheroswifi driver. --- .../freebsd_wlan/net80211/ieee80211_haiku.cpp | 38 +++++++++++++++++++ .../freebsd_wlan/net80211/ieee80211_haiku.h | 10 ++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp index b433f36807..629a33808a 100644 --- a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp +++ b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp @@ -516,6 +516,44 @@ ieee80211_get_rx_params_ptr(struct mbuf *m) } +/* + * Add TOA parameters to the given mbuf. + */ +int +ieee80211_add_toa_params(struct mbuf *m, const struct ieee80211_toa_params *p) +{ + struct m_tag *mtag; + struct ieee80211_toa_params *rp; + + mtag = m_tag_alloc(MTAG_ABI_NET80211, NET80211_TAG_TOA_PARAMS, + sizeof(struct ieee80211_toa_params), M_NOWAIT); + if (mtag == NULL) + return (0); + + rp = (struct ieee80211_toa_params *)(mtag + 1); + memcpy(rp, p, sizeof(*rp)); + m_tag_prepend(m, mtag); + return (1); +} + + +int +ieee80211_get_toa_params(struct mbuf *m, struct ieee80211_toa_params *p) +{ + struct m_tag *mtag; + struct ieee80211_toa_params *rp; + + mtag = m_tag_locate(m, MTAG_ABI_NET80211, NET80211_TAG_TOA_PARAMS, + NULL); + if (mtag == NULL) + return (0); + rp = (struct ieee80211_toa_params *)(mtag + 1); + if (p != NULL) + memcpy(p, rp, sizeof(*p)); + return (1); +} + + /* * Transmit a frame to the parent interface. */ diff --git a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h index e370ffcf2c..c61df14023 100644 --- a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h +++ b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.h @@ -344,8 +344,10 @@ struct ieee80211_cb { void *arg; }; #define NET80211_TAG_CALLBACK 0 /* xmit complete callback */ -#define NET80211_TAG_XMIT_PARAMS 1 /* See below; this is after the bpf_params definition */ +#define NET80211_TAG_XMIT_PARAMS 1 + /* See below; this is after the bpf_params definition */ #define NET80211_TAG_RECV_PARAMS 2 +#define NET80211_TAG_TOA_PARAMS 3 int ieee80211_add_callback(struct mbuf *m, void (*func)(struct ieee80211_node *, void *, int), void *arg); @@ -473,6 +475,12 @@ int ieee80211_add_rx_params(struct mbuf *m, const struct ieee80211_rx_stats *rxs int ieee80211_get_rx_params(struct mbuf *m, struct ieee80211_rx_stats *rxs); const struct ieee80211_rx_stats * ieee80211_get_rx_params_ptr(struct mbuf *m); +struct ieee80211_toa_params { + int request_id; +}; +int ieee80211_add_toa_params(struct mbuf *m, const struct ieee80211_toa_params *p); +int ieee80211_get_toa_params(struct mbuf *m, struct ieee80211_toa_params *p); + #ifdef __cplusplus } #endif