ath10k: clean up cont frag desc init code
authorMichal Kazior <michal.kazior@tieto.com>
Thu, 21 Jan 2016 13:13:26 +0000 (14:13 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 28 Jan 2016 08:45:28 +0000 (10:45 +0200)
This makes the code easier to extend and re-use.

While at it fix _warn to _err. Other than that
there are no functional changes.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_tx.c

index b3adadb5f8243b616191d53ccf0c5995197f6587..28b8d7af8506b35d445244dac3926a274afc5b17 100644 (file)
@@ -97,6 +97,41 @@ void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id)
        idr_remove(&htt->pending_tx, msdu_id);
 }
 
+static void ath10k_htt_tx_free_cont_frag_desc(struct ath10k_htt *htt)
+{
+       size_t size;
+
+       if (!htt->frag_desc.vaddr)
+               return;
+
+       size = htt->max_num_pending_tx * sizeof(struct htt_msdu_ext_desc);
+
+       dma_free_coherent(htt->ar->dev,
+                         size,
+                         htt->frag_desc.vaddr,
+                         htt->frag_desc.paddr);
+}
+
+static int ath10k_htt_tx_alloc_cont_frag_desc(struct ath10k_htt *htt)
+{
+       struct ath10k *ar = htt->ar;
+       size_t size;
+
+       if (!ar->hw_params.continuous_frag_desc)
+               return 0;
+
+       size = htt->max_num_pending_tx * sizeof(struct htt_msdu_ext_desc);
+       htt->frag_desc.vaddr = dma_alloc_coherent(ar->dev, size,
+                                                 &htt->frag_desc.paddr,
+                                                 GFP_KERNEL);
+       if (!htt->frag_desc.vaddr) {
+               ath10k_err(ar, "failed to alloc fragment desc memory\n");
+               return -ENOMEM;
+       }
+
+       return 0;
+}
+
 int ath10k_htt_tx_alloc(struct ath10k_htt *htt)
 {
        struct ath10k *ar = htt->ar;
@@ -118,20 +153,12 @@ int ath10k_htt_tx_alloc(struct ath10k_htt *htt)
                goto free_idr_pending_tx;
        }
 
-       if (!ar->hw_params.continuous_frag_desc)
-               goto skip_frag_desc_alloc;
-
-       size = htt->max_num_pending_tx * sizeof(struct htt_msdu_ext_desc);
-       htt->frag_desc.vaddr = dma_alloc_coherent(ar->dev, size,
-                                                 &htt->frag_desc.paddr,
-                                                 GFP_KERNEL);
-       if (!htt->frag_desc.vaddr) {
-               ath10k_warn(ar, "failed to alloc fragment desc memory\n");
-               ret = -ENOMEM;
+       ret = ath10k_htt_tx_alloc_cont_frag_desc(htt);
+       if (ret) {
+               ath10k_err(ar, "failed to alloc cont frag desc: %d\n", ret);
                goto free_txbuf;
        }
 
-skip_frag_desc_alloc:
        return 0;
 
 free_txbuf:
@@ -139,8 +166,10 @@ free_txbuf:
                          sizeof(struct ath10k_htt_txbuf);
        dma_free_coherent(htt->ar->dev, size, htt->txbuf.vaddr,
                          htt->txbuf.paddr);
+
 free_idr_pending_tx:
        idr_destroy(&htt->pending_tx);
+
        return ret;
 }
 
@@ -174,12 +203,7 @@ void ath10k_htt_tx_free(struct ath10k_htt *htt)
                                  htt->txbuf.paddr);
        }
 
-       if (htt->frag_desc.vaddr) {
-               size = htt->max_num_pending_tx *
-                                 sizeof(struct htt_msdu_ext_desc);
-               dma_free_coherent(htt->ar->dev, size, htt->frag_desc.vaddr,
-                                 htt->frag_desc.paddr);
-       }
+       ath10k_htt_tx_free_cont_frag_desc(htt);
 }
 
 void ath10k_htt_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb)
This page took 0.026592 seconds and 5 git commands to generate.