aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath6kl/txrx.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/txrx.c b/drivers/net/wireless/ath/ath6kl/txrx.c
index aab825152b1..740a488ef50 100644
--- a/drivers/net/wireless/ath/ath6kl/txrx.c
+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
@@ -698,21 +698,26 @@ void ath6kl_tx_complete(struct htc_target *target,
698 list_del(&packet->list); 698 list_del(&packet->list);
699 699
700 ath6kl_cookie = (struct ath6kl_cookie *)packet->pkt_cntxt; 700 ath6kl_cookie = (struct ath6kl_cookie *)packet->pkt_cntxt;
701 if (!ath6kl_cookie) 701 if (WARN_ON_ONCE(!ath6kl_cookie))
702 goto fatal; 702 continue;
703 703
704 status = packet->status; 704 status = packet->status;
705 skb = ath6kl_cookie->skb; 705 skb = ath6kl_cookie->skb;
706 eid = packet->endpoint; 706 eid = packet->endpoint;
707 map_no = ath6kl_cookie->map_no; 707 map_no = ath6kl_cookie->map_no;
708 708
709 if (!skb || !skb->data) 709 if (WARN_ON_ONCE(!skb || !skb->data)) {
710 goto fatal; 710 dev_kfree_skb(skb);
711 ath6kl_free_cookie(ar, ath6kl_cookie);
712 continue;
713 }
711 714
712 __skb_queue_tail(&skb_queue, skb); 715 __skb_queue_tail(&skb_queue, skb);
713 716
714 if (!status && (packet->act_len != skb->len)) 717 if (WARN_ON_ONCE(!status && (packet->act_len != skb->len))) {
715 goto fatal; 718 ath6kl_free_cookie(ar, ath6kl_cookie);
719 continue;
720 }
716 721
717 ar->tx_pending[eid]--; 722 ar->tx_pending[eid]--;
718 723
@@ -794,11 +799,6 @@ void ath6kl_tx_complete(struct htc_target *target,
794 wake_up(&ar->event_wq); 799 wake_up(&ar->event_wq);
795 800
796 return; 801 return;
797
798fatal:
799 WARN_ON(1);
800 spin_unlock_bh(&ar->lock);
801 return;
802} 802}
803 803
804void ath6kl_tx_data_cleanup(struct ath6kl *ar) 804void ath6kl_tx_data_cleanup(struct ath6kl *ar)