On Tue, 2019-06-18 at 10:57 +0530, Tamizh chelvam wrote: > > @@ -1626,6 +1635,14 @@ struct ieee80211_vif { > > bool txqs_stopped[IEEE80211_NUM_ACS]; > > + int noack[IEEE80211_TID_MAX]; > + int retry_short[IEEE80211_TID_MAX]; > + int retry_long[IEEE80211_TID_MAX]; > + int ampdu[IEEE80211_TID_MAX]; > + u8 rate_ctrl[IEEE80211_TID_MAX]; > + u32 rate_code[IEEE80211_TID_MAX]; > + u8 rtscts[IEEE80211_TID_MAX]; This is quite a bit of data (176 bytes), can we make it up to the driver to store it if supported, instead? > @@ -2004,6 +2027,13 @@ struct ieee80211_sta { > > struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1]; > > + int noack[IEEE80211_TID_MAX]; > + int retry_short[IEEE80211_TID_MAX]; > + int retry_long[IEEE80211_TID_MAX]; > + int ampdu[IEEE80211_TID_MAX]; > + u8 rate_ctrl[IEEE80211_TID_MAX]; > + u8 rtscts[IEEE80211_TID_MAX]; same here. > +static int ieee80211_set_tid_config(struct wiphy *wiphy, > + struct net_device *dev, > + struct ieee80211_tid_config *tid_conf) > +{ > + struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); > + struct sta_info *sta; > + int ret; > + > + if (!sdata->local->ops->set_tid_config) > + return -EOPNOTSUPP; > + > + if (!tid_conf->peer) > + return drv_set_tid_config(sdata->local, sdata, NULL, tid_conf); > + > + mutex_lock(&sdata->local->sta_mtx); > + > + sta = sta_info_get_bss(sdata, tid_conf->peer); > + if (!sta) { > + mutex_unlock(&sdata->local->sta_mtx); > + return -ENOENT; > + } > + > + ret = drv_set_tid_config(sdata->local, sdata, &sta->sta, tid_conf); > + mutex_unlock(&sdata->local->sta_mtx); > + return ret; > +} and you're not actually using the data anyway? johannes