ath10k: cleanup calling ath10k_htt_rx_h_unchain
authorMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Tue, 4 Oct 2016 15:49:59 +0000 (21:19 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 13 Oct 2016 13:47:50 +0000 (16:47 +0300)
'ath10k_htt_rx_h_unchain' needs to be called only if the return
value from 'ath10k_htt_rx_amsdu_pop' is 1('chained msdu's'), this
change makes it more explicit and avoids doing a skb_peek, fetching
rx descriptor pointer, checking rx msdu decap format for the case of
ret = 0 (unchained msdus). Found this change during code walk through,
not sure if this addresses any issue.

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_rx.c

index 0b4c156..285b235 100644 (file)
@@ -1463,8 +1463,7 @@ static int ath10k_unchain_msdu(struct sk_buff_head *amsdu)
 }
 
 static void ath10k_htt_rx_h_unchain(struct ath10k *ar,
-                                   struct sk_buff_head *amsdu,
-                                   bool chained)
+                                   struct sk_buff_head *amsdu)
 {
        struct sk_buff *first;
        struct htt_rx_desc *rxd;
@@ -1475,9 +1474,6 @@ static void ath10k_htt_rx_h_unchain(struct ath10k *ar,
        decap = MS(__le32_to_cpu(rxd->msdu_start.common.info1),
                   RX_MSDU_START_INFO1_DECAP_FORMAT);
 
-       if (!chained)
-               return;
-
        /* FIXME: Current unchaining logic can only handle simple case of raw
         * msdu chaining. If decapping is other than raw the chaining may be
         * more complex and this isn't handled by the current code. Don't even
@@ -1555,7 +1551,11 @@ static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
 
        num_msdus = skb_queue_len(&amsdu);
        ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status, 0xffff);
-       ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0);
+
+       /* only for ret = 1 indicates chained msdus */
+       if (ret > 0)
+               ath10k_htt_rx_h_unchain(ar, &amsdu);
+
        ath10k_htt_rx_h_filter(ar, &amsdu, rx_status);
        ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status);
        ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status);