• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Broadcom Ethernettype  protocol definitions
3  *
4  * Copyright (C) 1999-2013, Broadcom Corporation
5  *
6  * Permission to use, copy, modify, and/or distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
13  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
15  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
16  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  *
18  * $Id: bcmeth.h 382882 2013-02-04 23:24:31Z $
19  */
20 
21 /*
22  * Broadcom Ethernet protocol defines
23  */
24 
25 #ifndef _BCMETH_H_
26 #define _BCMETH_H_
27 
28 #ifndef _TYPEDEFS_H_
29 #include <typedefs.h>
30 #endif
31 
32 /* This marks the start of a packed structure section. */
33 #include <packed_section_start.h>
34 
35 /* ETHER_TYPE_BRCM is defined in ethernet.h */
36 
37 /*
38  * Following the 2byte BRCM ether_type is a 16bit BRCM subtype field
39  * in one of two formats: (only subtypes 32768-65535 are in use now)
40  *
41  * subtypes 0-32767:
42  *     8 bit subtype (0-127)
43  *     8 bit length in bytes (0-255)
44  *
45  * subtypes 32768-65535:
46  *     16 bit big-endian subtype
47  *     16 bit big-endian length in bytes (0-65535)
48  *
49  * length is the number of additional bytes beyond the 4 or 6 byte header
50  *
51  * Reserved values:
52  * 0 reserved
53  * 5-15 reserved for iLine protocol assignments
54  * 17-126 reserved, assignable
55  * 127 reserved
56  * 32768 reserved
57  * 32769-65534 reserved, assignable
58  * 65535 reserved
59  */
60 
61 /*
62  * While adding the subtypes and their specific processing code make sure
63  * bcmeth_bcm_hdr_t is the first data structure in the user specific data structure definition
64  */
65 
66 #define	BCMILCP_SUBTYPE_RATE		1
67 #define	BCMILCP_SUBTYPE_LINK		2
68 #define	BCMILCP_SUBTYPE_CSA		3
69 #define	BCMILCP_SUBTYPE_LARQ		4
70 #define BCMILCP_SUBTYPE_VENDOR		5
71 #define	BCMILCP_SUBTYPE_FLH		17
72 
73 #define BCMILCP_SUBTYPE_VENDOR_LONG	32769
74 #define BCMILCP_SUBTYPE_CERT		32770
75 #define BCMILCP_SUBTYPE_SES		32771
76 
77 
78 #define BCMILCP_BCM_SUBTYPE_RESERVED		0
79 #define BCMILCP_BCM_SUBTYPE_EVENT		1
80 #define BCMILCP_BCM_SUBTYPE_SES			2
81 /*
82  * The EAPOL type is not used anymore. Instead EAPOL messages are now embedded
83  * within BCMILCP_BCM_SUBTYPE_EVENT type messages
84  */
85 /* #define BCMILCP_BCM_SUBTYPE_EAPOL		3 */
86 #define BCMILCP_BCM_SUBTYPE_DPT			4
87 
88 #define BCMILCP_BCM_SUBTYPEHDR_MINLENGTH	8
89 #define BCMILCP_BCM_SUBTYPEHDR_VERSION		0
90 
91 /* These fields are stored in network order */
92 typedef BWL_PRE_PACKED_STRUCT struct bcmeth_hdr
93 {
94 	uint16	subtype;	/* Vendor specific..32769 */
95 	uint16	length;
96 	uint8	version;	/* Version is 0 */
97 	uint8	oui[3];		/* Broadcom OUI */
98 	/* user specific Data */
99 	uint16	usr_subtype;
100 } BWL_POST_PACKED_STRUCT bcmeth_hdr_t;
101 
102 
103 /* This marks the end of a packed structure section. */
104 #include <packed_section_end.h>
105 
106 #endif	/*  _BCMETH_H_ */
107