]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - drivers/staging/bcm/Protocol.h
Staging: bcm: Remove typedef for _TCP_HEADER and call directly.
[mirror_ubuntu-artful-kernel.git] / drivers / staging / bcm / Protocol.h
CommitLineData
f8942e07 1/************************************
bd33dd31 2* Protocol.h
f8942e07
SH
3*************************************/
4#ifndef __PROTOCOL_H__
5#define __PROTOCOL_H__
6
bd33dd31
KM
7#define IPV4 4
8#define IPV6 6
f8942e07
SH
9
10struct ArpHeader {
bd33dd31
KM
11 struct arphdr arp;
12 unsigned char ar_sha[ETH_ALEN]; /* sender hardware address */
13 unsigned char ar_sip[4]; /* sender IP address */
14 unsigned char ar_tha[ETH_ALEN]; /* target hardware address */
15 unsigned char ar_tip[4]; /* target IP address */
a3489276 16};
f8942e07 17
3df56e10
KM
18struct TransportHeaderT {
19 union {
f8942e07
SH
20 struct udphdr uhdr;
21 struct tcphdr thdr;
22 };
5f8797b6 23} __packed;
f8942e07
SH
24typedef struct TransportHeaderT xporthdr;
25
3df56e10 26typedef enum _E_NWPKT_IPFRAME_TYPE {
f8942e07
SH
27 eNonIPPacket,
28 eIPv4Packet,
29 eIPv6Packet
bd33dd31 30} E_NWPKT_IPFRAME_TYPE;
f8942e07 31
3df56e10 32typedef enum _E_NWPKT_ETHFRAME_TYPE {
f8942e07
SH
33 eEthUnsupportedFrame,
34 eEth802LLCFrame,
35 eEth802LLCSNAPFrame,
36 eEth802QVLANFrame,
37 eEthOtherFrame
38} E_NWPKT_ETHFRAME_TYPE;
39
3df56e10 40typedef struct _S_ETHCS_PKT_INFO {
f8942e07
SH
41 E_NWPKT_IPFRAME_TYPE eNwpktIPFrameType;
42 E_NWPKT_ETHFRAME_TYPE eNwpktEthFrameType;
963fa3e6 43 unsigned short usEtherType;
57b49ada 44 unsigned char ucDSAP;
bd33dd31 45} S_ETHCS_PKT_INFO, *PS_ETHCS_PKT_INFO;
f8942e07 46
3df56e10 47typedef struct _ETH_CS_802_Q_FRAME {
406a5082 48 struct bcm_eth_header EThHdr;
963fa3e6
KM
49 unsigned short UserPriority:3;
50 unsigned short CFI:1;
51 unsigned short VLANID:12;
52 unsigned short EthType;
5f8797b6 53} __packed ETH_CS_802_Q_FRAME;
f8942e07 54
3df56e10 55typedef struct _ETH_CS_802_LLC_FRAME {
406a5082 56 struct bcm_eth_header EThHdr;
f8942e07
SH
57 unsigned char DSAP;
58 unsigned char SSAP;
59 unsigned char Control;
5f8797b6 60} __packed ETH_CS_802_LLC_FRAME;
f8942e07 61
3df56e10 62typedef struct _ETH_CS_802_LLC_SNAP_FRAME {
406a5082 63 struct bcm_eth_header EThHdr;
f8942e07
SH
64 unsigned char DSAP;
65 unsigned char SSAP;
66 unsigned char Control;
67 unsigned char OUI[3];
68 unsigned short usEtherType;
5f8797b6 69} __packed ETH_CS_802_LLC_SNAP_FRAME;
f8942e07 70
3df56e10 71typedef struct _ETH_CS_ETH2_FRAME {
406a5082 72 struct bcm_eth_header EThHdr;
5f8797b6 73} __packed ETH_CS_ETH2_FRAME;
f8942e07 74
78afa999 75#define ETHERNET_FRAMETYPE_IPV4 ntohs(0x0800)
bd33dd31
KM
76#define ETHERNET_FRAMETYPE_IPV6 ntohs(0x86dd)
77#define ETHERNET_FRAMETYPE_802QVLAN ntohs(0x8100)
f8942e07 78
a3489276 79/* Per SF CS Specification Encodings */
3df56e10 80typedef enum _E_SERVICEFLOW_CS_SPEC_ {
bd33dd31 81 eCSSpecUnspecified = 0,
f8942e07
SH
82 eCSPacketIPV4,
83 eCSPacketIPV6,
84 eCS802_3PacketEthernet,
85 eCS802_1QPacketVLAN,
86 eCSPacketIPV4Over802_3Ethernet,
87 eCSPacketIPV6Over802_3Ethernet,
88 eCSPacketIPV4Over802_1QVLAN,
89 eCSPacketIPV6Over802_1QVLAN,
90 eCSPacketUnsupported
bd33dd31 91} E_SERVICEFLOW_CS_SPEC;
f8942e07 92
bd33dd31
KM
93#define IP6_HEADER_LEN 40
94#define IP_VERSION(byte) (((byte&0xF0)>>4))
f8942e07
SH
95
96#define MAC_ADDRESS_SIZE 6
5a88304e 97#define ETH_AND_IP_HEADER_LEN (14 + 20)
bd33dd31
KM
98#define L4_SRC_PORT_LEN 2
99#define L4_DEST_PORT_LEN 2
5a88304e 100#define CTRL_PKT_LEN (8 + ETH_AND_IP_HEADER_LEN)
f8942e07 101
bd33dd31
KM
102#define ETH_ARP_FRAME 0x806
103#define ETH_IPV4_FRAME 0x800
104#define ETH_IPV6_FRAME 0x86DD
105#define UDP 0x11
106#define TCP 0x06
f8942e07 107
bd33dd31
KM
108#define ARP_OP_REQUEST 0x01
109#define ARP_OP_REPLY 0x02
110#define ARP_PKT_SIZE 60
f8942e07 111
a3489276 112/* This is the format for the TCP packet header */
16c3f8b0 113struct bcm_tcp_header {
963fa3e6
KM
114 unsigned short usSrcPort;
115 unsigned short usDestPort;
edb9ebb0
KM
116 unsigned long ulSeqNumber;
117 unsigned long ulAckNumber;
57b49ada
KM
118 unsigned char HeaderLength;
119 unsigned char ucFlags;
963fa3e6
KM
120 unsigned short usWindowsSize;
121 unsigned short usChkSum;
122 unsigned short usUrgetPtr;
16c3f8b0 123};
f8942e07 124
16c3f8b0 125#define TCP_HEADER_LEN sizeof(struct bcm_tcp_header)
a3489276 126#define TCP_ACK 0x10 /* Bit 4 in tcpflags field. */
bd33dd31 127#define GET_TCP_HEADER_LEN(byte) ((byte&0xF0)>>4)
f8942e07 128
a3489276 129#endif /* __PROTOCOL_H__ */