Skip to content

Commit

Permalink
ath6kl: Complete failed tx packet in ath6kl_htc_tx_from_queue()
Browse files Browse the repository at this point in the history
Return status of ath6kl_htc_tx_issue() is ignored in
ath6kl_htc_tx_from_queue(), but failed tx packet is
is not cleaned up. To fix memory leak in this case, call
completion with error. Also, throw an error debug message
when tx fails in ath6kl_sdio_write_async() due to shortage
in bus request buffer.

kvalo: change the error message to WARN_ON_ONCE()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
  • Loading branch information
Vasanthakumar Thiagarajan authored and Kalle Valo committed Apr 30, 2012
1 parent 1881ced commit 93b42ca
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
8 changes: 7 additions & 1 deletion drivers/net/wireless/ath/ath6kl/htc_mbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -854,6 +854,7 @@ static void ath6kl_htc_tx_from_queue(struct htc_target *target,
int bundle_sent;
int n_pkts_bundle;
u8 ac = WMM_NUM_AC;
int status;

spin_lock_bh(&target->tx_lock);

Expand Down Expand Up @@ -915,7 +916,12 @@ static void ath6kl_htc_tx_from_queue(struct htc_target *target,

ath6kl_htc_tx_prep_pkt(packet, packet->info.tx.flags,
0, packet->info.tx.seqno);
ath6kl_htc_tx_issue(target, packet);
status = ath6kl_htc_tx_issue(target, packet);

if (status) {
packet->status = status;
packet->completion(packet->context, packet);
}
}

spin_lock_bh(&target->tx_lock);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/ath6kl/sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer,

bus_req = ath6kl_sdio_alloc_busreq(ar_sdio);

if (!bus_req)
if (WARN_ON_ONCE(!bus_req))
return -ENOMEM;

bus_req->address = address;
Expand Down

0 comments on commit 93b42ca

Please sign in to comment.