summaryrefslogtreecommitdiffstats
path: root/sys/net/if_vlan_var.h
Commit message (Collapse)AuthorAgeFilesLines
* Prepare for 802.1p:bms2007-02-281-3/+34
| | | | | | | | | | | | | Add macro EVL_APPLY_VLID() which may be used to apply an 802.1q VLAN ID to the M_VLANTAG field in an mbuf packet header non-destructively. This will be used by net80211 to begin with. Add macro EVL_APPLY_PRI() which may be used to apply an 802.1p priority class to the M_VLANTAG field in an mbuf packet header non-destructively. Add other macros for manipulating tags and the CFI bit. Submitted by: Boris Kovalenko (EVL_CFIOFTAG(), EVL_MAKETAG())
* Move ethernet VLAN tags from mtags to its own mbuf packet header fieldandre2006-09-171-39/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m_pkthdr.ether_vlan. The presence of the M_VLANTAG flag on the mbuf signifies the presence and validity of its content. Drivers that support hardware VLAN tag stripping fill in the received VLAN tag (containing both vlan and priority information) into the ether_vtag mbuf packet header field: m->m_pkthdr.ether_vtag = vlan_id; /* ntohs()? */ m->m_flags |= M_VLANTAG; to mark the packet m with the specified VLAN tag. On output the driver should check the mbuf for the M_VLANTAG flag to see if a VLAN tag is present and valid: if (m->m_flags & M_VLANTAG) { ... = m->m_pkthdr.ether_vtag; /* htons()? */ ... pass tag to hardware ... } VLAN tags are stored in host byte order. Byte swapping may be necessary. (Note: This driver conversion was mechanic and did not add or remove any byte swapping in the drivers.) Remove zone_mtag_vlan UMA zone and MTAG_VLAN definition. No more tag memory allocation have to be done. Reviewed by: thompsa, yar Sponsored by: TCP/IP Optimization Fundraise 2005
* Merge the //depot/user/yar/vlan branch into CVS. It contains some collectiveglebius2006-01-301-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | work by yar, thompsa and myself. The checksum offloading part also involves work done by Mihail Balikov. The most important changes: o Instead of global linked list of all vlan softc use a per-trunk hash. The size of hash is dynamically adjusted, depending on number of entries. This changes struct ifnet, replacing counter of vlans with a pointer to trunk structure. This change is an improvement for setups with big number of VLANs, several interfaces and several CPUs. It is a small regression for a setup with a single VLAN interface. An alternative to dynamic hash is a per-trunk static array with 4096 entries, which is a compile time option - VLAN_ARRAY. In my experiments the array is not an improvement, probably because such a big trunk structure doesn't fit into CPU cache. o Introduce an UMA zone for VLAN tags. Since drivers depend on it, the zone is declared in kern_mbuf.c, not in optional vlan(4) driver. This change is a big improvement for any setup utilizing vlan(4). o Use rwlock(9) instead of mutex(9) for locking. We are the first ones to do this! :) o Some drivers can do hardware VLAN tagging + hardware checksum offloading. Add an infrastructure for this. Whenever vlan(4) is attached to a parent or parent configuration is changed, the flags on vlan(4) interface are updated. In collaboration with: yar, thompsa In collaboration with: Mihail Balikov <mihail.balikov interbgc.com>
* - Fix VLAN_INPUT_TAG() macro, so that it doesn't touch mtag inglebius2005-12-181-6/+7
| | | | | | | | | case if memory allocation failed. - Remove fourth argument from VLAN_INPUT_TAG(), that was used incorrectly in almost all drivers. Indicate failure with mbuf value of NULL. In collaboration with: yongari, ru, sam
* Use VLAN_TAG_VALUE() not only to read a dot1q tagyar2005-08-311-2/+7
| | | | | | | | | | | | | value from an m_tag, but also to set it. This reduces complex code duplication and improves its readability. Alas, we shouldn't rename the macro to VLAN_TAG_LVALUE() globally because that would cause pain for kernel module port maintainers and vendors using FreeBSD as their codebase. Added a clarifying comment instead. Discussed with: ru, glebius X-MFC-After: 6.0-RELEASE (MFC is good just to reduce the diff)
* Allocate the M_VLANTAG m_pkthdr flag, and use it to indicate thatru2005-02-181-3/+4
| | | | | | | | | | | | | | | | a packet has VLAN mbuf tag attached. This is faster to check than m_tag_locate(), and allows us to use the tags in non-vlan(4) VLAN producers. The first argument to VLAN_OUTPUT_TAG() is now unused but retained for backward compatibility. While here, embellish a fix in rev. 1.174 of if_ethersubr.c -- it now checks for packets with VLAN (mbuf) tags, and it should now be possible to bridge(4) on vlan(4)'s whose parent interfaces support VLAN decapsulation in hardware. Reviewed by: sam
* /* -> /*- for license, minor formatting changesimp2005-01-071-1/+1
|
* A network interface driver can support IFCAP_VLAN_MTU only,yar2004-01-181-3/+3
| | | | | | | without IFCAP_VLAN_HWTAGGING. The previous version of the leading comment in this file could lead to the opposite conclusion. Fix some typos in the comment as well.
* backout the switch to use a zone for vlan tags; this requiressam2004-01-031-3/+2
| | | | vlans be present if any driver with h/w vlan tagging is configured
* switch vlan packet tag allocation to use a private zonesam2004-01-021-2/+3
|
* - In vlan_input(), always mask off all but the VLID bits from tagswpaul2003-07-081-1/+2
| | | | | | | | | | | | extracted from received frames, both in the IFCAP_VLAN_HWTAGGING case and not. (Some drivers may already do this masking internally, but doing it here doesn't hurt and insures consistency.) - In vlan_ioctl(), don't let the user set a VLAN ID value with anything besides the VLID bits set, otherwise we will have trouble matching an interface in vlan_input() later. PR: kern/46405
* Pass the correct malloc flags to m_tag_alloc().mux2003-03-131-1/+1
|
* Back out M_* changes, per decision of the TRB.imp2003-02-191-1/+1
| | | | Approved by: trb
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-1/+1
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* o eliminate separate callback interface for h/w tagged input packets; insteadsam2002-11-141-22/+57
| | | | | | | | | | | | | | | | | | | | | drivers "tag packets" with an m_tag and the input packet handling recognizes such packets and does the right thing o track the number of active vlans on an interface; this lets lots of places only do vlan-specific processing when needed o track changes to ether_ifdetach/ether_ifattach o track bpf changes o eliminate the use of M_PROTO1 for communicating to drivers about tagged packets o eliminate the use of IFF_LINK0 for drivers communicating to the vlan code that they support h/w tagging; replaced by explicit interface capabilities o add ifnet capabilities for h/w tagging and support of "large mtu's" o use new interface capabilities to auto-configure use of large mtu's and h/w tagging o add support for proper handling of promiscuous mode o document driver/vlan communication conventions Reviewed by: many Approved by: re
* Simplify the interface cloning framework by handling unitmux2002-03-111-1/+0
| | | | | | | | | unit allocation with a bitmap in the generic layer. This allows us to get rid of the duplicated rman code in every clonable interface. Reviewed by: brooks Approved by: phk
* Make vlan(4) loadable, unloadable, and clonable. As a side effect,brooks2001-09-051-8/+2
| | | | | | | interfaces must now always enable VLAN support. Reviewed by: jlemon MFC after: 3 weeks
* Use the IANA assignment IFT_L2VLAN directly instead of indirecting throughfenner2001-07-241-3/+0
| | | | | | a privately #defined IFT_8021_VLAN. MFC after: 3 days
* Change the type of the VLAN interface from IFT_PROPVIRTUAL,yar2001-04-041-2/+2
| | | | | which was a temporary hack, to IFT_L2VLAN, which is the type assigned by IANA.
* Back out the previous change to the queue(3) interface.jake2000-05-261-2/+2
| | | | | | It was not discussed and should probably not happen. Requested by: msmith and others
* Change the way that the queue(3) structures are declared; don't assume thatjake2000-05-231-2/+2
| | | | | | | | the type argument to *_HEAD and *_ENTRY is a struct. Suggested by: phk Reviewed by: phk Approved by: mdodd
* Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"peter1999-12-291-3/+3
| | | | | | is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is consistant with the other BSD's who made this change quite some time ago. More commits to come.
* The current code incorrectly assumes that all vlansjkh1999-12-131-1/+1
| | | | | | | | | are configured, and/or associated with a parent device. If you receive a frame for a VLAN that's not in the list, you walk off the end of the list. Boom. Submitted by: C. Stephen Gunn <csg@waterspout.com> PR: 15291
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Grrr... botched remote commit. Let's try this again: vlan updates,wpaul1999-03-151-1/+9
| | | | take two.
* Add preliminary support for IEEE 802.1Q VLAN tagging. It doesn't actuallywollman1998-03-181-0/+84
work reliably yet (I've had panics), but it does seem to occasionally be able to transmit and receive syntactically-correct packets. Also fixes one of if_ethersubr.c's legion style bugs, and removes the hostcache code from standard kernels---the code that depends on it is not going to happen any time soon, I'm afraid.
OpenPOWER on IntegriCloud