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 <nbd@xxxxxxxxxxx> --- updated version, found some more instances of the same thing --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c @@ -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, --- a/drivers/net/wireless/ath9k/beacon.c +++ b/drivers/net/wireless/ath9k/beacon.c @@ -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++; } -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html