mac80211: use RCU for TX aggregation
Currently we allocate some memory for each TX aggregation session and additionally keep a state bitmap indicating the state it is in. By using RCU to protect the pointer, moving the state into the structure and some locking trickery we can avoid locking when the TX agg session is fully operational. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
a87f736d94
commit
a622ab72b4
@@ -134,15 +134,15 @@ static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
|
||||
sta->ampdu_mlme.tid_rx[i]->ssn : 0);
|
||||
|
||||
p += scnprintf(p, sizeof(buf) + buf - p, "\t\t%x",
|
||||
sta->ampdu_mlme.tid_state_tx[i]);
|
||||
!!sta->ampdu_mlme.tid_tx[i]);
|
||||
p += scnprintf(p, sizeof(buf) + buf - p, "\t%#.2x",
|
||||
sta->ampdu_mlme.tid_state_tx[i] ?
|
||||
sta->ampdu_mlme.tid_tx[i] ?
|
||||
sta->ampdu_mlme.tid_tx[i]->dialog_token : 0);
|
||||
p += scnprintf(p, sizeof(buf) + buf - p, "\t%#.3x",
|
||||
sta->ampdu_mlme.tid_state_tx[i] ?
|
||||
sta->ampdu_mlme.tid_tx[i] ?
|
||||
sta->ampdu_mlme.tid_tx[i]->ssn : 0);
|
||||
p += scnprintf(p, sizeof(buf) + buf - p, "\t%03d",
|
||||
sta->ampdu_mlme.tid_state_tx[i] ?
|
||||
sta->ampdu_mlme.tid_tx[i] ?
|
||||
skb_queue_len(&sta->ampdu_mlme.tid_tx[i]->pending) : 0);
|
||||
p += scnprintf(p, sizeof(buf) + buf - p, "\n");
|
||||
}
|
||||
|
Reference in New Issue
Block a user