diff options
-rw-r--r-- | package/ath9k/patches/140-no_desc_swap.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/package/ath9k/patches/140-no_desc_swap.patch b/package/ath9k/patches/140-no_desc_swap.patch new file mode 100644 index 0000000000..46b2ec90de --- /dev/null +++ b/package/ath9k/patches/140-no_desc_swap.patch @@ -0,0 +1,64 @@ +Remove the descriptor swap, as the driver already configures the hardware for +descriptor swapping on big endian systems + +Signed-off-by: Felix Fietkau <nbd@openwrt.org> + +--- a/drivers/net/wireless/ath9k/core.c ++++ b/drivers/net/wireless/ath9k/core.c +@@ -2141,22 +2141,6 @@ + memzero(dd, sizeof(*dd)); + } + +-/* +- * Endian Swap for transmit descriptor +- * +- * XXX: Move cpu_to_le32() into hw.c and anywhere we set them, then +- * remove this. +-*/ +-void ath_desc_swap(struct ath_desc *ds) +-{ +- ds->ds_link = cpu_to_le32(ds->ds_link); +- ds->ds_data = cpu_to_le32(ds->ds_data); +- ds->ds_ctl0 = cpu_to_le32(ds->ds_ctl0); +- ds->ds_ctl1 = cpu_to_le32(ds->ds_ctl1); +- ds->ds_hw[0] = cpu_to_le32(ds->ds_hw[0]); +- ds->ds_hw[1] = cpu_to_le32(ds->ds_hw[1]); +-} +- + /*************/ + /* Utilities */ + /*************/ +--- a/drivers/net/wireless/ath9k/beacon.c ++++ b/drivers/net/wireless/ath9k/beacon.c +@@ -140,11 +140,6 @@ + series[0].RateFlags = (ctsrate) ? HAL_RATESERIES_RTS_CTS : 0; + ath9k_hw_set11n_ratescenario(ah, ds, ds, 0, + ctsrate, ctsduration, series, 4, 0); +- +- /* NB: The desc swap function becomes void, +- * if descriptor swapping is not enabled +- */ +- ath_desc_swap(ds); + } + + /* Move everything from the vap's mcast queue to the hardware cab queue. +--- a/drivers/net/wireless/ath9k/core.h ++++ b/drivers/net/wireless/ath9k/core.h +@@ -384,7 +384,6 @@ + void ath_descdma_cleanup(struct ath_softc *sc, + struct ath_descdma *dd, + struct list_head *head); +-void ath_desc_swap(struct ath_desc *ds); + + /******/ + /* RX */ +--- a/drivers/net/wireless/ath9k/xmit.c ++++ b/drivers/net/wireless/ath9k/xmit.c +@@ -2062,7 +2062,6 @@ + AH_TRUE, /* first segment */ + (n_sg == 1) ? AH_TRUE : AH_FALSE, /* last segment */ + ds); /* first descriptor */ +- ath_desc_swap(ds); + + bf->bf_lastfrm = bf; + bf->bf_ht = txctl->ht; |