ath9k: remove software descriptor swapping, hw already does that
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 20 Jul 2008 12:37:13 +0000 (12:37 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 20 Jul 2008 12:37:13 +0000 (12:37 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11885 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/ath9k/patches/140-no_desc_swap.patch [new file with mode: 0644]

diff --git a/package/ath9k/patches/140-no_desc_swap.patch b/package/ath9k/patches/140-no_desc_swap.patch
new file mode 100644 (file)
index 0000000..46b2ec9
--- /dev/null
@@ -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;