Historical ath9k-devel archives
 help / color / mirror / Atom feed
* [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups
@ 2013-04-23  9:56 Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 1/3] ath10k: update FIXME comments Bartosz Markowski
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Bartosz Markowski @ 2013-04-23  9:56 UTC (permalink / raw)
  To: ath9k-devel

Bartosz Markowski (3):
  ath10k: update FIXME comments
  ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET
  ath10k: replace TARGET_READ/WRITE macros with inline funcitons

 drivers/net/wireless/ath/ath10k/ce.c     |   82 ++++++++------------
 drivers/net/wireless/ath/ath10k/ce.h     |  124 +++++++++++++++---------------
 drivers/net/wireless/ath/ath10k/htt_rx.c |    2 +-
 drivers/net/wireless/ath/ath10k/pci.c    |   27 ++-----
 drivers/net/wireless/ath/ath10k/pci.h    |   44 ++++++-----
 5 files changed, 123 insertions(+), 156 deletions(-)

-- 
1.7.10

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ath9k-devel] [PATCH 1/3] ath10k: update FIXME comments
  2013-04-23  9:56 [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Bartosz Markowski
@ 2013-04-23  9:56 ` Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 2/3] ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET Bartosz Markowski
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Bartosz Markowski @ 2013-04-23  9:56 UTC (permalink / raw)
  To: ath9k-devel

Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
 drivers/net/wireless/ath/ath10k/htt_rx.c |    2 +-
 drivers/net/wireless/ath/ath10k/pci.c    |    3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index 7c90a2c..e3be590 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -813,7 +813,7 @@ static void ath10k_htt_rx_handler(struct htt_struct *htt, struct htt_rx_indicati
 				continue;
 			}
 
-			/* FIXME: qca_main doesn't support chaining either yet.
+			/* FIXME: we do not support chaining yet.
 			 * this needs investigation */
 			if (msdu_chaining) {
 				ath10k_warn("msdu_chaining is true\n");
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index 0d1523b..b35b7a0 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -2353,8 +2353,7 @@ err_ar_pci:
 	kfree(ar_pci);
 
 	/*
-	 * FIXME: for some reason qca_main loops probe
-	 * ATH_PCI_PROBE_RETRY_MAX times, do we need that in ath10k?
+	 * FIXME: Get rid of this hack as soon as HW is mature enough.
 	 */
 	if (ret && retries--)
 		goto retry;
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [ath9k-devel] [PATCH 2/3] ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET
  2013-04-23  9:56 [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 1/3] ath10k: update FIXME comments Bartosz Markowski
@ 2013-04-23  9:56 ` Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 3/3] ath10k: replace TARGET_READ/WRITE macros with inline funcitons Bartosz Markowski
  2013-04-24 10:47 ` [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Kalle Valo
  3 siblings, 0 replies; 5+ messages in thread
From: Bartosz Markowski @ 2013-04-23  9:56 UTC (permalink / raw)
  To: ath9k-devel

Rename the inline funciton into ath10k_set_source_ring_write_index().

NOTE: This function is a wrapper to workaround QCA988x_1.0 HW CE problem.
If we decide to drop this HW revision support in the future, we
may remove this function as well.

Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
 drivers/net/wireless/ath/ath10k/ce.c  |    2 +-
 drivers/net/wireless/ath/ath10k/pci.h |   15 ++++++++++-----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index d5351a3..a72ed67 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -116,7 +116,7 @@ static int ath10k_ce_send_nolock(struct ce_state *ce_state,
 
 	/* WORKAROUND */
 	if (!(flags & CE_SEND_FLAG_GATHER))
-		WAR_CE_SRC_RING_WRITE_IDX_SET(ar, ctrl_addr, write_index);
+		ath10k_set_source_ring_write_index(ar, ctrl_addr, write_index);
 
 	src_ring->write_index = write_index;
 exit:
diff --git a/drivers/net/wireless/ath/ath10k/pci.h b/drivers/net/wireless/ath/ath10k/pci.h
index 188593e..7270e72 100644
--- a/drivers/net/wireless/ath/ath10k/pci.h
+++ b/drivers/net/wireless/ath/ath10k/pci.h
@@ -316,10 +316,14 @@ static inline void pci_write32_v1_workaround(struct ath10k *ar,
 
 #define TARGET_READ(targid, offset) ioread32(targid + (offset))
 
-
-static inline void WAR_CE_SRC_RING_WRITE_IDX_SET(struct ath10k *ar,
-						 u32 ctrl_addr,
-						 unsigned int write_index)
+/*
+ * FIXME: This function is a wrapper to workaround QCA988x_1.0 HW CE problem.
+          If we decide to drop this HW revision support in the future, we
+          may drop the function as well.
+ */
+static inline void ath10k_set_source_ring_write_index(struct ath10k *ar,
+						      u32 ctrl_addr,
+						      unsigned int write_index)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
 	void __iomem *indicator_addr;
@@ -330,7 +334,8 @@ static inline void WAR_CE_SRC_RING_WRITE_IDX_SET(struct ath10k *ar,
 		return;
 	}
 
-	/* use the workaround logic */
+	/* workaround path starts from here */
+
 	indicator_addr = targid + ctrl_addr + DST_WATERMARK_ADDRESS;
 
 	if (ctrl_addr == CE_BASE_ADDRESS(ar, CDC_WAR_DATA_CE)) {
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [ath9k-devel] [PATCH 3/3] ath10k: replace TARGET_READ/WRITE macros with inline funcitons
  2013-04-23  9:56 [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 1/3] ath10k: update FIXME comments Bartosz Markowski
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 2/3] ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET Bartosz Markowski
@ 2013-04-23  9:56 ` Bartosz Markowski
  2013-04-24 10:47 ` [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Kalle Valo
  3 siblings, 0 replies; 5+ messages in thread
From: Bartosz Markowski @ 2013-04-23  9:56 UTC (permalink / raw)
  To: ath9k-devel

Rename and change into inline functions:
* ath10k_pci_read2
* ath10k_pci_write32

Simplify the argument lists. We store the iomem address in
ath_pci structure. So simply pass to new read/write32 functions
pointer to ath10k struct and allow them to dereference the address.
Those, get rid of targid (intermediate) variables.

Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
 drivers/net/wireless/ath/ath10k/ce.c  |   80 ++++++++-------------
 drivers/net/wireless/ath/ath10k/ce.h  |  124 ++++++++++++++++-----------------
 drivers/net/wireless/ath/ath10k/pci.c |   24 ++-----
 drivers/net/wireless/ath/ath10k/pci.h |   31 +++++----
 4 files changed, 111 insertions(+), 148 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index a72ed67..8073fc5 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -214,7 +214,6 @@ int ath10k_ce_recv_buf_enqueue(struct ce_state *ce_state,
 	u32 ctrl_addr = ce_state->ctrl_addr;
 	struct ath10k *ar = ce_state->ar;
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 	unsigned int nentries_mask = dest_ring->nentries_mask;
 	unsigned int write_index;
 	unsigned int sw_index;
@@ -239,7 +238,7 @@ int ath10k_ce_recv_buf_enqueue(struct ce_state *ce_state,
 
 		/* Update Destination Ring Write Index */
 		write_index = CE_RING_IDX_INCR(nentries_mask, write_index);
-		CE_DEST_RING_WRITE_IDX_SET(ar, targid, ctrl_addr, write_index);
+		CE_DEST_RING_WRITE_IDX_SET(ar, ctrl_addr, write_index);
 		dest_ring->write_index = write_index;
 		ret = 0;
 	} else {
@@ -397,8 +396,6 @@ static int ath10k_ce_completed_send_next_nolock(struct ce_state *ce_state,
 	struct ce_ring_state *src_ring = ce_state->src_ring;
 	u32 ctrl_addr = ce_state->ctrl_addr;
 	struct ath10k *ar = ce_state->ar;
-	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 	unsigned int nentries_mask = src_ring->nentries_mask;
 	unsigned int sw_index = src_ring->sw_index;
 	unsigned int read_index;
@@ -413,8 +410,7 @@ static int ath10k_ce_completed_send_next_nolock(struct ce_state *ce_state,
 		 * value of the HW index has become stale.
 		 */
 		ath10k_pci_wake(ar);
-		src_ring->hw_index =
-		    CE_SRC_RING_READ_IDX_GET(targid, ctrl_addr);
+		src_ring->hw_index = CE_SRC_RING_READ_IDX_GET(ar, ctrl_addr);
 		ath10k_pci_sleep(ar);
 	}
 	read_index = src_ring->hw_index;
@@ -534,7 +530,6 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
 	struct ce_state *ce_state = ar_pci->ce_id_to_state[ce_id];
 	u32 ctrl_addr = ce_state->ctrl_addr;
-	void __iomem *targid = ar_pci->mem;
 	void *transfer_context;
 	u32 buf;
 	unsigned int nbytes;
@@ -545,8 +540,7 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 	spin_lock_bh(&ar_pci->ce_lock);
 
 	/* Clear the copy-complete interrupts that will be handled here. */
-	CE_ENGINE_INT_STATUS_CLEAR(ar, targid, ctrl_addr,
-				   HOST_IS_COPY_COMPLETE_MASK);
+	CE_ENGINE_INT_STATUS_CLEAR(ar, ctrl_addr, HOST_IS_COPY_COMPLETE_MASK);
 
 	if (ce_state->recv_cb) {
 		/*
@@ -558,8 +552,7 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 							    &buf, &nbytes,
 							    &id, &flags) == 0) {
 			spin_unlock_bh(&ar_pci->ce_lock);
-			ce_state->recv_cb(ce_state, transfer_context, buf,
-					  nbytes, id, flags);
+			ce_state->recv_cb(ce_state, transfer_context, buf, nbytes, id, flags);
 			spin_lock_bh(&ar_pci->ce_lock);
 		}
 	}
@@ -575,8 +568,7 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 							    &nbytes,
 							    &id) == 0) {
 			spin_unlock_bh(&ar_pci->ce_lock);
-			ce_state->send_cb(ce_state, transfer_context, buf,
-					  nbytes, id);
+			ce_state->send_cb(ce_state, transfer_context, buf, nbytes, id);
 			spin_lock_bh(&ar_pci->ce_lock);
 		}
 	}
@@ -585,8 +577,7 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 	 * Misc CE interrupts are not being handled, but still need
 	 * to be cleared.
 	 */
-	CE_ENGINE_INT_STATUS_CLEAR(ar, targid, ctrl_addr,
-				   CE_WATERMARK_MASK);
+	CE_ENGINE_INT_STATUS_CLEAR(ar, ctrl_addr, CE_WATERMARK_MASK);
 
 	spin_unlock_bh(&ar_pci->ce_lock);
 	ath10k_pci_sleep(ar);
@@ -601,12 +592,11 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id)
 void ath10k_ce_per_engine_service_any(struct ath10k *ar)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 	int ce_id;
 	u32 intr_summary;
 
 	ath10k_pci_wake(ar);
-	intr_summary = CE_INTERRUPT_SUMMARY(ar, targid);
+	intr_summary = CE_INTERRUPT_SUMMARY(ar);
 
 	for (ce_id = 0; intr_summary && (ce_id < ar_pci->ce_count); ce_id++) {
 		if (intr_summary & (1 << ce_id))
@@ -633,19 +623,15 @@ static void ath10k_ce_per_engine_handler_adjust(struct ce_state *ce_state,
 {
 	u32 ctrl_addr = ce_state->ctrl_addr;
 	struct ath10k *ar = ce_state->ar;
-	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 
 	ath10k_pci_wake(ar);
 
-	if ((!disable_copy_compl_intr) &&
-	    (ce_state->send_cb || ce_state->recv_cb)) {
-		CE_COPY_COMPLETE_INTR_ENABLE(ar, targid, ctrl_addr);
-	} else {
-		CE_COPY_COMPLETE_INTR_DISABLE(ar, targid, ctrl_addr);
-	}
+	if ((!disable_copy_compl_intr) && (ce_state->send_cb || ce_state->recv_cb))
+		CE_COPY_COMPLETE_INTR_ENABLE(ar, ctrl_addr);
+	else
+		CE_COPY_COMPLETE_INTR_DISABLE(ar, ctrl_addr);
 
-	CE_WATERMARK_INTR_DISABLE(ar, targid, ctrl_addr);
+	CE_WATERMARK_INTR_DISABLE(ar, ctrl_addr);
 
 	ath10k_pci_sleep(ar);
 }
@@ -653,7 +639,6 @@ static void ath10k_ce_per_engine_handler_adjust(struct ce_state *ce_state,
 void ath10k_ce_disable_interrupts(struct ath10k *ar)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 	int ce_id;
 
 	ath10k_pci_wake(ar);
@@ -661,7 +646,7 @@ void ath10k_ce_disable_interrupts(struct ath10k *ar)
 		struct ce_state *ce_state = ar_pci->ce_id_to_state[ce_id];
 		u32 ctrl_addr = ce_state->ctrl_addr;
 
-		CE_COPY_COMPLETE_INTR_DISABLE(ar, targid, ctrl_addr);
+		CE_COPY_COMPLETE_INTR_DISABLE(ar, ctrl_addr);
 	}
 	ath10k_pci_sleep(ar);
 }
@@ -710,7 +695,6 @@ static int ath10k_ce_init_src_ring(struct ath10k *ar,
 	unsigned int nentries = attr->src_nentries;
 	unsigned int ce_nbytes;
 	u32 ctrl_addr = CE_BASE_ADDRESS(ar, ce_id);
-	void __iomem *targid = ar_pci->mem;
 	dma_addr_t base_addr;
 	char *ptr;
 
@@ -733,9 +717,9 @@ static int ath10k_ce_init_src_ring(struct ath10k *ar,
 
 	ath10k_pci_wake(ar);
 	src_ring->hw_index = src_ring->sw_index =
-		CE_SRC_RING_READ_IDX_GET(targid, ctrl_addr);
+		CE_SRC_RING_READ_IDX_GET(ar, ctrl_addr);
 	src_ring->write_index =
-		CE_SRC_RING_WRITE_IDX_GET(targid, ctrl_addr);
+		CE_SRC_RING_WRITE_IDX_GET(ar, ctrl_addr);
 	ath10k_pci_sleep(ar);
 
 	src_ring->per_transfer_context = (void **)ptr;
@@ -779,14 +763,12 @@ static int ath10k_ce_init_src_ring(struct ath10k *ar,
 		  CE_DESC_RING_ALIGN - 1) & ~(CE_DESC_RING_ALIGN - 1));
 
 	ath10k_pci_wake(ar);
-	CE_SRC_RING_BASE_ADDR_SET(ar, targid, ctrl_addr,
-				  src_ring->base_addr_ce_space);
-	CE_SRC_RING_SZ_SET(ar, targid, ctrl_addr, nentries);
-	CE_SRC_RING_DMAX_SET(ar, targid, ctrl_addr,
-			     attr->src_sz_max);
-	CE_SRC_RING_BYTE_SWAP_SET(ar, targid, ctrl_addr, 0);
-	CE_SRC_RING_LOWMARK_SET(ar, targid, ctrl_addr, 0);
-	CE_SRC_RING_HIGHMARK_SET(ar, targid, ctrl_addr, nentries);
+	CE_SRC_RING_BASE_ADDR_SET(ar, ctrl_addr, src_ring->base_addr_ce_space);
+	CE_SRC_RING_SZ_SET(ar, ctrl_addr, nentries);
+	CE_SRC_RING_DMAX_SET(ar, ctrl_addr, attr->src_sz_max);
+	CE_SRC_RING_BYTE_SWAP_SET(ar, ctrl_addr, 0);
+	CE_SRC_RING_LOWMARK_SET(ar, ctrl_addr, 0);
+	CE_SRC_RING_HIGHMARK_SET(ar, ctrl_addr, nentries);
 	ath10k_pci_sleep(ar);
 
 	return 0;
@@ -802,7 +784,6 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar,
 	unsigned int nentries = attr->dest_nentries;
 	unsigned int ce_nbytes;
 	u32 ctrl_addr = CE_BASE_ADDRESS(ar, ce_id);
-	void __iomem *targid = ar_pci->mem;
 	dma_addr_t base_addr;
 	char *ptr;
 
@@ -824,8 +805,8 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar,
 	dest_ring->nentries_mask = nentries - 1;
 
 	ath10k_pci_wake(ar);
-	dest_ring->sw_index = CE_DEST_RING_READ_IDX_GET(targid, ctrl_addr);
-	dest_ring->write_index = CE_DEST_RING_WRITE_IDX_GET(targid, ctrl_addr);
+	dest_ring->sw_index = CE_DEST_RING_READ_IDX_GET(ar, ctrl_addr);
+	dest_ring->write_index = CE_DEST_RING_WRITE_IDX_GET(ar, ctrl_addr);
 	ath10k_pci_sleep(ar);
 
 	dest_ring->per_transfer_context = (void **)ptr;
@@ -864,12 +845,11 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar,
 	}
 
 	ath10k_pci_wake(ar);
-	CE_DEST_RING_BASE_ADDR_SET(ar, targid, ctrl_addr,
-				   dest_ring->base_addr_ce_space);
-	CE_DEST_RING_SZ_SET(ar, targid, ctrl_addr, nentries);
-	CE_DEST_RING_BYTE_SWAP_SET(ar, targid, ctrl_addr, 0);
-	CE_DEST_RING_LOWMARK_SET(ar, targid, ctrl_addr, 0);
-	CE_DEST_RING_HIGHMARK_SET(ar, targid, ctrl_addr, nentries);
+	CE_DEST_RING_BASE_ADDR_SET(ar, ctrl_addr, dest_ring->base_addr_ce_space);
+	CE_DEST_RING_SZ_SET(ar, ctrl_addr, nentries);
+	CE_DEST_RING_BYTE_SWAP_SET(ar, ctrl_addr, 0);
+	CE_DEST_RING_LOWMARK_SET(ar, ctrl_addr, 0);
+	CE_DEST_RING_HIGHMARK_SET(ar, ctrl_addr, nentries);
 	ath10k_pci_sleep(ar);
 
 	return 0;
@@ -918,10 +898,8 @@ struct ce_state *ath10k_ce_init(struct ath10k *ar,
 				unsigned int ce_id,
 				struct ce_attr *attr)
 {
-	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
 	struct ce_state *ce_state;
 	u32 ctrl_addr = CE_BASE_ADDRESS(ar, ce_id);
-	void __iomem *targid = ar_pci->mem;
 
 	ce_state = ath10k_ce_init_state(ar, ce_id, attr);
 	if (!ce_state) {
@@ -947,7 +925,7 @@ struct ce_state *ath10k_ce_init(struct ath10k *ar,
 
 	/* Enable CE error interrupts */
 	ath10k_pci_wake(ar);
-	CE_ERROR_INTR_ENABLE(ar, targid, ctrl_addr);
+	CE_ERROR_INTR_ENABLE(ar, ctrl_addr);
 	ath10k_pci_sleep(ar);
 
 	return ce_state;
diff --git a/drivers/net/wireless/ath/ath10k/ce.h b/drivers/net/wireless/ath/ath10k/ce.h
index 084b997..bd7188d 100644
--- a/drivers/net/wireless/ath/ath10k/ce.h
+++ b/drivers/net/wireless/ath/ath10k/ce.h
@@ -477,104 +477,104 @@ struct ce_attr {
 	(CE0_BASE_ADDRESS + \
 	(CE1_BASE_ADDRESS - CE0_BASE_ADDRESS)*(ce_id))
 
-#define CE_SRC_RING_WRITE_IDX_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + SR_WR_INDEX_ADDRESS, (n))
+#define CE_SRC_RING_WRITE_IDX_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + SR_WR_INDEX_ADDRESS, (n))
 
-#define CE_SRC_RING_WRITE_IDX_GET(targid, ce_ctrl_addr) \
-	TARGET_READ((targid), (ce_ctrl_addr) + SR_WR_INDEX_ADDRESS)
+#define CE_SRC_RING_WRITE_IDX_GET(ar, ce_ctrl_addr) \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + SR_WR_INDEX_ADDRESS)
 
-#define CE_SRC_RING_READ_IDX_GET(targid, ce_ctrl_addr) \
-	TARGET_READ((targid), (ce_ctrl_addr) + CURRENT_SRRI_ADDRESS)
+#define CE_SRC_RING_READ_IDX_GET(ar, ce_ctrl_addr) \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + CURRENT_SRRI_ADDRESS)
 
-#define CE_SRC_RING_BASE_ADDR_SET(ar, targid, ce_ctrl_addr, addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + SR_BA_ADDRESS, (addr))
+#define CE_SRC_RING_BASE_ADDR_SET(ar, ce_ctrl_addr, addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + SR_BA_ADDRESS, (addr))
 
-#define CE_SRC_RING_SZ_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + SR_SIZE_ADDRESS, (n))
+#define CE_SRC_RING_SZ_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + SR_SIZE_ADDRESS, (n))
 
-#define CE_SRC_RING_DMAX_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
+#define CE_SRC_RING_DMAX_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
 		~CE_CTRL1_DMAX_LENGTH_MASK) | \
 		CE_CTRL1_DMAX_LENGTH_SET(n))
 
-#define CE_SRC_RING_BYTE_SWAP_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
+#define CE_SRC_RING_BYTE_SWAP_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
 		~CE_CTRL1_SRC_RING_BYTE_SWAP_EN_MASK) | \
 		CE_CTRL1_SRC_RING_BYTE_SWAP_EN_SET(n))
 
-#define CE_DEST_RING_BYTE_SWAP_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
+#define CE_DEST_RING_BYTE_SWAP_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + CE_CTRL1_ADDRESS) & \
 		~CE_CTRL1_DST_RING_BYTE_SWAP_EN_MASK) | \
 		CE_CTRL1_DST_RING_BYTE_SWAP_EN_SET(n))
 
-#define CE_DEST_RING_WRITE_IDX_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + DST_WR_INDEX_ADDRESS, (n))
+#define CE_DEST_RING_WRITE_IDX_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + DST_WR_INDEX_ADDRESS, (n))
 
-#define CE_DEST_RING_WRITE_IDX_GET(targid, ce_ctrl_addr) \
-	TARGET_READ((targid), (ce_ctrl_addr) + DST_WR_INDEX_ADDRESS)
+#define CE_DEST_RING_WRITE_IDX_GET(ar, ce_ctrl_addr) \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + DST_WR_INDEX_ADDRESS)
 
-#define CE_DEST_RING_READ_IDX_GET(targid, ce_ctrl_addr) \
-	TARGET_READ((targid), (ce_ctrl_addr) + CURRENT_DRRI_ADDRESS)
+#define CE_DEST_RING_READ_IDX_GET(ar, ce_ctrl_addr) \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + CURRENT_DRRI_ADDRESS)
 
-#define CE_DEST_RING_BASE_ADDR_SET(ar, targid, ce_ctrl_addr, addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + DR_BA_ADDRESS, (addr))
+#define CE_DEST_RING_BASE_ADDR_SET(ar, ce_ctrl_addr, addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + DR_BA_ADDRESS, (addr))
 
-#define CE_DEST_RING_SZ_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + DR_SIZE_ADDRESS, (n))
+#define CE_DEST_RING_SZ_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + DR_SIZE_ADDRESS, (n))
 
-#define CE_SRC_RING_HIGHMARK_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS) & \
+#define CE_SRC_RING_HIGHMARK_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS) & \
 		~SRC_WATERMARK_HIGH_MASK) | SRC_WATERMARK_HIGH_SET(n))
 
-#define CE_SRC_RING_LOWMARK_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS) & \
+#define CE_SRC_RING_LOWMARK_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + SRC_WATERMARK_ADDRESS) & \
 		~SRC_WATERMARK_LOW_MASK) | SRC_WATERMARK_LOW_SET(n))
 
-#define CE_DEST_RING_HIGHMARK_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS) & \
+#define CE_DEST_RING_HIGHMARK_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS) & \
 		~DST_WATERMARK_HIGH_MASK) | DST_WATERMARK_HIGH_SET(n))
 
-#define CE_DEST_RING_LOWMARK_SET(ar, targid, ce_ctrl_addr, n) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS, \
-	(TARGET_READ((targid), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS) & \
+#define CE_DEST_RING_LOWMARK_SET(ar, ce_ctrl_addr, n) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS, \
+	(ath10k_pci_read32((ar), (ce_ctrl_addr) + DST_WATERMARK_ADDRESS) & \
 		~DST_WATERMARK_LOW_MASK) | DST_WATERMARK_LOW_SET(n))
 
-#define CE_COPY_COMPLETE_INTR_ENABLE(ar, targid, ce_ctrl_addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
-	TARGET_READ((targid), (ce_ctrl_addr) + HOST_IE_ADDRESS) | \
+#define CE_COPY_COMPLETE_INTR_ENABLE(ar, ce_ctrl_addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS) | \
 		HOST_IE_COPY_COMPLETE_MASK)
 
-#define CE_COPY_COMPLETE_INTR_DISABLE(ar, targid, ce_ctrl_addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
-	TARGET_READ((targid), (ce_ctrl_addr) + HOST_IE_ADDRESS) & \
+#define CE_COPY_COMPLETE_INTR_DISABLE(ar, ce_ctrl_addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS) & \
 		~HOST_IE_COPY_COMPLETE_MASK)
 
-#define CE_WATERMARK_INTR_ENABLE(ar, targid, ce_ctrl_addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
-	TARGET_READ((targid), (ce_ctrl_addr) + HOST_IE_ADDRESS) | \
+#define CE_WATERMARK_INTR_ENABLE(ar, ce_ctrl_addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS) | \
 		CE_WATERMARK_MASK)
 
-#define CE_WATERMARK_INTR_DISABLE(ar, targid, ce_ctrl_addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
-	TARGET_READ((targid), (ce_ctrl_addr) + HOST_IE_ADDRESS) & \
+#define CE_WATERMARK_INTR_DISABLE(ar, ce_ctrl_addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS, \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + HOST_IE_ADDRESS) & \
 		~CE_WATERMARK_MASK)
 
-#define CE_ERROR_INTR_ENABLE(ar, targid, ce_ctrl_addr) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr) + MISC_IE_ADDRESS, \
-	TARGET_READ((targid), (ce_ctrl_addr) + MISC_IE_ADDRESS) | \
+#define CE_ERROR_INTR_ENABLE(ar, ce_ctrl_addr) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr) + MISC_IE_ADDRESS, \
+	ath10k_pci_read32((ar), (ce_ctrl_addr) + MISC_IE_ADDRESS) | \
 		CE_ERROR_MASK)
 
-#define CE_ENGINE_INT_STATUS_GET(targid, ce_ctrl_addr) \
-	TARGET_READ((targid), (ce_ctrl_addr)+HOST_IS_ADDRESS)
+#define CE_ENGINE_INT_STATUS_GET(ar, ce_ctrl_addr) \
+	ath10k_pci_read32((ar), (ce_ctrl_addr)+HOST_IS_ADDRESS)
 
-#define CE_ENGINE_INT_STATUS_CLEAR(ar, targid, ce_ctrl_addr, mask) \
-	TARGET_WRITE((ar), (targid), (ce_ctrl_addr)+HOST_IS_ADDRESS, (mask))
+#define CE_ENGINE_INT_STATUS_CLEAR(ar, ce_ctrl_addr, mask) \
+	ath10k_pci_write32((ar), (ce_ctrl_addr)+HOST_IS_ADDRESS, (mask))
 
 #define CE_WATERMARK_MASK (HOST_IS_SRC_RING_LOW_WATERMARK_MASK  | \
 			   HOST_IS_SRC_RING_HIGH_WATERMARK_MASK | \
@@ -607,9 +607,9 @@ struct ce_attr {
 		CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_LSB)
 #define CE_WRAPPER_INTERRUPT_SUMMARY_ADDRESS			0x0000
 
-#define CE_INTERRUPT_SUMMARY(ar, targid) \
+#define CE_INTERRUPT_SUMMARY(ar) \
 	CE_WRAPPER_INTERRUPT_SUMMARY_HOST_MSI_GET( \
-		TARGET_READ((targid), CE_WRAPPER_BASE_ADDRESS + \
+		ath10k_pci_read32((ar), CE_WRAPPER_BASE_ADDRESS + \
 		CE_WRAPPER_INTERRUPT_SUMMARY_ADDRESS))
 
 #endif /* _CE_H_ */
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index b35b7a0..b0110e5 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -102,7 +102,6 @@ static int ath10k_pci_diag_read_mem(struct ath10k *ar, u32 address, u8 *data,
 				    int nbytes)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid;
 	int ret = 0;
 	u32 buf;
 	unsigned int completed_nbytes, orig_nbytes, remaining_bytes;
@@ -133,7 +132,6 @@ static int ath10k_pci_diag_read_mem(struct ath10k *ar, u32 address, u8 *data,
 		return ret;
 	}
 
-	targid = ar_pci->mem;
 	ce_diag = ar_pci->ce_diag;
 
 	/*
@@ -253,13 +251,8 @@ static int ath10k_pci_diag_read_access(struct ath10k *ar, u32 address, u32 *data
 		return ath10k_pci_diag_read_mem(ar, address, (u8 *)data,
 						sizeof(u32));
 	else {
-		struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-		void __iomem *targid;
-
-		targid = ar_pci->mem;
-
 		ath10k_pci_wake(ar);
-		*data = TARGET_READ(targid, address);
+		*data = ath10k_pci_read32(ar, address);
 		ath10k_pci_sleep(ar);
 		return 0;
 	}
@@ -269,7 +262,6 @@ static int ath10k_pci_diag_write_mem(struct ath10k *ar, u32 address, u8 *data,
 				     int nbytes)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid;
 	int ret = 0;
 	u32 buf;
 	unsigned int completed_nbytes, orig_nbytes, remaining_bytes;
@@ -281,7 +273,6 @@ static int ath10k_pci_diag_write_mem(struct ath10k *ar, u32 address, u8 *data,
 	dma_addr_t ce_data_base = 0;
 	int i;
 
-	targid = ar_pci->mem;
 	ce_diag = ar_pci->ce_diag;
 
 	/*
@@ -408,13 +399,8 @@ static int ath10k_pci_diag_write_access(struct ath10k *ar, u32 address,
 		return ath10k_pci_diag_write_mem(ar, address, (u8 *) &data_buf,
 					  sizeof(u32));
 	} else {
-		struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-		void __iomem *targid;
-
-		targid = ar_pci->mem;
-
 		ath10k_pci_wake(ar);
-		TARGET_WRITE(ar, targid, address, data);
+		ath10k_pci_write32(ar, address, data);
 		ath10k_pci_sleep(ar);
 
 		return 0;
@@ -1708,18 +1694,16 @@ ce_deinit:
 static void ath10k_pci_fw_interrupt_handler(struct ath10k *ar)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
-	void __iomem *targid = ar_pci->mem;
 	u32 fw_indicator_address, fw_indicator;
 
 	ath10k_pci_wake(ar);
 
 	fw_indicator_address = ar_pci->fw_indicator_address;
-	fw_indicator = TARGET_READ(targid, fw_indicator_address);
+	fw_indicator = ath10k_pci_read32(ar, fw_indicator_address);
 
 	if (fw_indicator & FW_IND_EVENT_PENDING) {
 		/* ACK: clear Target-side pending event */
-		TARGET_WRITE(ar, targid, fw_indicator_address,
-			     fw_indicator & ~FW_IND_EVENT_PENDING);
+		ath10k_pci_write32(ar, fw_indicator_address, fw_indicator & ~FW_IND_EVENT_PENDING);
 		ath10k_pci_sleep(ar);
 
 		if (ar_pci->started)
diff --git a/drivers/net/wireless/ath/ath10k/pci.h b/drivers/net/wireless/ath/ath10k/pci.h
index 7270e72..5396150 100644
--- a/drivers/net/wireless/ath/ath10k/pci.h
+++ b/drivers/net/wireless/ath/ath10k/pci.h
@@ -259,11 +259,10 @@ static inline struct ath10k_pci *ath10k_pci_priv(struct ath10k *ar)
 /* Wait up to this many Ms for a Diagnostic Access CE operation to complete */
 #define DIAG_ACCESS_CE_TIMEOUT_MS 10
 
-static inline void pci_write32_v1_workaround(struct ath10k *ar,
-					     void __iomem *addr,
-					     u32 offset, u32 value)
+static inline void pci_write32_v1_workaround(struct ath10k *ar, u32 offset, u32 value)
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
+	void __iomem *addr = ar_pci->mem;
 
 	if (ar_pci->hw_v1_workaround) {
 		unsigned long irq_flags;
@@ -281,8 +280,8 @@ static inline void pci_write32_v1_workaround(struct ath10k *ar,
 }
 
 /*
- * This API allows the Host to access Target registers of a given
- * A_target_id_t directly and relatively efficiently over PCIe.
+ * This API allows the Host to access Target registers directly
+ * and relatively efficiently over PCIe.
  * This allows the Host to avoid extra overhead associated with
  * sending a message to firmware and waiting for a response message
  * from firmware, as is done on other interconnects.
@@ -293,10 +292,8 @@ static inline void pci_write32_v1_workaround(struct ath10k *ar,
  * and to verify that it is awake and will remain awake.
  *
  * Usage:
- *   During initialization, use TARGET_ID to obtain an 'target ID'
- *   for use with these interfaces.
  *
- *   Use TARGET_READ and TARGET_WRITE to access Target space.
+ *   Use ath10k_pci_read32 and ath10k_pci_write32 to access Target space.
  *   These calls must be bracketed by ath10k_pci_wake and
  *   ath10k_pci_sleep.  A single BEGIN/END pair is adequate for
  *   multiple READ/WRITE operations.
@@ -311,10 +308,15 @@ static inline void pci_write32_v1_workaround(struct ath10k *ar,
  *   directly accessible.  BEGIN/END is under a reference counter;
  *   multiple code paths may issue BEGIN/END on a single targid.
  */
-#define TARGET_WRITE(ar, targid, offset, value) \
-	pci_write32_v1_workaround(ar, targid , (offset), (value))
+static inline void ath10k_pci_write32(struct ath10k *ar, u32 offset, u32 value) {
+	pci_write32_v1_workaround(ar, offset, value);
+}
+
+static inline u32 ath10k_pci_read32(struct ath10k *ar, u32 offset) {
+	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
 
-#define TARGET_READ(targid, offset) ioread32(targid + (offset))
+	return ioread32(ar_pci->mem + offset);
+}
 
 /*
  * FIXME: This function is a wrapper to workaround QCA988x_1.0 HW CE problem.
@@ -327,16 +329,15 @@ static inline void ath10k_set_source_ring_write_index(struct ath10k *ar,
 {
 	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
 	void __iomem *indicator_addr;
-	void __iomem *targid = ar_pci->mem;
 
 	if (!ar_pci->hw_v1_workaround) {
-		CE_SRC_RING_WRITE_IDX_SET(ar, targid, ctrl_addr, write_index);
+		CE_SRC_RING_WRITE_IDX_SET(ar, ctrl_addr, write_index);
 		return;
 	}
 
 	/* workaround path starts from here */
 
-	indicator_addr = targid + ctrl_addr + DST_WATERMARK_ADDRESS;
+	indicator_addr = ar_pci->mem + ctrl_addr + DST_WATERMARK_ADDRESS;
 
 	if (ctrl_addr == CE_BASE_ADDRESS(ar, CDC_WAR_DATA_CE)) {
 		iowrite32((CDC_WAR_MAGIC_STR | write_index), indicator_addr);
@@ -352,7 +353,7 @@ static inline void ath10k_set_source_ring_write_index(struct ath10k *ar,
 		(void)ioread32(indicator_addr);
 		(void)ioread32(indicator_addr); /* conservative */
 
-		CE_SRC_RING_WRITE_IDX_SET(ar, targid, ctrl_addr, write_index);
+		CE_SRC_RING_WRITE_IDX_SET(ar, ctrl_addr, write_index);
 
 		iowrite32(0, indicator_addr);
 		local_irq_restore(irq_flags);
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups
  2013-04-23  9:56 [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Bartosz Markowski
                   ` (2 preceding siblings ...)
  2013-04-23  9:56 ` [ath9k-devel] [PATCH 3/3] ath10k: replace TARGET_READ/WRITE macros with inline funcitons Bartosz Markowski
@ 2013-04-24 10:47 ` Kalle Valo
  3 siblings, 0 replies; 5+ messages in thread
From: Kalle Valo @ 2013-04-24 10:47 UTC (permalink / raw)
  To: ath9k-devel

Bartosz Markowski <bartosz.markowski@tieto.com> writes:

> Bartosz Markowski (3):
>   ath10k: update FIXME comments
>   ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET
>   ath10k: replace TARGET_READ/WRITE macros with inline funcitons

Thanks, applied.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-24 10:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-23  9:56 [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Bartosz Markowski
2013-04-23  9:56 ` [ath9k-devel] [PATCH 1/3] ath10k: update FIXME comments Bartosz Markowski
2013-04-23  9:56 ` [ath9k-devel] [PATCH 2/3] ath10k: rename WAR_CE_SRC_RING_WRITE_IDX_SET Bartosz Markowski
2013-04-23  9:56 ` [ath9k-devel] [PATCH 3/3] ath10k: replace TARGET_READ/WRITE macros with inline funcitons Bartosz Markowski
2013-04-24 10:47 ` [ath9k-devel] [PATCH 0/3] ath10k: PCI cleanups Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox