On 2018-03-27 14:12, Vasanthakumar Thiagarajan wrote:
Use per-peer noack tid bitmap, if it is configured,
when setting up the qos header. If no per-peer configuration
is set, use the existing nedev wide noack policy configuration.
Also modifies callback set_noack_tid_bitmap() with the provision
to send per-peer NoAck policy configuration to the drivers supporting
the NoAck offload functionality (IEEE80211_HW_SUPPORTS_NOACK_POLICY).
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@xxxxxxxxxxxxxx>
---
include/net/mac80211.h | 7 +++++--
net/mac80211/cfg.c | 42
+++++++++++++++++++++++++++++++++++++-----
net/mac80211/driver-ops.h | 5 +++--
net/mac80211/iface.c | 2 +-
net/mac80211/sta_info.h | 3 +++
net/mac80211/trace.h | 9 ++++++---
net/mac80211/tx.c | 2 +-
net/mac80211/wme.c | 34 +++++++++++++++++++++++++++++++++-
8 files changed, 89 insertions(+), 15 deletions(-)
<snip>
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index a0a2d3c..8a2154a 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1252,6 +1252,7 @@ static inline void drv_del_nan_func(struct
ieee80211_local *local,
static inline int drv_set_noack_tid_bitmap(struct ieee80211_local
*local,
struct ieee80211_sub_if_data *sdata,
+ struct sta_info *sta,
u16 noack_map)
{
int ret;
@@ -1263,9 +1264,9 @@ static inline int
drv_set_noack_tid_bitmap(struct ieee80211_local *local,
if (!local->ops->set_noack_tid_bitmap)
return -EOPNOTSUPP;
- trace_drv_set_noack_tid_bitmap(local, sdata, noack_map);
+ trace_drv_set_noack_tid_bitmap(local, sdata, &sta->sta, noack_map);
ret = local->ops->set_noack_tid_bitmap(&local->hw, &sdata->vif,
- noack_map);
+ &sta->sta, noack_map);
Oops, we'll endup in NULL pointer dereference in accessing sta object
when ndev level
configuration is sent. Ill address this in the next version.
Vasanth