Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 122529
b: refs/heads/master
c: c112d0c
h: refs/heads/master
i:
  122527: b2fdc70
v: v3
  • Loading branch information
Luis R. Rodriguez authored and John W. Linville committed Dec 5, 2008
1 parent 1461305 commit 22d570b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 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: f8316df10c4e3bec5b4c3a5a8e026c577640c3a6
refs/heads/master: c112d0c5b89037dd618083b5fdf4bb36b0c51d77
22 changes: 20 additions & 2 deletions trunk/drivers/net/wireless/ath9k/xmit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1652,7 +1652,9 @@ static int ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
int hdrlen;
__le16 fc;

tx_info_priv = kzalloc(sizeof(*tx_info_priv), GFP_KERNEL);
tx_info_priv = kzalloc(sizeof(*tx_info_priv), GFP_ATOMIC);
if (unlikely(!tx_info_priv))
return -ENOMEM;
tx_info->rate_driver_data[0] = tx_info_priv;
hdrlen = ieee80211_get_hdrlen_from_skb(skb);
fc = hdr->frame_control;
Expand Down Expand Up @@ -1801,10 +1803,26 @@ int ath_tx_start(struct ath_softc *sc, struct sk_buff *skb,

r = ath_tx_setup_buffer(sc, bf, skb, txctl);
if (unlikely(r)) {
spin_lock_bh(&sc->sc_txbuflock);
struct ath_txq *txq = txctl->txq;

DPRINTF(sc, ATH_DBG_FATAL, "TX mem alloc failure\n");

/* upon ath_tx_processq() this TX queue will be resumed, we
* guarantee this will happen by knowing beforehand that
* we will at least have to run TX completionon one buffer
* on the queue */
spin_lock_bh(&txq->axq_lock);
if (ath_txq_depth(sc, txq->axq_qnum) > 1) {
ieee80211_stop_queue(sc->hw,
skb_get_queue_mapping(skb));
txq->stopped = 1;
}
spin_unlock_bh(&txq->axq_lock);

spin_lock_bh(&sc->sc_txbuflock);
list_add_tail(&bf->list, &sc->sc_txbuf);
spin_unlock_bh(&sc->sc_txbuflock);

return r;
}

Expand Down

0 comments on commit 22d570b

Please sign in to comment.