mac80211: update to 2015-12-03
[openwrt/staging/chunkeey.git] / package / kernel / mac80211 / patches / 308-ath10k-cleanup-copy-engine-send-completion.patch
diff --git a/package/kernel/mac80211/patches/308-ath10k-cleanup-copy-engine-send-completion.patch b/package/kernel/mac80211/patches/308-ath10k-cleanup-copy-engine-send-completion.patch
deleted file mode 100644 (file)
index e758665..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
-Date: Fri, 23 Oct 2015 18:01:05 +0530
-Subject: [PATCH] ath10k: cleanup copy engine send completion
-
-The physical address necessary to unmap DMA ('bufferp') is stored
-in ath10k_skb_cb as 'paddr'. ath10k doesn't rely on the meta/transfer_id
-when handling send completion (htc ep id is stored in sk_buff control
-buffer). So the unused output arguments {bufferp, nbytesp and transfer_idp}
-are removed from CE send completion. This change is needed before removing
-the shadow copy of copy engine (CE) descriptors in follow up patch.
-
-Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
-Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
----
-
---- a/drivers/net/wireless/ath/ath10k/ce.c
-+++ b/drivers/net/wireless/ath/ath10k/ce.c
-@@ -578,17 +578,13 @@ int ath10k_ce_revoke_recv_next(struct at
-  * The caller takes responsibility for any necessary locking.
-  */
- int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
--                                       void **per_transfer_contextp,
--                                       u32 *bufferp,
--                                       unsigned int *nbytesp,
--                                       unsigned int *transfer_idp)
-+                                       void **per_transfer_contextp)
- {
-       struct ath10k_ce_ring *src_ring = ce_state->src_ring;
-       u32 ctrl_addr = ce_state->ctrl_addr;
-       struct ath10k *ar = ce_state->ar;
-       unsigned int nentries_mask = src_ring->nentries_mask;
-       unsigned int sw_index = src_ring->sw_index;
--      struct ce_desc *sdesc, *sbase;
-       unsigned int read_index;
-       if (src_ring->hw_index == sw_index) {
-@@ -613,15 +609,6 @@ int ath10k_ce_completed_send_next_nolock
-       if (read_index == sw_index)
-               return -EIO;
--      sbase = src_ring->base_addr_owner_space;
--      sdesc = CE_SRC_RING_TO_DESC(sbase, sw_index);
--
--      /* Return data from completed source descriptor */
--      *bufferp = __le32_to_cpu(sdesc->addr);
--      *nbytesp = __le16_to_cpu(sdesc->nbytes);
--      *transfer_idp = MS(__le16_to_cpu(sdesc->flags),
--                         CE_DESC_FLAGS_META_DATA);
--
-       if (per_transfer_contextp)
-               *per_transfer_contextp =
-                       src_ring->per_transfer_context[sw_index];
-@@ -696,10 +683,7 @@ int ath10k_ce_cancel_send_next(struct at
- }
- int ath10k_ce_completed_send_next(struct ath10k_ce_pipe *ce_state,
--                                void **per_transfer_contextp,
--                                u32 *bufferp,
--                                unsigned int *nbytesp,
--                                unsigned int *transfer_idp)
-+                                void **per_transfer_contextp)
- {
-       struct ath10k *ar = ce_state->ar;
-       struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-@@ -707,9 +691,7 @@ int ath10k_ce_completed_send_next(struct
-       spin_lock_bh(&ar_pci->ce_lock);
-       ret = ath10k_ce_completed_send_next_nolock(ce_state,
--                                                 per_transfer_contextp,
--                                                 bufferp, nbytesp,
--                                                 transfer_idp);
-+                                                 per_transfer_contextp);
-       spin_unlock_bh(&ar_pci->ce_lock);
-       return ret;
---- a/drivers/net/wireless/ath/ath10k/ce.h
-+++ b/drivers/net/wireless/ath/ath10k/ce.h
-@@ -192,16 +192,10 @@ int ath10k_ce_completed_recv_next(struct
-  * Pops 1 completed send buffer from Source ring.
-  */
- int ath10k_ce_completed_send_next(struct ath10k_ce_pipe *ce_state,
--                                void **per_transfer_contextp,
--                                u32 *bufferp,
--                                unsigned int *nbytesp,
--                                unsigned int *transfer_idp);
-+                                void **per_transfer_contextp);
- int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
--                                       void **per_transfer_contextp,
--                                       u32 *bufferp,
--                                       unsigned int *nbytesp,
--                                       unsigned int *transfer_idp);
-+                                       void **per_transfer_contextp);
- /*==================CE Engine Initialization=======================*/
---- a/drivers/net/wireless/ath/ath10k/pci.c
-+++ b/drivers/net/wireless/ath/ath10k/pci.c
-@@ -910,9 +910,8 @@ static int ath10k_pci_diag_read_mem(stru
-                       goto done;
-               i = 0;
--              while (ath10k_ce_completed_send_next_nolock(ce_diag, NULL, &buf,
--                                                          &completed_nbytes,
--                                                          &id) != 0) {
-+              while (ath10k_ce_completed_send_next_nolock(ce_diag,
-+                                                          NULL) != 0) {
-                       mdelay(1);
-                       if (i++ > DIAG_ACCESS_CE_TIMEOUT_MS) {
-                               ret = -EBUSY;
-@@ -1073,9 +1072,8 @@ static int ath10k_pci_diag_write_mem(str
-                       goto done;
-               i = 0;
--              while (ath10k_ce_completed_send_next_nolock(ce_diag, NULL, &buf,
--                                                          &completed_nbytes,
--                                                          &id) != 0) {
-+              while (ath10k_ce_completed_send_next_nolock(ce_diag,
-+                                                          NULL) != 0) {
-                       mdelay(1);
-                       if (i++ > DIAG_ACCESS_CE_TIMEOUT_MS) {
-@@ -1139,13 +1137,9 @@ static void ath10k_pci_htc_tx_cb(struct
-       struct ath10k *ar = ce_state->ar;
-       struct sk_buff_head list;
-       struct sk_buff *skb;
--      u32 ce_data;
--      unsigned int nbytes;
--      unsigned int transfer_id;
-       __skb_queue_head_init(&list);
--      while (ath10k_ce_completed_send_next(ce_state, (void **)&skb, &ce_data,
--                                           &nbytes, &transfer_id) == 0) {
-+      while (ath10k_ce_completed_send_next(ce_state, (void **)&skb) == 0) {
-               /* no need to call tx completion for NULL pointers */
-               if (skb == NULL)
-                       continue;
-@@ -1215,12 +1209,8 @@ static void ath10k_pci_htt_tx_cb(struct
- {
-       struct ath10k *ar = ce_state->ar;
-       struct sk_buff *skb;
--      u32 ce_data;
--      unsigned int nbytes;
--      unsigned int transfer_id;
--      while (ath10k_ce_completed_send_next(ce_state, (void **)&skb, &ce_data,
--                                           &nbytes, &transfer_id) == 0) {
-+      while (ath10k_ce_completed_send_next(ce_state, (void **)&skb) == 0) {
-               /* no need to call tx completion for NULL pointers */
-               if (!skb)
-                       continue;
-@@ -1796,12 +1786,8 @@ err_dma:
- static void ath10k_pci_bmi_send_done(struct ath10k_ce_pipe *ce_state)
- {
-       struct bmi_xfer *xfer;
--      u32 ce_data;
--      unsigned int nbytes;
--      unsigned int transfer_id;
--      if (ath10k_ce_completed_send_next(ce_state, (void **)&xfer, &ce_data,
--                                        &nbytes, &transfer_id))
-+      if (ath10k_ce_completed_send_next(ce_state, (void **)&xfer))
-               return;
-       xfer->tx_done = true;