vlan.h revision 6dbcf2181152a81ab5f3bc5fa765288341a1b7ab
16dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt/*
26dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 802.1Q VLAN protocol definitions
36dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
46dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Copyright (C) 1999-2011, Broadcom Corporation
56dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry 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 *
186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * $Id: vlan.h,v 9.7 2009-03-13 01:11:50 Exp $
196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt */
206dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
216dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
226dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _vlan_h_
236dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define _vlan_h_
246dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#ifndef _TYPEDEFS_H_
266dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <typedefs.h>
276dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif
286dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
296dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_start.h>
316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
326dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VLAN_VID_MASK		0xfff
336dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	VLAN_CFI_SHIFT		12
346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VLAN_PRI_SHIFT		13
356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VLAN_PRI_MASK		7
376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	VLAN_TAG_LEN		4
396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	VLAN_TAG_OFFSET		(2 * ETHER_ADDR_LEN)
406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define VLAN_TPID		0x8100
426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidtstruct ethervlan_header {
446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint8	ether_dhost[ETHER_ADDR_LEN];
456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint8	ether_shost[ETHER_ADDR_LEN];
466dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint16	vlan_type;
476dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint16	vlan_tag;
486dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	uint16	ether_type;
496dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt};
506dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
516dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define	ETHERVLAN_HDR_LEN	(ETHER_HDR_LEN + VLAN_TAG_LEN)
526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#include <packed_section_end.h>
566dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
576dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define ETHERVLAN_MOVE_HDR(d, s) \
586dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidtdo { \
596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	struct ethervlan_header t; \
606dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	t = *(struct ethervlan_header *)(s); \
616dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt	*(struct ethervlan_header *)(d) = t; \
626dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt} while (0)
636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
646dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif
65