16dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt/*
26dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Broadcom Ethernettype  protocol definitions
36dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation
538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
66dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any
76dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above
86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies.
96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: bcmeth.h 382882 2013-02-04 23:24:31Z $
196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt */
206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
2138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
2238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Broadcom Ethernet protocol defines
2338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _BCMETH_H_
266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define _BCMETH_H_
276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _TYPEDEFS_H_
296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <typedefs.h>
306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif
316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
3238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This marks the start of a packed structure section. */
336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_start.h>
346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
3538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ETHER_TYPE_BRCM is defined in ethernet.h */
366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
3838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Following the 2byte BRCM ether_type is a 16bit BRCM subtype field
3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * in one of two formats: (only subtypes 32768-65535 are in use now)
4038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
4138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * subtypes 0-32767:
4238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *     8 bit subtype (0-127)
4338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *     8 bit length in bytes (0-255)
4438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
4538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * subtypes 32768-65535:
4638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *     16 bit big-endian subtype
4738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *     16 bit big-endian length in bytes (0-65535)
4838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
4938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * length is the number of additional bytes beyond the 4 or 6 byte header
5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
5138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Reserved values:
5238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 0 reserved
5338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 5-15 reserved for iLine protocol assignments
5438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 17-126 reserved, assignable
5538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 127 reserved
5638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 32768 reserved
5738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 32769-65534 reserved, assignable
5838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 65535 reserved
5938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
6138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
6238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * While adding the subtypes and their specific processing code make sure
6338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * bcmeth_bcm_hdr_t is the first data structure in the user specific data structure definition
6438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
656dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	BCMILCP_SUBTYPE_RATE		1
676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	BCMILCP_SUBTYPE_LINK		2
686dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	BCMILCP_SUBTYPE_CSA		3
696dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	BCMILCP_SUBTYPE_LARQ		4
706dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_SUBTYPE_VENDOR		5
716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	BCMILCP_SUBTYPE_FLH		17
726dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
736dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_SUBTYPE_VENDOR_LONG	32769
746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_SUBTYPE_CERT		32770
756dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_SUBTYPE_SES		32771
766dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
776dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
786dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPE_RESERVED		0
796dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPE_EVENT		1
806dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPE_SES			2
8138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
8238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * The EAPOL type is not used anymore. Instead EAPOL messages are now embedded
8338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * within BCMILCP_BCM_SUBTYPE_EVENT type messages
8438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
8538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define BCMILCP_BCM_SUBTYPE_EAPOL		3 */
866dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPE_DPT			4
876dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
886dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPEHDR_MINLENGTH	8
896dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define BCMILCP_BCM_SUBTYPEHDR_VERSION		0
906dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
9138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* These fields are stored in network order */
926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct bcmeth_hdr
936dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt{
9438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	subtype;	/* Vendor specific..32769 */
956dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint16	length;
9638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	version;	/* Version is 0 */
9738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	oui[3];		/* Broadcom OUI */
9838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* user specific Data */
996dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint16	usr_subtype;
1006dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} BWL_POST_PACKED_STRUCT bcmeth_hdr_t;
1016dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
1026dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
10338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This marks the end of a packed structure section. */
1046dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_end.h>
1056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
10638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif	/*  _BCMETH_H_ */
107