Skip to contentSkip to conversation

ath9k: fix another endianness issue

PATCH Superseded Felix Fietkau 2 participants 4 messages Jul 20, 2008 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ath9k: fix another endianness issue

DMA descriptors must always be accessed in native endianness. With this patch and my previous series, Atheros AR9160 now works for me in STA mode (tested on an IXP4xx board, big-endian)

---

drivers/net/wireless/ath9k/xmit.c +1 -1
@@ -168,7 +168,7 @@
 			__func__, txq->axq_qnum,
 			ito64(bf->bf_daddr), bf->bf_desc);
 	} else {
-		*txq->axq_link = cpu_to_le32(bf->bf_daddr);
+		*txq->axq_link = bf->bf_daddr;
 		DPRINTF(sc, ATH_DEBUG_XMIT, "%s: link[%u] (%p)=%llx (%p)\n",
 			__func__,
 			txq->axq_qnum, txq->axq_link,
#1 lore raw

PATCH v2 1/1 ath9k: fix another endianness issue

DMA descriptors must always be accessed in native endianness. With this patch and my previous series, Atheros AR9160 now works for me in STA mode (tested on an IXP4xx board, big-endian)

---
updated version, found some more instances of the same thing

drivers/net/wireless/ath9k/xmit.c +2 -2
@@ -121,7 +121,7 @@
 	DPRINTF(sc, ATH_DEBUG_TX_PROC,
 		"%s: txq depth = %d\n", __func__, txq->axq_depth);
 	if (txq->axq_link != NULL) {
-		*txq->axq_link = cpu_to_le32(bf->bf_daddr);
+		*txq->axq_link = bf->bf_daddr;
 		DPRINTF(sc, ATH_DEBUG_XMIT,
 			"%s: link[%u](%p)=%llx (%p)\n",
 			__func__,
@@ -168,7 +168,7 @@
 			__func__, txq->axq_qnum,
 			ito64(bf->bf_daddr), bf->bf_desc);
 	} else {
-		*txq->axq_link = cpu_to_le32(bf->bf_daddr);
+		*txq->axq_link = bf->bf_daddr;
 		DPRINTF(sc, ATH_DEBUG_XMIT, "%s: link[%u] (%p)=%llx (%p)\n",
 			__func__,
 			txq->axq_qnum, txq->axq_link,
drivers/net/wireless/ath9k/beacon.c +2 -6
@@ -159,7 +159,7 @@
 	if (!cabq->axq_link)
 		ath9k_hw_puttxbuf(ah, cabq->axq_qnum, bfmcast->bf_daddr);
 	else
-		*cabq->axq_link = cpu_to_le32(bfmcast->bf_daddr);
+		*cabq->axq_link = bfmcast->bf_daddr;
 
 	/* append the private vap mcast list to  the cabq */
 
@@ -688,11 +688,7 @@
 			if (if_id != ATH_IF_ID_ANY) {
 				bf = ath_beacon_generate(sc, if_id);
 				if (bf != NULL) {
-					if (bflink != &bfaddr)
-						*bflink = cpu_to_le32(
-							bf->bf_daddr);
-					else
-						*bflink = bf->bf_daddr;
+					*bflink = bf->bf_daddr;
 					bflink = &bf->bf_desc->ds_link;
 					bc++;
 				}
#2 lore raw

PATCH v3 1/1 ath9k: fix another endianness issue

In reply to Felix Fietkau

DMA descriptors must always be accessed in native endianness. With this patch and my previous series, Atheros AR9160 now works for me in STA mode (tested on an IXP4xx board, big-endian)

---
sorry, my mail client broke the last one (whitespace crap)

drivers/net/wireless/ath9k/xmit.c +2 -2
@@ -121,7 +121,7 @@
 	DPRINTF(sc, ATH_DEBUG_TX_PROC,
 		"%s: txq depth = %d\n", __func__, txq->axq_depth);
 	if (txq->axq_link != NULL) {
-		*txq->axq_link = cpu_to_le32(bf->bf_daddr);
+		*txq->axq_link = bf->bf_daddr;
 		DPRINTF(sc, ATH_DEBUG_XMIT,
 			"%s: link[%u](%p)=%llx (%p)\n",
 			__func__,
@@ -168,7 +168,7 @@
 			__func__, txq->axq_qnum,
 			ito64(bf->bf_daddr), bf->bf_desc);
 	} else {
-		*txq->axq_link = cpu_to_le32(bf->bf_daddr);
+		*txq->axq_link = bf->bf_daddr;
 		DPRINTF(sc, ATH_DEBUG_XMIT, "%s: link[%u] (%p)=%llx (%p)\n",
 			__func__,
 			txq->axq_qnum, txq->axq_link,
drivers/net/wireless/ath9k/beacon.c +2 -6
@@ -159,7 +159,7 @@
 	if (!cabq->axq_link)
 		ath9k_hw_puttxbuf(ah, cabq->axq_qnum, bfmcast->bf_daddr);
 	else
-		*cabq->axq_link = cpu_to_le32(bfmcast->bf_daddr);
+		*cabq->axq_link = bfmcast->bf_daddr;
 
 	/* append the private vap mcast list to  the cabq */
 
@@ -688,11 +688,7 @@
 			if (if_id != ATH_IF_ID_ANY) {
 				bf = ath_beacon_generate(sc, if_id);
 				if (bf != NULL) {
-					if (bflink != &bfaddr)
-						*bflink = cpu_to_le32(
-							bf->bf_daddr);
-					else
-						*bflink = bf->bf_daddr;
+					*bflink = bf->bf_daddr;
 					bflink = &bf->bf_desc->ds_link;
 					bc++;
 				}