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