|
@@ -64,19 +64,19 @@ struct transmit_ring {
|
|
*/
|
|
*/
|
|
struct typhoon_indexes {
|
|
struct typhoon_indexes {
|
|
/* The first four are written by the host, and read by the NIC */
|
|
/* The first four are written by the host, and read by the NIC */
|
|
- volatile u32 rxHiCleared;
|
|
|
|
- volatile u32 rxLoCleared;
|
|
|
|
- volatile u32 rxBuffReady;
|
|
|
|
- volatile u32 respCleared;
|
|
|
|
|
|
+ volatile __le32 rxHiCleared;
|
|
|
|
+ volatile __le32 rxLoCleared;
|
|
|
|
+ volatile __le32 rxBuffReady;
|
|
|
|
+ volatile __le32 respCleared;
|
|
|
|
|
|
/* The remaining are written by the NIC, and read by the host */
|
|
/* The remaining are written by the NIC, and read by the host */
|
|
- volatile u32 txLoCleared;
|
|
|
|
- volatile u32 txHiCleared;
|
|
|
|
- volatile u32 rxLoReady;
|
|
|
|
- volatile u32 rxBuffCleared;
|
|
|
|
- volatile u32 cmdCleared;
|
|
|
|
- volatile u32 respReady;
|
|
|
|
- volatile u32 rxHiReady;
|
|
|
|
|
|
+ volatile __le32 txLoCleared;
|
|
|
|
+ volatile __le32 txHiCleared;
|
|
|
|
+ volatile __le32 rxLoReady;
|
|
|
|
+ volatile __u32 rxBuffCleared; /* AV: really? */
|
|
|
|
+ volatile __le32 cmdCleared;
|
|
|
|
+ volatile __le32 respReady;
|
|
|
|
+ volatile __le32 rxHiReady;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The host<->Typhoon interface
|
|
/* The host<->Typhoon interface
|
|
@@ -100,31 +100,31 @@ struct typhoon_indexes {
|
|
* be zero.
|
|
* be zero.
|
|
*/
|
|
*/
|
|
struct typhoon_interface {
|
|
struct typhoon_interface {
|
|
- u32 ringIndex;
|
|
|
|
- u32 ringIndexHi;
|
|
|
|
- u32 txLoAddr;
|
|
|
|
- u32 txLoAddrHi;
|
|
|
|
- u32 txLoSize;
|
|
|
|
- u32 txHiAddr;
|
|
|
|
- u32 txHiAddrHi;
|
|
|
|
- u32 txHiSize;
|
|
|
|
- u32 rxLoAddr;
|
|
|
|
- u32 rxLoAddrHi;
|
|
|
|
- u32 rxLoSize;
|
|
|
|
- u32 rxBuffAddr;
|
|
|
|
- u32 rxBuffAddrHi;
|
|
|
|
- u32 rxBuffSize;
|
|
|
|
- u32 cmdAddr;
|
|
|
|
- u32 cmdAddrHi;
|
|
|
|
- u32 cmdSize;
|
|
|
|
- u32 respAddr;
|
|
|
|
- u32 respAddrHi;
|
|
|
|
- u32 respSize;
|
|
|
|
- u32 zeroAddr;
|
|
|
|
- u32 zeroAddrHi;
|
|
|
|
- u32 rxHiAddr;
|
|
|
|
- u32 rxHiAddrHi;
|
|
|
|
- u32 rxHiSize;
|
|
|
|
|
|
+ __le32 ringIndex;
|
|
|
|
+ __le32 ringIndexHi;
|
|
|
|
+ __le32 txLoAddr;
|
|
|
|
+ __le32 txLoAddrHi;
|
|
|
|
+ __le32 txLoSize;
|
|
|
|
+ __le32 txHiAddr;
|
|
|
|
+ __le32 txHiAddrHi;
|
|
|
|
+ __le32 txHiSize;
|
|
|
|
+ __le32 rxLoAddr;
|
|
|
|
+ __le32 rxLoAddrHi;
|
|
|
|
+ __le32 rxLoSize;
|
|
|
|
+ __le32 rxBuffAddr;
|
|
|
|
+ __le32 rxBuffAddrHi;
|
|
|
|
+ __le32 rxBuffSize;
|
|
|
|
+ __le32 cmdAddr;
|
|
|
|
+ __le32 cmdAddrHi;
|
|
|
|
+ __le32 cmdSize;
|
|
|
|
+ __le32 respAddr;
|
|
|
|
+ __le32 respAddrHi;
|
|
|
|
+ __le32 respSize;
|
|
|
|
+ __le32 zeroAddr;
|
|
|
|
+ __le32 zeroAddrHi;
|
|
|
|
+ __le32 rxHiAddr;
|
|
|
|
+ __le32 rxHiAddrHi;
|
|
|
|
+ __le32 rxHiSize;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The Typhoon transmit/fragment descriptor
|
|
/* The Typhoon transmit/fragment descriptor
|
|
@@ -165,10 +165,10 @@ struct tx_desc {
|
|
#define TYPHOON_RX_ERROR 0x40
|
|
#define TYPHOON_RX_ERROR 0x40
|
|
#define TYPHOON_DESC_VALID 0x80
|
|
#define TYPHOON_DESC_VALID 0x80
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 len;
|
|
|
|
|
|
+ __le16 len;
|
|
u32 addr;
|
|
u32 addr;
|
|
u32 addrHi;
|
|
u32 addrHi;
|
|
- u32 processFlags;
|
|
|
|
|
|
+ __le32 processFlags;
|
|
#define TYPHOON_TX_PF_NO_CRC __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_TX_PF_NO_CRC __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_TX_PF_IP_CHKSUM __constant_cpu_to_le32(0x00000002)
|
|
#define TYPHOON_TX_PF_IP_CHKSUM __constant_cpu_to_le32(0x00000002)
|
|
#define TYPHOON_TX_PF_TCP_CHKSUM __constant_cpu_to_le32(0x00000004)
|
|
#define TYPHOON_TX_PF_TCP_CHKSUM __constant_cpu_to_le32(0x00000004)
|
|
@@ -197,12 +197,12 @@ struct tx_desc {
|
|
struct tcpopt_desc {
|
|
struct tcpopt_desc {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 mss_flags;
|
|
|
|
|
|
+ __le16 mss_flags;
|
|
#define TYPHOON_TSO_FIRST __constant_cpu_to_le16(0x1000)
|
|
#define TYPHOON_TSO_FIRST __constant_cpu_to_le16(0x1000)
|
|
#define TYPHOON_TSO_LAST __constant_cpu_to_le16(0x2000)
|
|
#define TYPHOON_TSO_LAST __constant_cpu_to_le16(0x2000)
|
|
- u32 respAddrLo;
|
|
|
|
- u32 bytesTx;
|
|
|
|
- u32 status;
|
|
|
|
|
|
+ __le32 respAddrLo;
|
|
|
|
+ __le32 bytesTx;
|
|
|
|
+ __le32 status;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The IPSEC Offload descriptor
|
|
/* The IPSEC Offload descriptor
|
|
@@ -216,12 +216,12 @@ struct tcpopt_desc {
|
|
struct ipsec_desc {
|
|
struct ipsec_desc {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 ipsecFlags;
|
|
|
|
|
|
+ __le16 ipsecFlags;
|
|
#define TYPHOON_IPSEC_GEN_IV __constant_cpu_to_le16(0x0000)
|
|
#define TYPHOON_IPSEC_GEN_IV __constant_cpu_to_le16(0x0000)
|
|
#define TYPHOON_IPSEC_USE_IV __constant_cpu_to_le16(0x0001)
|
|
#define TYPHOON_IPSEC_USE_IV __constant_cpu_to_le16(0x0001)
|
|
- u32 sa1;
|
|
|
|
- u32 sa2;
|
|
|
|
- u32 reserved;
|
|
|
|
|
|
+ __le32 sa1;
|
|
|
|
+ __le32 sa2;
|
|
|
|
+ __le32 reserved;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The Typhoon receive descriptor (Updated by NIC)
|
|
/* The Typhoon receive descriptor (Updated by NIC)
|
|
@@ -239,10 +239,10 @@ struct ipsec_desc {
|
|
struct rx_desc {
|
|
struct rx_desc {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 frameLen;
|
|
|
|
|
|
+ __le16 frameLen;
|
|
u32 addr;
|
|
u32 addr;
|
|
u32 addrHi;
|
|
u32 addrHi;
|
|
- u32 rxStatus;
|
|
|
|
|
|
+ __le32 rxStatus;
|
|
#define TYPHOON_RX_ERR_INTERNAL __constant_cpu_to_le32(0x00000000)
|
|
#define TYPHOON_RX_ERR_INTERNAL __constant_cpu_to_le32(0x00000000)
|
|
#define TYPHOON_RX_ERR_FIFO_UNDERRUN __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_RX_ERR_FIFO_UNDERRUN __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_RX_ERR_BAD_SSD __constant_cpu_to_le32(0x00000002)
|
|
#define TYPHOON_RX_ERR_BAD_SSD __constant_cpu_to_le32(0x00000002)
|
|
@@ -264,10 +264,10 @@ struct rx_desc {
|
|
#define TYPHOON_RX_IP_CHK_GOOD __constant_cpu_to_le32(0x00000100)
|
|
#define TYPHOON_RX_IP_CHK_GOOD __constant_cpu_to_le32(0x00000100)
|
|
#define TYPHOON_RX_TCP_CHK_GOOD __constant_cpu_to_le32(0x00000200)
|
|
#define TYPHOON_RX_TCP_CHK_GOOD __constant_cpu_to_le32(0x00000200)
|
|
#define TYPHOON_RX_UDP_CHK_GOOD __constant_cpu_to_le32(0x00000400)
|
|
#define TYPHOON_RX_UDP_CHK_GOOD __constant_cpu_to_le32(0x00000400)
|
|
- u16 filterResults;
|
|
|
|
|
|
+ __le16 filterResults;
|
|
#define TYPHOON_RX_FILTER_MASK __constant_cpu_to_le16(0x7fff)
|
|
#define TYPHOON_RX_FILTER_MASK __constant_cpu_to_le16(0x7fff)
|
|
#define TYPHOON_RX_FILTERED __constant_cpu_to_le16(0x8000)
|
|
#define TYPHOON_RX_FILTERED __constant_cpu_to_le16(0x8000)
|
|
- u16 ipsecResults;
|
|
|
|
|
|
+ __le16 ipsecResults;
|
|
#define TYPHOON_RX_OUTER_AH_GOOD __constant_cpu_to_le16(0x0001)
|
|
#define TYPHOON_RX_OUTER_AH_GOOD __constant_cpu_to_le16(0x0001)
|
|
#define TYPHOON_RX_OUTER_ESP_GOOD __constant_cpu_to_le16(0x0002)
|
|
#define TYPHOON_RX_OUTER_ESP_GOOD __constant_cpu_to_le16(0x0002)
|
|
#define TYPHOON_RX_INNER_AH_GOOD __constant_cpu_to_le16(0x0004)
|
|
#define TYPHOON_RX_INNER_AH_GOOD __constant_cpu_to_le16(0x0004)
|
|
@@ -278,7 +278,7 @@ struct rx_desc {
|
|
#define TYPHOON_RX_INNER_ESP_FAIL __constant_cpu_to_le16(0x0080)
|
|
#define TYPHOON_RX_INNER_ESP_FAIL __constant_cpu_to_le16(0x0080)
|
|
#define TYPHOON_RX_UNKNOWN_SA __constant_cpu_to_le16(0x0100)
|
|
#define TYPHOON_RX_UNKNOWN_SA __constant_cpu_to_le16(0x0100)
|
|
#define TYPHOON_RX_ESP_FORMAT_ERR __constant_cpu_to_le16(0x0200)
|
|
#define TYPHOON_RX_ESP_FORMAT_ERR __constant_cpu_to_le16(0x0200)
|
|
- u32 vlanTag;
|
|
|
|
|
|
+ __be32 vlanTag;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The Typhoon free buffer descriptor, used to give a buffer to the NIC
|
|
/* The Typhoon free buffer descriptor, used to give a buffer to the NIC
|
|
@@ -292,8 +292,8 @@ struct rx_desc {
|
|
* from the NIC
|
|
* from the NIC
|
|
*/
|
|
*/
|
|
struct rx_free {
|
|
struct rx_free {
|
|
- u32 physAddr;
|
|
|
|
- u32 physAddrHi;
|
|
|
|
|
|
+ __le32 physAddr;
|
|
|
|
+ __le32 physAddrHi;
|
|
u32 virtAddr;
|
|
u32 virtAddr;
|
|
u32 virtAddrHi;
|
|
u32 virtAddrHi;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
@@ -312,7 +312,7 @@ struct rx_free {
|
|
struct cmd_desc {
|
|
struct cmd_desc {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 cmd;
|
|
|
|
|
|
+ __le16 cmd;
|
|
#define TYPHOON_CMD_TX_ENABLE __constant_cpu_to_le16(0x0001)
|
|
#define TYPHOON_CMD_TX_ENABLE __constant_cpu_to_le16(0x0001)
|
|
#define TYPHOON_CMD_TX_DISABLE __constant_cpu_to_le16(0x0002)
|
|
#define TYPHOON_CMD_TX_DISABLE __constant_cpu_to_le16(0x0002)
|
|
#define TYPHOON_CMD_RX_ENABLE __constant_cpu_to_le16(0x0003)
|
|
#define TYPHOON_CMD_RX_ENABLE __constant_cpu_to_le16(0x0003)
|
|
@@ -339,9 +339,9 @@ struct cmd_desc {
|
|
#define TYPHOON_CMD_GET_IPSEC_ENABLE __constant_cpu_to_le16(0x0067)
|
|
#define TYPHOON_CMD_GET_IPSEC_ENABLE __constant_cpu_to_le16(0x0067)
|
|
#define TYPHOON_CMD_GET_CMD_LVL __constant_cpu_to_le16(0x0069)
|
|
#define TYPHOON_CMD_GET_CMD_LVL __constant_cpu_to_le16(0x0069)
|
|
u16 seqNo;
|
|
u16 seqNo;
|
|
- u16 parm1;
|
|
|
|
- u32 parm2;
|
|
|
|
- u32 parm3;
|
|
|
|
|
|
+ __le16 parm1;
|
|
|
|
+ __le32 parm2;
|
|
|
|
+ __le32 parm3;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The Typhoon response descriptor, see command descriptor for details
|
|
/* The Typhoon response descriptor, see command descriptor for details
|
|
@@ -349,11 +349,11 @@ struct cmd_desc {
|
|
struct resp_desc {
|
|
struct resp_desc {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 cmd;
|
|
|
|
- u16 seqNo;
|
|
|
|
- u16 parm1;
|
|
|
|
- u32 parm2;
|
|
|
|
- u32 parm3;
|
|
|
|
|
|
+ __le16 cmd;
|
|
|
|
+ __le16 seqNo;
|
|
|
|
+ __le16 parm1;
|
|
|
|
+ __le32 parm2;
|
|
|
|
+ __le32 parm3;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
#define INIT_COMMAND_NO_RESPONSE(x, command) \
|
|
#define INIT_COMMAND_NO_RESPONSE(x, command) \
|
|
@@ -386,31 +386,31 @@ struct resp_desc {
|
|
struct stats_resp {
|
|
struct stats_resp {
|
|
u8 flags;
|
|
u8 flags;
|
|
u8 numDesc;
|
|
u8 numDesc;
|
|
- u16 cmd;
|
|
|
|
- u16 seqNo;
|
|
|
|
- u16 unused;
|
|
|
|
- u32 txPackets;
|
|
|
|
- u64 txBytes;
|
|
|
|
- u32 txDeferred;
|
|
|
|
- u32 txLateCollisions;
|
|
|
|
- u32 txCollisions;
|
|
|
|
- u32 txCarrierLost;
|
|
|
|
- u32 txMultipleCollisions;
|
|
|
|
- u32 txExcessiveCollisions;
|
|
|
|
- u32 txFifoUnderruns;
|
|
|
|
- u32 txMulticastTxOverflows;
|
|
|
|
- u32 txFiltered;
|
|
|
|
- u32 rxPacketsGood;
|
|
|
|
- u64 rxBytesGood;
|
|
|
|
- u32 rxFifoOverruns;
|
|
|
|
- u32 BadSSD;
|
|
|
|
- u32 rxCrcErrors;
|
|
|
|
- u32 rxOversized;
|
|
|
|
- u32 rxBroadcast;
|
|
|
|
- u32 rxMulticast;
|
|
|
|
- u32 rxOverflow;
|
|
|
|
- u32 rxFiltered;
|
|
|
|
- u32 linkStatus;
|
|
|
|
|
|
+ __le16 cmd;
|
|
|
|
+ __le16 seqNo;
|
|
|
|
+ __le16 unused;
|
|
|
|
+ __le32 txPackets;
|
|
|
|
+ __le64 txBytes;
|
|
|
|
+ __le32 txDeferred;
|
|
|
|
+ __le32 txLateCollisions;
|
|
|
|
+ __le32 txCollisions;
|
|
|
|
+ __le32 txCarrierLost;
|
|
|
|
+ __le32 txMultipleCollisions;
|
|
|
|
+ __le32 txExcessiveCollisions;
|
|
|
|
+ __le32 txFifoUnderruns;
|
|
|
|
+ __le32 txMulticastTxOverflows;
|
|
|
|
+ __le32 txFiltered;
|
|
|
|
+ __le32 rxPacketsGood;
|
|
|
|
+ __le64 rxBytesGood;
|
|
|
|
+ __le32 rxFifoOverruns;
|
|
|
|
+ __le32 BadSSD;
|
|
|
|
+ __le32 rxCrcErrors;
|
|
|
|
+ __le32 rxOversized;
|
|
|
|
+ __le32 rxBroadcast;
|
|
|
|
+ __le32 rxMulticast;
|
|
|
|
+ __le32 rxOverflow;
|
|
|
|
+ __le32 rxFiltered;
|
|
|
|
+ __le32 linkStatus;
|
|
#define TYPHOON_LINK_STAT_MASK __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_LINK_STAT_MASK __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_LINK_GOOD __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_LINK_GOOD __constant_cpu_to_le32(0x00000001)
|
|
#define TYPHOON_LINK_BAD __constant_cpu_to_le32(0x00000000)
|
|
#define TYPHOON_LINK_BAD __constant_cpu_to_le32(0x00000000)
|
|
@@ -420,8 +420,8 @@ struct stats_resp {
|
|
#define TYPHOON_LINK_DUPLEX_MASK __constant_cpu_to_le32(0x00000004)
|
|
#define TYPHOON_LINK_DUPLEX_MASK __constant_cpu_to_le32(0x00000004)
|
|
#define TYPHOON_LINK_FULL_DUPLEX __constant_cpu_to_le32(0x00000004)
|
|
#define TYPHOON_LINK_FULL_DUPLEX __constant_cpu_to_le32(0x00000004)
|
|
#define TYPHOON_LINK_HALF_DUPLEX __constant_cpu_to_le32(0x00000000)
|
|
#define TYPHOON_LINK_HALF_DUPLEX __constant_cpu_to_le32(0x00000000)
|
|
- u32 unused2;
|
|
|
|
- u32 unused3;
|
|
|
|
|
|
+ __le32 unused2;
|
|
|
|
+ __le32 unused3;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* TYPHOON_CMD_XCVR_SELECT xcvr values (resp.parm1)
|
|
/* TYPHOON_CMD_XCVR_SELECT xcvr values (resp.parm1)
|
|
@@ -509,17 +509,17 @@ struct sa_descriptor {
|
|
*/
|
|
*/
|
|
struct typhoon_file_header {
|
|
struct typhoon_file_header {
|
|
u8 tag[8];
|
|
u8 tag[8];
|
|
- u32 version;
|
|
|
|
- u32 numSections;
|
|
|
|
- u32 startAddr;
|
|
|
|
- u32 hmacDigest[5];
|
|
|
|
|
|
+ __le32 version;
|
|
|
|
+ __le32 numSections;
|
|
|
|
+ __le32 startAddr;
|
|
|
|
+ __le32 hmacDigest[5];
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
struct typhoon_section_header {
|
|
struct typhoon_section_header {
|
|
- u32 len;
|
|
|
|
|
|
+ __le32 len;
|
|
u16 checksum;
|
|
u16 checksum;
|
|
u16 reserved;
|
|
u16 reserved;
|
|
- u32 startAddr;
|
|
|
|
|
|
+ __le32 startAddr;
|
|
} __attribute__ ((packed));
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
/* The Typhoon Register offsets
|
|
/* The Typhoon Register offsets
|