diff options
Diffstat (limited to 'package/kernel/mac80211/patches/306-ath10k-use-local-memory-instead-of-shadow-descriptor.patch')
-rw-r--r-- | package/kernel/mac80211/patches/306-ath10k-use-local-memory-instead-of-shadow-descriptor.patch | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/package/kernel/mac80211/patches/306-ath10k-use-local-memory-instead-of-shadow-descriptor.patch b/package/kernel/mac80211/patches/306-ath10k-use-local-memory-instead-of-shadow-descriptor.patch deleted file mode 100644 index 58db2b2..0000000 --- a/package/kernel/mac80211/patches/306-ath10k-use-local-memory-instead-of-shadow-descriptor.patch +++ /dev/null @@ -1,60 +0,0 @@ -From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> -Date: Fri, 23 Oct 2015 18:01:03 +0530 -Subject: [PATCH] ath10k: use local memory instead of shadow descriptor - in ce_send - -Currently to avoid uncached memory access while filling up copy engine -descriptors, shadow descriptors are used. This can be optimized further -by removing shadow descriptors. To achieve that first shadow ring -dependency in ce_send is removed by creating local copy of the -descriptor on stack and make a one-shot copy into the "uncached" -descriptor. - -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 -@@ -274,7 +274,7 @@ int ath10k_ce_send_nolock(struct ath10k_ - { - struct ath10k *ar = ce_state->ar; - struct ath10k_ce_ring *src_ring = ce_state->src_ring; -- struct ce_desc *desc, *sdesc; -+ struct ce_desc *desc, sdesc; - unsigned int nentries_mask = src_ring->nentries_mask; - unsigned int sw_index = src_ring->sw_index; - unsigned int write_index = src_ring->write_index; -@@ -294,7 +294,6 @@ int ath10k_ce_send_nolock(struct ath10k_ - - desc = CE_SRC_RING_TO_DESC(src_ring->base_addr_owner_space, - write_index); -- sdesc = CE_SRC_RING_TO_DESC(src_ring->shadow_base, write_index); - - desc_flags |= SM(transfer_id, CE_DESC_FLAGS_META_DATA); - -@@ -303,11 +302,11 @@ int ath10k_ce_send_nolock(struct ath10k_ - if (flags & CE_SEND_FLAG_BYTE_SWAP) - desc_flags |= CE_DESC_FLAGS_BYTE_SWAP; - -- sdesc->addr = __cpu_to_le32(buffer); -- sdesc->nbytes = __cpu_to_le16(nbytes); -- sdesc->flags = __cpu_to_le16(desc_flags); -+ sdesc.addr = __cpu_to_le32(buffer); -+ sdesc.nbytes = __cpu_to_le16(nbytes); -+ sdesc.flags = __cpu_to_le16(desc_flags); - -- *desc = *sdesc; -+ *desc = sdesc; - - src_ring->per_transfer_context[write_index] = per_transfer_context; - -@@ -614,7 +613,7 @@ int ath10k_ce_completed_send_next_nolock - if (read_index == sw_index) - return -EIO; - -- sbase = src_ring->shadow_base; -+ sbase = src_ring->base_addr_owner_space; - sdesc = CE_SRC_RING_TO_DESC(sbase, sw_index); - - /* Return data from completed source descriptor */ |