1/*
2 * Broadcom Ethernettype  protocol definitions
3 *
4 * Copyright 2007, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11 *
12 * $Id: bcmeth.h,v 1.1.1.1 2008/10/15 03:25:54 james26_jang Exp $
13 */
14
15/*
16 * Broadcom Ethernet protocol defines
17 */
18
19#ifndef _BCMETH_H_
20#define _BCMETH_H_
21
22/* enable structure packing */
23#if defined(__GNUC__)
24#define	PACKED	__attribute__((packed))
25#else
26#pragma pack(1)
27#define	PACKED
28#endif
29
30/* ETHER_TYPE_BRCM is defined in ethernet.h */
31
32/*
33 * Following the 2byte BRCM ether_type is a 16bit BRCM subtype field
34 * in one of two formats: (only subtypes 32768-65535 are in use now)
35 *
36 * subtypes 0-32767:
37 *     8 bit subtype (0-127)
38 *     8 bit length in bytes (0-255)
39 *
40 * subtypes 32768-65535:
41 *     16 bit big-endian subtype
42 *     16 bit big-endian length in bytes (0-65535)
43 *
44 * length is the number of additional bytes beyond the 4 or 6 byte header
45 *
46 * Reserved values:
47 * 0 reserved
48 * 5-15 reserved for iLine protocol assignments
49 * 17-126 reserved, assignable
50 * 127 reserved
51 * 32768 reserved
52 * 32769-65534 reserved, assignable
53 * 65535 reserved
54 */
55
56/*
57 * While adding the subtypes and their specific processing code make sure
58 * bcmeth_bcm_hdr_t is the first data structure in the user specific data structure definition
59 */
60
61#define	BCMILCP_SUBTYPE_RATE		1
62#define	BCMILCP_SUBTYPE_LINK		2
63#define	BCMILCP_SUBTYPE_CSA		3
64#define	BCMILCP_SUBTYPE_LARQ		4
65#define BCMILCP_SUBTYPE_VENDOR		5
66#define	BCMILCP_SUBTYPE_FLH		17
67
68#define BCMILCP_SUBTYPE_VENDOR_LONG	32769
69#define BCMILCP_SUBTYPE_CERT		32770
70#define BCMILCP_SUBTYPE_SES		32771
71
72
73#define BCMILCP_BCM_SUBTYPE_RESERVED	0
74#define BCMILCP_BCM_SUBTYPE_EVENT		1
75#define BCMILCP_BCM_SUBTYPE_SES			2
76/*
77 * The EAPOL type is not used anymore. Instead EAPOL messages are now embedded
78 * within BCMILCP_BCM_SUBTYPE_EVENT type messages
79 */
80/* #define BCMILCP_BCM_SUBTYPE_EAPOL		3 */
81
82#define BCMILCP_BCM_SUBTYPEHDR_MINLENGTH	8
83#define BCMILCP_BCM_SUBTYPEHDR_VERSION		0
84
85/* These fields are stored in network order */
86typedef  struct bcmeth_hdr
87{
88	uint16	subtype;	/* Vendor specific..32769 */
89	uint16	length;
90	uint8	version;	/* Version is 0 */
91	uint8	oui[3];		/* Broadcom OUI */
92	/* user specific Data */
93	uint16	usr_subtype;
94} PACKED bcmeth_hdr_t;
95
96#undef PACKED
97#if !defined(__GNUC__)
98#pragma pack()
99#endif
100
101#endif	/*  _BCMETH_H_ */
102