Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 194154
b: refs/heads/master
c: ef98c3c
h: refs/heads/master
v: v3
  • Loading branch information
Sujith authored and John W. Linville committed Mar 31, 2010
1 parent f8a8390 commit ee0bcc0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0995d110118b35c0dc5195e3ddddcc0dec263830
refs/heads/master: ef98c3cd9b68ed27eeb94b833f74860fa1a734b7
25 changes: 12 additions & 13 deletions trunk/drivers/net/wireless/ath/ath9k/htc_drv_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,32 +412,31 @@ static int ath9k_htc_aggr_oper(struct ath9k_htc_priv *priv,
if (tid > ATH9K_HTC_MAX_TID)
return -EINVAL;

memset(&aggr, 0, sizeof(struct ath9k_htc_target_aggr));

rcu_read_lock();

/* Check if we are able to retrieve the station */
sta = ieee80211_find_sta(vif, sta_addr);
if (sta) {
ista = (struct ath9k_htc_sta *) sta->drv_priv;
} else {
if (!sta) {
rcu_read_unlock();
return -EINVAL;
}

if (!ista) {
rcu_read_unlock();
return -EINVAL;
}
ista = (struct ath9k_htc_sta *) sta->drv_priv;

memset(&aggr, 0, sizeof(struct ath9k_htc_target_aggr));
if (oper)
ista->tid_state[tid] = AGGR_START;
else
ista->tid_state[tid] = AGGR_STOP;

aggr.sta_index = ista->index;

rcu_read_unlock();

aggr.tidno = tid;
aggr.aggr_enable = oper;

if (oper)
ista->tid_state[tid] = AGGR_START;
else
ista->tid_state[tid] = AGGR_STOP;

WMI_CMD_BUF(WMI_TX_AGGR_ENABLE_CMDID, &aggr);
if (ret)
ath_print(common, ATH_DBG_CONFIG,
Expand Down
14 changes: 12 additions & 2 deletions trunk/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,10 +188,20 @@ void ath9k_tx_tasklet(unsigned long data)
hdr = (struct ieee80211_hdr *) skb->data;
fc = hdr->frame_control;
tx_info = IEEE80211_SKB_CB(skb);
sta = tx_info->control.sta;

memset(&tx_info->status, 0, sizeof(tx_info->status));

rcu_read_lock();

sta = ieee80211_find_sta(priv->vif, hdr->addr1);
if (!sta) {
rcu_read_unlock();
ieee80211_tx_status(priv->hw, skb);
continue;
}

/* Check if we need to start aggregation */

if (sta && conf_is_ht(&priv->hw->conf) &&
(priv->op_flags & OP_TXAGGR)
&& !(skb->protocol == cpu_to_be16(ETH_P_PAE))) {
Expand All @@ -213,7 +223,7 @@ void ath9k_tx_tasklet(unsigned long data)

rcu_read_unlock();

memset(&tx_info->status, 0, sizeof(tx_info->status));
/* Send status to mac80211 */
ieee80211_tx_status(priv->hw, skb);
}
}
Expand Down

0 comments on commit ee0bcc0

Please sign in to comment.