ath9k: fix another endianness issue
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,
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++; }
PATCH v3 1/1 ath9k: fix another endianness issue
In reply to Felix FietkauDMA 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++; }
Quoted 7 lines · 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)
Signed-off-by Felix Fietkau <[email protected]>---
sorry, my mail client broke the last one (whitespace crap)
Thanks!
Luis