mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
wifi: mac80211: Drop support for TX push path
All drivers are now using mac80211 internal queues (iTXQs). Drop mac80211 internal support for the old push path. Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
dfd2d876b3
commit
107395f9cf
@@ -140,17 +140,15 @@ static void __cleanup_single_sta(struct sta_info *sta)
|
||||
atomic_dec(&ps->num_sta_ps);
|
||||
}
|
||||
|
||||
if (sta->sta.txq[0]) {
|
||||
for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
|
||||
struct txq_info *txqi;
|
||||
for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
|
||||
struct txq_info *txqi;
|
||||
|
||||
if (!sta->sta.txq[i])
|
||||
continue;
|
||||
if (!sta->sta.txq[i])
|
||||
continue;
|
||||
|
||||
txqi = to_txq_info(sta->sta.txq[i]);
|
||||
txqi = to_txq_info(sta->sta.txq[i]);
|
||||
|
||||
ieee80211_txq_purge(local, txqi);
|
||||
}
|
||||
ieee80211_txq_purge(local, txqi);
|
||||
}
|
||||
|
||||
for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
|
||||
@@ -428,8 +426,7 @@ void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
|
||||
|
||||
sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr);
|
||||
|
||||
if (sta->sta.txq[0])
|
||||
kfree(to_txq_info(sta->sta.txq[0]));
|
||||
kfree(to_txq_info(sta->sta.txq[0]));
|
||||
kfree(rcu_dereference_raw(sta->sta.rates));
|
||||
#ifdef CONFIG_MAC80211_MESH
|
||||
kfree(sta->mesh);
|
||||
@@ -531,6 +528,8 @@ __sta_info_alloc(struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_hw *hw = &local->hw;
|
||||
struct sta_info *sta;
|
||||
void *txq_data;
|
||||
int size;
|
||||
int i;
|
||||
|
||||
sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
|
||||
@@ -600,21 +599,18 @@ __sta_info_alloc(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
sta->last_connected = ktime_get_seconds();
|
||||
|
||||
if (local->ops->wake_tx_queue) {
|
||||
void *txq_data;
|
||||
int size = sizeof(struct txq_info) +
|
||||
ALIGN(hw->txq_data_size, sizeof(void *));
|
||||
size = sizeof(struct txq_info) +
|
||||
ALIGN(hw->txq_data_size, sizeof(void *));
|
||||
|
||||
txq_data = kcalloc(ARRAY_SIZE(sta->sta.txq), size, gfp);
|
||||
if (!txq_data)
|
||||
goto free;
|
||||
txq_data = kcalloc(ARRAY_SIZE(sta->sta.txq), size, gfp);
|
||||
if (!txq_data)
|
||||
goto free;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
|
||||
struct txq_info *txq = txq_data + i * size;
|
||||
for (i = 0; i < ARRAY_SIZE(sta->sta.txq); i++) {
|
||||
struct txq_info *txq = txq_data + i * size;
|
||||
|
||||
/* might not do anything for the bufferable MMPDU TXQ */
|
||||
ieee80211_txq_init(sdata, sta, txq, i);
|
||||
}
|
||||
/* might not do anything for the (bufferable) MMPDU TXQ */
|
||||
ieee80211_txq_init(sdata, sta, txq, i);
|
||||
}
|
||||
|
||||
if (sta_prepare_rate_control(local, sta, gfp))
|
||||
@@ -688,8 +684,7 @@ __sta_info_alloc(struct ieee80211_sub_if_data *sdata,
|
||||
return sta;
|
||||
|
||||
free_txq:
|
||||
if (sta->sta.txq[0])
|
||||
kfree(to_txq_info(sta->sta.txq[0]));
|
||||
kfree(to_txq_info(sta->sta.txq[0]));
|
||||
free:
|
||||
sta_info_free_link(&sta->deflink);
|
||||
#ifdef CONFIG_MAC80211_MESH
|
||||
@@ -1982,9 +1977,6 @@ ieee80211_sta_ps_deliver_response(struct sta_info *sta,
|
||||
* TIM recalculation.
|
||||
*/
|
||||
|
||||
if (!sta->sta.txq[0])
|
||||
return;
|
||||
|
||||
for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
|
||||
if (!sta->sta.txq[tid] ||
|
||||
!(driver_release_tids & BIT(tid)) ||
|
||||
@@ -2484,7 +2476,7 @@ static void sta_set_tidstats(struct sta_info *sta,
|
||||
tidstats->tx_msdu_failed = sta->deflink.status_stats.msdu_failed[tid];
|
||||
}
|
||||
|
||||
if (local->ops->wake_tx_queue && tid < IEEE80211_NUM_TIDS) {
|
||||
if (tid < IEEE80211_NUM_TIDS) {
|
||||
spin_lock_bh(&local->fq.lock);
|
||||
rcu_read_lock();
|
||||
|
||||
@@ -2812,9 +2804,6 @@ unsigned long ieee80211_sta_last_active(struct sta_info *sta)
|
||||
|
||||
static void sta_update_codel_params(struct sta_info *sta, u32 thr)
|
||||
{
|
||||
if (!sta->sdata->local->ops->wake_tx_queue)
|
||||
return;
|
||||
|
||||
if (thr && thr < STA_SLOW_THRESHOLD * sta->local->num_sta) {
|
||||
sta->cparams.target = MS2TIME(50);
|
||||
sta->cparams.interval = MS2TIME(300);
|
||||
|
||||
Reference in New Issue
Block a user