Skip to contentSkip to conversation

rt2x00 update: Apply correct endian annotation for structures that are DMA'ed to device.

PATCH New Ivo van Doorn 1 participant 1 message Apr 28, 2006

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 5/6 rt2x00 update: Apply correct endian annotation for structures that are DMA'ed to device.

From: Ivo van Doorn <[email protected]>

Use __le32 annotations for all fields in the descriptor, since these should always be treated as little endian.

drivers/net/wireless/d80211/rt2x00/rt2400pci.h +16 -16
diff -uprN wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2400pci.h wireless-dev-rt2x00-patch/drivers/net/wireless/d80211/rt2x00/rt2400pci.h
@@ -739,7 +739,7 @@
  * TX descriptor format for TX, PRIO, ATIM and Beacon Ring.
  */
 struct txd{
-	u32	word0;
+	__le32				word0;
 #define TXD_W0_OWNER_NIC		FIELD32(0x00000001)
 #define TXD_W0_VALID			FIELD32(0x00000002)
 #define TXD_W0_RESULT			FIELD32(0x0000001c)
@@ -753,32 +753,32 @@ struct txd{
 #define TXD_W0_AGC			FIELD32(0x00ff0000)
 #define TXD_W0_R2			FIELD32(0xff000000)
 
-	u32	word1;
+	__le32				word1;
 #define TXD_W1_BUFFER_ADDRESS		FIELD32(0xffffffff)
 
-	u32	word2;
+	__le32				word2;
 #define TXD_W2_BUFFER_LENGTH		FIELD32(0x0000ffff)
 #define TXD_W2_DATABYTE_COUNT		FIELD32(0xffff0000)
 
-	u32	word3;
+	__le32				word3;
 #define TXD_W3_PLCP_SIGNAL		FIELD32(0x0000ffff)
 #define TXD_W3_PLCP_SERVICE		FIELD32(0xffff0000)
 
-	u32	word4;
+	__le32				word4;
 #define TXD_W4_PLCP_LENGTH_LOW		FIELD32(0x0000ffff)
 #define TXD_W4_PLCP_LENGTH_HIGH		FIELD32(0xffff0000)
 
-	u32	word5;
+	__le32				word5;
 #define TXD_W5_BBCR4			FIELD32(0x0000ffff)
 #define TXD_W5_AGC_REG			FIELD32(0x007f0000)
 #define TXD_W5_AGC_REG_VALID		FIELD32(0x00800000)
 #define TXD_W5_XXX_REG			FIELD32(0x7f000000)
 #define TXD_W5_XXX_REG_VALID		FIELD32(0x80000000)
 
-	u32	word6;
+	__le32				word6;
 #define TXD_W6_SK_BUFF			FIELD32(0xffffffff)
 
-	u32	word7;
+	__le32				word7;
 #define TXD_W7_RESERVED			FIELD32(0xffffffff)
 } __attribute__ ((packed));
 
@@ -786,7 +786,7 @@ struct txd{
  * RX descriptor format for RX Ring.
  */
 struct rxd{
-	u32	word0;
+	__le32				word0;
 #define RXD_W0_OWNER_NIC		FIELD32(0x00000001)
 #define RXD_W0_UNICAST_TO_ME		FIELD32(0x00000002)
 #define RXD_W0_MULTICAST		FIELD32(0x00000004)
@@ -796,30 +796,30 @@ struct rxd{
 #define RXD_W0_PHYSICAL_ERROR		FIELD32(0x00000080)
 #define RXD_W0_DATABYTE_COUNT		FIELD32(0xffff0000)
 
-	u32	word1;
+	__le32				word1;
 #define RXD_W1_BUFFER_ADDRESS		FIELD32(0xffffffff)
 
-	u32	word2;
+	__le32				word2;
 #define RXD_W2_BUFFER_LENGTH		FIELD32(0x0000ffff)
 #define RXD_W2_BBR0			FIELD32(0x00ff0000)
 #define RXD_W2_RSSI			FIELD32(0xff000000)
 
-	u32	word3;
+	__le32				word3;
 #define RXD_W3_BBR2			FIELD32(0x000000ff)
 #define RXD_W3_BBR3			FIELD32(0x0000ff00)
 #define RXD_W3_BBR4			FIELD32(0x00ff0000)
 #define RXD_W3_BBR5			FIELD32(0xff000000)
 
-	u32	word4;
+	__le32				word4;
 #define RXD_W4_RX_END_TIME		FIELD32(0xffffffff)
 
-	u32	word5;
+	__le32				word5;
 #define RXD_W5_RESERVED			FIELD32(0xffffffff)
 
-	u32	word6;
+	__le32				word6;
 #define RXD_W6_RESERVED			FIELD32(0xffffffff)
 
-	u32	word7;
+	__le32				word7;
 #define RXD_W7_RESERVED			FIELD32(0xffffffff)
 } __attribute__ ((packed));
 
drivers/net/wireless/d80211/rt2x00/rt2500pci.h +22 -22

112 lines not on this page · raw message

drivers/net/wireless/d80211/rt2x00/rt2500usb.h +9 -9
diff -uprN wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2500usb.h wireless-dev-rt2x00-patch/drivers/net/wireless/d80211/rt2x00/rt2500usb.h
@@ -553,7 +553,7 @@
  * TX descriptor format for TX, PRIO, ATIM and Beacon Ring.
  */
 struct txd{
-	u32	word0;
+	__le32				word0;
 #define TXD_W0_PACKET_ID		FIELD32(0x0000000f)
 #define TXD_W0_RETRY_LIMIT		FIELD32(0x000000f0)
 #define TXD_W0_MORE_FRAG		FIELD32(0x00000100)
@@ -566,22 +566,22 @@ struct txd{
 #define TXD_W0_CIPHER			FIELD32(0x20000000)
 #define TXD_W0_KEY_ID			FIELD32(0xc0000000)
 
-	u32	word1;
+	__le32				word1;
 #define TXD_W1_IV_OFFSET		FIELD32(0x0000003f)
 #define TXD_W1_AIFS			FIELD32(0x000000c0)
 #define TXD_W1_CWMIN			FIELD32(0x00000f00)
 #define TXD_W1_CWMAX			FIELD32(0x0000f000)
 
-	u32	word2;
+	__le32				word2;
 #define TXD_W2_PLCP_SIGNAL		FIELD32(0x000000ff)
 #define TXD_W2_PLCP_SERVICE		FIELD32(0x0000ff00)
 #define TXD_W2_PLCP_LENGTH_LOW		FIELD32(0x00ff0000)
 #define TXD_W2_PLCP_LENGTH_HIGH		FIELD32(0xff000000)
 
-	u32	word3;
+	__le32				word3;
 #define TXD_W3_IV			FIELD32(0xffffffff)
 
-	u32	word4;
+	__le32				word4;
 #define TXD_W4_EIV			FIELD32(0xffffffff)
 } __attribute__ ((packed));
 
@@ -589,7 +589,7 @@ struct txd{
  * RX descriptor format for RX Ring.
  */
 struct rxd{
-	u32	word0;
+	__le32				word0;
 #define RXD_W0_UNICAST_TO_ME		FIELD32(0x00000002)
 #define RXD_W0_MULTICAST		FIELD32(0x00000004)
 #define RXD_W0_BROADCAST		FIELD32(0x00000008)
@@ -601,14 +601,14 @@ struct rxd{
 #define RXD_W0_CI_ERROR			FIELD32(0x00000200)
 #define RXD_W0_DATABYTE_COUNT		FIELD32(0x0fff0000)
 
-	u32	word1;
+	__le32				word1;
 #define RXD_W1_SIGNAL			FIELD32(0x000000ff)
 #define RXD_W1_RSSI			FIELD32(0x0000ff00)
 
-	u32	word2;
+	__le32				word2;
 #define RXD_W2_IV			FIELD32(0xffffffff)
 
-	u32	word3;
+	__le32				word3;
 #define RXD_W3_EIV			FIELD32(0xffffffff)
 } __attribute__ ((packed));