#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
265291 |
|
03-May-2014 |
rmacklem |
MFC: r264517 Vlan did not set the value of if_hw_tsomax, so when vlan was stacked on top of a network interface that set if_hw_tsomax, tcp_output() would see the default value instead of the value set by the network interface. This patch modifies vlan so that it sets if_hw_tsomax to the value of the parent interface.
|
#
252828 |
|
05-Jul-2013 |
andre |
MFC r243624:
Remove unused and unnecessary CSUM_IP_FRAGS checksumming capability. Checksumming the IP header of fragments is no different from doing normal IP headers.
Discussed with: yongari
Note that the definition of CSUM_IP_FRAGS is left in mbuf.h to allow for stable branch source compatibility.
|
#
252555 |
|
03-Jul-2013 |
np |
MFC/backport core kernel and userspace parts of r237263 (TCP_OFFLOAD rework). MFC r237563, r239511, r243603, r245915, r245916, r245919, r245921, r245922, r245924, r245925, r245932, r245934 too.
Build tested with make universe.
r237263: - Updated TOE support in the kernel. ...
r237563: Fix clang warning when compiling iw_cxgb.
r239511: Correctly handle the case where an inp has already been dropped by the time the TOE driver reports that an active open failed. toe_connect_failed is supposed to handle this but it should be provided the inpcb instead of the tcpcb which may no longer be around.
r243603: Make sure that tcp_timer_activate() correctly sees TCP_OFFLOAD (or not).
r245915: Heed SO_NO_OFFLOAD.
r245916: Teach toe_4tuple_check() to deal with IPv6 4-tuples too.
r245919: Add TCP_OFFLOAD hook in syncache_respond for IPv6 too, just like the one that exists for IPv4.
r245921: There is no need to call into the TOE driver twice in pru_rcvd (tod_rcvd and then tod_output right after that).
r245922: Avoid NULL dereference in nd6_storelladdr when no mbuf is provided. It is called this way from a couple of places in the OFED code. (toecore calls it too but that's going to change shortly).
r245924: Move lle_event to if_llatbl.h
lle_event replaced arp_update_event after the ARP rewrite and ended up in if_ether.h simply because arp_update_event used to be there too. IPv6 neighbor discovery is going to grow lle_event support and this is a good time to move it to if_llatbl.h.
The two in-tree consumers of this event - OFED and toecore - are not affected.
r245925: Generate lle_event in the IPv6 neighbor discovery code too.
r245932: Teach toe_l2_resolve to resolve IPv6 destinations too.
r245934: Add checks for SO_NO_OFFLOAD in a couple of places that I missed earlier in r245915.
|
#
252104 |
|
23-Jun-2013 |
hrs |
MFC r251799:
Return ENETDOWN when the parent interface is down.
|
#
250927 |
|
23-May-2013 |
oleg |
MFC: r249628, r249742
- recover missing arp_ifinit() call. - plug static llentry leak (ipv4 & ipv6 were affected).
PR: kern/172985
|
#
248085 |
|
09-Mar-2013 |
marius |
MFC: r227309 (partial)
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
#
241327 |
|
07-Oct-2012 |
jhb |
MFC 239440,239519: Refine the changes made in r208212 to avoid bogus failures from if_delmulti() when clearing the configuration for a subinterface when the parent interface is being detached. The current code was still triggering an assertion in if_delmulti() due to the parent interface being partially detached. Fix this by not calling if_delmulti() at all if the parent interface is being detached. Warn if if_delmulti() fails when the parent is not being detached (but similar to 208212, still proceed with tearing down the vlan state).
|
#
229708 |
|
06-Jan-2012 |
jhb |
MFC 228967: Update if_obytes and if_omcast after successful transmit. While I'm here update if_oerrors if parent interface of vlan is not up and running. Previously it updated collision counter and it was confusing to interprete it.
|
#
229633 |
|
05-Jan-2012 |
jhb |
MFC 228089: Change the if_vlan driver to use if_transmit for forwarding packets to the parent interface. This avoids the overhead of queueing a packet to an IFQ only to immediately dequeue it again.
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
219819 |
|
21-Mar-2011 |
jeff |
- Merge changes to the base system to support OFED. These include a wider arg2 for sysctl, updates to vlan code, IFT_INFINIBAND, and other miscellaneous small features.
|
#
215726 |
|
22-Nov-2010 |
zec |
Allow for vlan(4) ifnets to have overlapping unit numbers if they are created in separated vnets. As a side-effect of having a separated if_cloner instance for each vnet, all vlan ifnets created in a vnet will be automatically destroyed when vnet teardown is initiated.
Disallow SIOCSETVLAN and SIOCGETVLAN ioctls on vlan ifnets which are associated with physical ifnets residing in parent vnets.
This is an interim vlan-specific solution which will be superseded by a more generic if_cloner V_irtualization change from p4. For nooptions VIMAGE builds, this should be a no-op change.
Discussed with: bz MFC after: 3 days
|
#
210937 |
|
06-Aug-2010 |
jhb |
Adjust the interface type in the link layer socket address for vlan(4) interfaces to be a vlan (IFT_L2VLAN) rather than an Ethernet interface (IFT_ETHER). The code already fixed if_type in the ifnet causing some places to report the interface as a vlan (e.g. arp -a output) and other places to report the interface as Ethernet (getifaddrs(3)). Now they should all report IFT_L2VLAN.
Reviewed by: brooks MFC after: 1 month
|
#
208212 |
|
17-May-2010 |
jhb |
Ignore failures from removing multicast addresses from the parent (trunk) interface when tearing down a vlan interface. If a trunk interface is detached, all of its multicast addresses are removed before the ifnet departure eventhandlers are invoked. This means that all of the multicast addresses are removed before the vlan interfaces are removed which causes the if_delmulti() calls in the vlan teardown to fail.
In the VLAN_ARRAY case, this left vlan interfaces referencing a no longer valid parent interface. In the !VLAN_ARRAY case, the eventhandler gets stuck in an infinite loop retrying vlan_unconfig_locked() forever. In general the callers of vlan_unconfig_locked() do not expect nor handle failure, so I believe it is safer to ignore the errors and tear down as much of the vlan state as possible.
Silence from: net@ MFC after: 4 days
|
#
205411 |
|
21-Mar-2010 |
emaste |
Avoid holding the VLAN_LOCK() over the parent interface SIOCGIFMEDIA ioctl call, as it may sleep.
Reviewed by: rwatson
|
#
204156 |
|
20-Feb-2010 |
yongari |
Add __FBSDID.
Reviewed by: sam
|
#
204149 |
|
20-Feb-2010 |
yongari |
Add TSO support on VLANs. Intentionally separated IFCAP_VLAN_HWTSO from IFCAP_VLAN_HWTAGGING. I think some hardwares may be able to TSO over VLAN without VLAN hardware tagging. Driver changes and userland support will follow.
Reviewed by: thompsa
|
#
202611 |
|
19-Jan-2010 |
thompsa |
Do not hold the lock over if_setlladdr() as it calls into the interface driver init routine.
|
#
202588 |
|
18-Jan-2010 |
thompsa |
Declare a new EVENTHANDLER called iflladdr_event which signals that the L2 address on an interface has changed. This lets stacked interfaces such as vlan(4) detect that their lower interface has changed and adjust things in order to keep working. Previously this situation broke at least vlan(4) and lagg(4) configurations.
The EVENTHANDLER_INVOKE call was not placed within if_setlladdr() due to the risk of a loop.
PR: kern/142927 Submitted by: Nikolay Denev
|
#
201351 |
|
31-Dec-2009 |
jhb |
Use stricter checking to match possible vlan clones by not allowing extra garbage characters around or within the tag.
Reviewed by: brooks MFC after: 3 days
|
#
201350 |
|
31-Dec-2009 |
brooks |
The devices that supported EVFILT_NETDEV kqueue filters were removed in r195175. Remove all definitions, documentation, and usage.
fifo_misc.c: Remove all kqueue tests as fifo_io.c performs all those that would have remained.
Reviewed by: rwatson MFC after: 3 weeks X-MFC note: don't change vlan_link_state() function signature
|
#
201196 |
|
29-Dec-2009 |
jhb |
Change vlan interfaces to cope more usefully with the parent interface being renamed. Previously the vlan interfaces would lose their configuration as if the parent interface had been physically removed. Now vlan interfaces ignore rename events. - Add a new ifnet flag (IFF_RENAMING) that is set while an ifnet is being renamed. This flag can be checked in ifnet departure/arrival event handlers to treat rename events differently. - Change the ifnet departure event handler in the if_vlan(4) driver to ignore departure events due to a trunk interface being renamed.
Reviewed by: brooks, rwatson MFC after: 1 week
|
#
197010 |
|
09-Sep-2009 |
emaste |
Compare pointer with NULL, not 0.
|
#
196481 |
|
23-Aug-2009 |
rwatson |
Rework global locks for interface list and index management, correcting several critical bugs, including race conditions and lock order issues:
Replace the single rwlock, ifnet_lock, with two locks, an rwlock and an sxlock. Either can be held to stablize the lists and indexes, but both are required to write. This allows the list to be held stable in both network interrupt contexts and sleepable user threads across sleeping memory allocations or device driver interactions. As before, writes to the interface list must occur from sleepable contexts.
Reviewed by: bz, julian MFC after: 3 days
|
#
196019 |
|
01-Aug-2009 |
rwatson |
Merge the remainder of kern_vimage.c and vimage.h into vnet.c and vnet.h, we now use jails (rather than vimages) as the abstraction for virtualization management, and what remained was specific to virtual network stacks. Minor cleanups are done in the process, and comments updated to reflect these changes.
Reviewed by: bz Approved by: re (vimage blanket)
|
#
195699 |
|
14-Jul-2009 |
rwatson |
Build on Jeff Roberson's linker-set based dynamic per-CPU allocator (DPCPU), as suggested by Peter Wemm, and implement a new per-virtual network stack memory allocator. Modify vnet to use the allocator instead of monolithic global container structures (vinet, ...). This change solves many binary compatibility problems associated with VIMAGE, and restores ELF symbols for virtualized global variables.
Each virtualized global variable exists as a "reference copy", and also once per virtual network stack. Virtualized global variables are tagged at compile-time, placing the in a special linker set, which is loaded into a contiguous region of kernel memory. Virtualized global variables in the base kernel are linked as normal, but those in modules are copied and relocated to a reserved portion of the kernel's vnet region with the help of a the kernel linker.
Virtualized global variables exist in per-vnet memory set up when the network stack instance is created, and are initialized statically from the reference copy. Run-time access occurs via an accessor macro, which converts from the current vnet and requested symbol to a per-vnet address. When "options VIMAGE" is not compiled into the kernel, normal global ELF symbols will be used instead and indirection is avoided.
This change restores static initialization for network stack global variables, restores support for non-global symbols and types, eliminates the need for many subsystem constructors, eliminates large per-subsystem structures that caused many binary compatibility issues both for monitoring applications (netstat) and kernel modules, removes the per-function INIT_VNET_*() macros throughout the stack, eliminates the need for vnet_symmap ksym(2) munging, and eliminates duplicate definitions of virtualized globals under VIMAGE_GLOBALS.
Bump __FreeBSD_version and update UPDATING.
Portions submitted by: bz Reviewed by: bz, zec Discussed with: gnn, jamie, jeff, jhb, julian, sam Suggested by: peter Approved by: re (kensmith)
|
#
194739 |
|
23-Jun-2009 |
bz |
After cleaning up rt_tables from vnet.h and cleaning up opt_route.h a lot of files no longer need route.h either. Garbage collect them. While here remove now unneeded vnet.h #includes as well.
|
#
193744 |
|
08-Jun-2009 |
bz |
After r193232 rt_tables in vnet.h are no longer indirectly dependent on the ROUTETABLES kernel option thus there is no need to include opt_route.h anymore in all consumers of vnet.h and no longer depend on it for module builds.
Remove the hidden include in flowtable.h as well and leave the two explicit #includes in ip_input.c and ip_output.c.
|
#
191217 |
|
17-Apr-2009 |
jhb |
The vlan code has not required the miibus code since 6.0 when if_link_state_change() was added and the vlan link-state hook was moved out of miibus and into net/if.c.
MFC after: 1 month
|
#
189106 |
|
27-Feb-2009 |
bz |
For all files including net/vnet.h directly include opt_route.h and net/route.h.
Remove the hidden include of opt_route.h and net/route.h from net/vnet.h.
We need to make sure that both opt_route.h and net/route.h are included before net/vnet.h because of the way MRT figures out the number of FIBs from the kernel option. If we do not, we end up with the default number of 1 when including net/vnet.h and array sizes are wrong.
This does not change the list of files which depend on opt_route.h but we can identify them now more easily.
|
#
188575 |
|
13-Feb-2009 |
maxim |
o In case of the error do not forget to deallocate a cloned device unit.
PR: kern/131642 Submitted by: Dmitrij Tejblum MFC after: 1 week
|
#
188546 |
|
12-Feb-2009 |
rwatson |
Remove unused ifaddr local variable in ioctl routine.
MFC after: 3 days
|
#
185571 |
|
02-Dec-2008 |
bz |
Rather than using hidden includes (with cicular dependencies), directly include only the header files needed. This reduces the unneeded spamming of various headers into lots of files.
For now, this leaves us with very few modules including vnet.h and thus needing to depend on opt_route.h.
Reviewed by: brooks, gnn, des, zec, imp Sponsored by: The FreeBSD Foundation
|
#
185164 |
|
22-Nov-2008 |
kmacy |
convert calls to IFQ_HANDOFF to if_transmit
|
#
183550 |
|
02-Oct-2008 |
zec |
Step 1.5 of importing the network stack virtualization infrastructure from the vimage project, as per plan established at devsummit 08/08: http://wiki.freebsd.org/Image/Notes200808DevSummit
Introduce INIT_VNET_*() initializer macros, VNET_FOREACH() iterator macros, and CURVNET_SET() context setting macros, all currently resolving to NOPs.
Prepare for virtualization of selected SYSCTL objects by introducing a family of SYSCTL_V_*() macros, currently resolving to their global counterparts, i.e. SYSCTL_V_INT() == SYSCTL_INT().
Move selected #defines from sys/sys/vimage.h to newly introduced header files specific to virtualized subsystems (sys/net/vnet.h, sys/netinet/vinet.h etc.).
All the changes are verified to have zero functional impact at this point in time by doing MD5 comparision between pre- and post-change object files(*).
(*) netipsec/keysock.c did not validate depending on compile time options.
Implemented by: julian, bz, brooks, zec Reviewed by: julian, bz, brooks, kris, rwatson, ... Approved by: julian (mentor) Obtained from: //depot/projects/vimage-commit2/... X-MFC after: never Sponsored by: NLnet Foundation, The FreeBSD Foundation
|
#
182413 |
|
28-Aug-2008 |
jfv |
Fix to bug kern/126850. Only dispatch event hander if the interface had a parent (was attached).
Reviewed by: EvilSam MFC after: 1 week
|
#
181803 |
|
17-Aug-2008 |
bz |
Commit step 1 of the vimage project, (network stack) virtualization work done by Marko Zec (zec@).
This is the first in a series of commits over the course of the next few weeks.
Mark all uses of global variables to be virtualized with a V_ prefix. Use macros to map them back to their global names for now, so this is a NOP change only.
We hope to have caught at least 85-90% of what is needed so we do not invalidate a lot of outstanding patches again.
Obtained from: //depot/projects/vimage-commit2/... Reviewed by: brooks, des, ed, mav, julian, jamie, kris, rwatson, zec, ... (various people I forgot, different versions) md5 (with a bit of help) Sponsored by: NLnet Foundation, The FreeBSD Foundation X-MFC after: never V_Commit_Message_Reviewed_By: more people than the patch
|
#
180511 |
|
14-Jul-2008 |
jfv |
Add event notification at attach/detach so the NIC is able to detect it and do hardware filtering.
|
#
172770 |
|
18-Oct-2007 |
thompsa |
The bridging output function puts the mbuf directly on the interfaces send queue so the output network card must support the same tagging mechanism as how the frame was input (prepended Ethernet header tag or stripped HW mflag).
Now the vlan Ethernet header is _always_ stripped in ether_input and the mbuf flagged, only only network cards with VLAN_HWTAGGING enabled would properly re-tag any outgoing vlan frames.
If the outgoing interface does not support hardware tagging then readd the vlan header to the front of the frame. Move the common vlan encapsulation in to ether_vlanencap().
Reported by: Erik Osterholm, Jon Otterholm MFC after: 1 week
|
#
167711 |
|
19-Mar-2007 |
yar |
Now <net/if_arp.h> is unused here.
|
#
167708 |
|
19-Mar-2007 |
yar |
Fix a nameless constant: 6 -> ETHER_ADDR_LEN
Tested with: md5(1)
|
#
167704 |
|
19-Mar-2007 |
yar |
Now that this driver uses ether_ioctl(), it no longer needs the INET related include files.
|
#
167601 |
|
15-Mar-2007 |
yar |
Remove a spurious blank line at the start of vlan_growhash(). Add a diagnostic message to the function about resizing vlan hash table.
|
#
167559 |
|
14-Mar-2007 |
yar |
Let vlan_ioctl() pass some work on to ether_ioctl() and so reduce code duplication a bit.
|
#
167484 |
|
12-Mar-2007 |
yar |
Emit load and unload messages under bootverbose. This can help to spot bugs (which it did for me,) and let people know which mode the vlan module is actually using if they suspect it isn't picking its options from the main kernel config file.
|
#
167483 |
|
12-Mar-2007 |
yar |
Fix some minor issues in the internal vlan lists:
- ifv_list member of struct ifvlan is unneeded in array mode, it's used only in hash mode to resolve hash collisions.
- We don't need the list of trunks at all. (The initial reason for having it was to be able to destroy all trunks in the MOD_UNLOAD handler, but a trunk is not to be destroyed forcibly -- it will go away when all vlan interfaces on it have been deleted. Note that if_clone_detach() called first of all under MOD_UNLOAD will delete all vlan interfaces and thus make all trunks go away quietly.)
- It's enough to use a single [S]LIST_FIRST() in a typical list destruction loop.
|
#
165662 |
|
30-Dec-2006 |
yar |
- Don't defer the removal of an 802.1q header for no real reason. - Micro-optimize the addition of an 802.1q header to match the removal code. - Consistently check for interfaces being up and running. - Consistently use NULL instead of 0 with pointers.
|
#
163232 |
|
11-Oct-2006 |
glebius |
- Update the baudrate every time the parent changes its link state. - Rearrange the curly braces so that this piece of code is more readable.
|
#
162375 |
|
17-Sep-2006 |
andre |
Move ethernet VLAN tags from mtags to its own mbuf packet header field 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
|
#
161603 |
|
25-Aug-2006 |
thompsa |
Fix spelling.
|
#
161329 |
|
15-Aug-2006 |
yar |
This XXX remark was rendered false by rev. 103, which made the VLAN_ARRAY case subject to rw locking, too.
|
#
161326 |
|
15-Aug-2006 |
yar |
Make it a tad easier to base other encapsulation schemes on this driver by restoring the ifv_proto field in the vlan softc and putting it to use this time. It's a good companion for ifv_encaplen, which has already been used throughout this driver.
|
#
161321 |
|
15-Aug-2006 |
yar |
Set IFF_DRV_RUNNING on vlan(4) once in vlan_config(), not at many places after each call to vlan_config(). This is consistent with IFF_DRV_RUNNING being unset in vlan_unconfig().
|
#
161210 |
|
11-Aug-2006 |
yar |
Optionally pad outgoing frames to the minimum of 60 bytes (excl. FCS) before tagging them. This can help to work around brain-damage in some switches that fail to pad a frame after untagging it if its length drops below the minimum. This option is blessed by IEEE Std 802.1Q (2003 Ed.), paragraph C.4.4.3.b. It's controlled by sysctl net.link.vlan.soft_pad.
Idea by: az MFC after: 1 week
|
#
160951 |
|
03-Aug-2006 |
yar |
Should vlan_input() ever be called with ifp pointing to a non-Ethernet interface, do not just assign -1 to tag because it breaks the logic of the code to follow. The better way is to handle this case as an unsupported protocol and return unless INVARIANTS is in effect and we can panic. Panic is good there because the scenario can happen only because of a coding error elsewhere.
We also should show the interface name in the panic message for easier debugging of the problem, should it ever emerge.
Submitted by: qingli (initially)
|
#
160950 |
|
03-Aug-2006 |
yar |
Back out rev. 1.107 because it introduced as many problems as it tried to solve:
- it smuggled hidden 802.1q details into otherwise protocol-neutral code; - it put an important code consistency check under DEBUG, which was never defined by anyone but a developer hacking this file for the moment; - lastly, the former bcopy() call had been correct as long as the "dead" code was there.
(A new version of the fix for tag of -1 to come in the next commit.)
Agreed by: qingli
|
#
160884 |
|
01-Aug-2006 |
qingli |
In vlan_input(), if the network interface does not perform h/w based vlan tag processing, the code will use bcopy() to remove the vlan tag field but the code copies 2 bytes too many, which essentially overwrites the protocol type field.
Also, a tag value of -1 is generated for unrecognized interface type, which would cause an invalid memory access in the vlans[] array.
In addition, removed a line of dead code and its associated comments.
Reviewed by: sam
|
#
160195 |
|
09-Jul-2006 |
sam |
Revise network interface cloning to take an optional opaque parameter that can specify configuration parameters: o rev cloner api's to add optional parameter block o add SIOCCREATE2 that accepts parameter data o rev vlan support to use new api (maintain old code)
Reviewed by: arch@
|
#
160020 |
|
29-Jun-2006 |
yar |
Detach the interface first, do vlan_unconfig() then. Previously, another thread could get a pointer to the interface by scanning the system-wide list and sleep on the global vlan mutex held by vlan_unconfig(). The interface was gone by the time the other thread woke up.
In order to be able to call vlan_unconfig() on a detached interface, remove the purely cosmetic bzero'ing of IF_LLADDR from the function because a detached interface has no addresses.
Noticed by: a stress-testing script by maxim Reviewed by: glebius
|
#
160019 |
|
29-Jun-2006 |
yar |
Remove a few unused things. Fix some style and consistency points.
|
#
159838 |
|
21-Jun-2006 |
yar |
Fix the VLAN_ARRAY case, mostly regarding improper use of atomic(9) in place of conventional rw locking. Alas, atomic(9) can't buy us lockless operation so easily.
|
#
159823 |
|
21-Jun-2006 |
yar |
Track interface department events and detach vlans from departing trunk so that we don't get into trouble later by dereferencing a stale pointer to dead trunk's things.
Prodded by: oleg Sponsored by: RiNet (Cronyx Plus LLC) MFC after: 1 week
|
#
156495 |
|
09-Mar-2006 |
ru |
Don't acquire a lock before calling vlan_unconfig(). This fixes a panic when doing "ifconfig ... -vlandev".
OK'ed by: glebius
|
#
155986 |
|
24-Feb-2006 |
yar |
Don't to forget to unlock the rwlock on trunk before destroying it. This should fix panic on "kldunload if_vlan" while vlanX are still there.
Reviewed by: glebius
|
#
155509 |
|
10-Feb-2006 |
emaste |
Bump the MODULE_VERSION for HEAD, as the vlan(4) API is different in RELENG_6, and would require a lower version number.
Requested by: glebius Approved by: rwatson (mentor)
|
#
155502 |
|
10-Feb-2006 |
yar |
Avoid frobbing IFF_UP at any cost (which is close to zero in this case.) A kernel driver has IFF_DRV_RUNNING at its full disposal while IFF_UP may be toggled only by humans or their daemonic deputies from the userland.
MFC after: 3 days
|
#
155493 |
|
09-Feb-2006 |
emaste |
Add a MODULE_VERSION so that other modules (perhaps third-party) can depend on this one.
Approved by: rwatson (mentor)
|
#
155231 |
|
02-Feb-2006 |
glebius |
In vlan_config() first call vlan_inithash(), then lock mutex, because vlan_inithash() calls malloc(M_WAITOK).
|
#
155114 |
|
31-Jan-2006 |
yar |
Set IFF_BROADCAST and IFF_MULTICAST on vlan interfaces from the beginning and simply refuse to attach to a parent without either flag.
Our network stack cannot handle well IFF_BROADCAST or IFF_MULTICAST on an interface changing on the fly. E.g., IP will or won't assign a broadcast address to an interface and join the all-hosts multicast group on it depending on its IFF_BROADCAST and IFF_MULTICAST settings. Should the flags alter later, IP will miss the change and keep using bogus settings. This can lead to evil things like supplying an invalid broadcast address or trying to leave a multicast group that hasn't been joined. So just avoid touching the flags since an interface was created. This has no practical purpose.
Discussed with: -net, glebius, oleg MFC after: 1 week
|
#
155051 |
|
30-Jan-2006 |
glebius |
Merge the //depot/user/yar/vlan branch into CVS. It contains some collective 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>
|
#
152882 |
|
28-Nov-2005 |
glebius |
Take if_baudrate from the parent. This fixes problem with SNMP daemons reporting zero speed for vlan(4) interfaces.
|
#
152315 |
|
11-Nov-2005 |
ru |
- Store pointer to the link-level address right in "struct ifnet" rather than in ifindex_table[]; all (except one) accesses are through ifp anyway. IF_LLADDR() works faster, and all (except one) ifaddr_byindex() users were converted to use ifp->if_addr.
- Stop storing a (pointer to) Ethernet address in "struct arpcom", and drop the IFP2ENADDR() macro; all users have been converted to use IF_LLADDR() instead.
|
#
152296 |
|
11-Nov-2005 |
ru |
- Make IFP2ENADDR() a pointer to IF_LLADDR() rather than another copy of Ethernet address.
- Change iso88025_ifattach() and fddi_ifattach() to accept MAC address as an argument, similar to ether_ifattach(), to make this work.
|
#
152209 |
|
08-Nov-2005 |
thompsa |
Move the cloned interface list management in to if_clone. For some drivers the softc lists and associated mutex are now unused so these have been removed.
Calling if_clone_detach() will now destroy all the cloned interfaces for the driver and in most cases is all thats needed to unload.
Idea by: brooks Reviewed by: brooks
|
#
152139 |
|
06-Nov-2005 |
glebius |
- Do not raise IFF_DRV_OACTIVE flag in vlan_start, because this can lead to stalled interface - Explain this fact in a comment.
Reviewed by: rwatson, thompsa, yar
|
#
150846 |
|
03-Oct-2005 |
yar |
Improve handling flags that must be propagated to the parent interface, such as IFF_PROMISC and IFF_ALLMULTI. In addition, vlan(4) gains ability to migrate from one parent to another w/o losing its own flags.
PR: kern/81978 MFC after: 2 weeks
|
#
150232 |
|
16-Sep-2005 |
ru |
The arguments to printf() were swapped.
|
#
150219 |
|
16-Sep-2005 |
yar |
Do assorted nitpicking in diagnostics while I'm here: - Use __func__ consistently instead of copying function name to message strings. Code tends to migrate around source files. - DIAGNOSTIC is for information, INVARIANTS is for panics.
|
#
150217 |
|
16-Sep-2005 |
yar |
It's nice to have relevant comments both in if {} and else {}, not in just one of them.
|
#
150216 |
|
16-Sep-2005 |
yar |
Test the new M_VLANTAG packet flag before calling m_tag_locate(). This adds little overhead of a simple bitwise operation in case hardware VLAN acceleration is on, yet saves the more expensive function call if the acceleration is off.
Reviewed by: ru, glebius X-MFC-after: 6.0
|
#
149662 |
|
31-Aug-2005 |
yar |
Use VLAN_TAG_VALUE() not only to read a dot1q tag 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)
|
#
149619 |
|
30-Aug-2005 |
glebius |
Fix fallout from revision 1.77, mark outgoing packets with M_VLANTAG flag.
PR: kern/80646 Reviewed by: yar MFC after: 3 days
|
#
149110 |
|
15-Aug-2005 |
brooks |
Vlan interfaces change their type after ether_ifattach() so we needs to use if_free_type(ifp, IFT_ETHER) to delete them and stop leaking struct arpcoms.
Reported by: thompsa MFC After: 3 days
|
#
148887 |
|
09-Aug-2005 |
rwatson |
Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and IFF_DRV_RUNNING, as well as the move from ifnet.if_flags to ifnet.if_drv_flags. Device drivers are now responsible for synchronizing access to these flags, as they are in if_drv_flags. This helps prevent races between the network stack and device driver in maintaining the interface flags field.
Many __FreeBSD__ and __FreeBSD_version checks maintained and continued; some less so.
Reviewed by: pjd, bz MFC after: 7 days
|
#
147256 |
|
10-Jun-2005 |
brooks |
Stop embedding struct ifnet at the top of driver softcs. Instead the struct ifnet or the layer 2 common structure it was embedded in have been replaced with a struct ifnet pointer to be filled by a call to the new function, if_alloc(). The layer 2 common structure is also allocated via if_alloc() based on the interface type. It is hung off the new struct ifnet member, if_l2com.
This change removes the size of these structures from the kernel ABI and will allow us to better manage them as interfaces come and go.
Other changes of note: - Struct arpcom is no longer referenced in normal interface code. Instead the Ethernet address is accessed via the IFP2ENADDR() macro. To enforce this ac_enaddr has been renamed to _ac_enaddr. - The second argument to ether_ifattach is now always the mac address from driver private storage rather than sometimes being ac_enaddr.
Reviewed by: sobomax, sam
|
#
145323 |
|
20-Apr-2005 |
glebius |
- Call if_link_state_change() for each vlan, when link changes on parent. - Remove route.h include. - Fix comment about MII.
Sponsored by: Rambler Reviewed by: yar
|
#
142069 |
|
18-Feb-2005 |
ru |
Allocate the M_VLANTAG m_pkthdr flag, and use it to indicate that 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
|
#
140745 |
|
24-Jan-2005 |
yar |
Fix spelling in a comment.
|
#
140686 |
|
23-Jan-2005 |
yar |
Reduce the global name space pollution. The cloner structure isn't referenced by name outside this file.
|
#
139823 |
|
06-Jan-2005 |
imp |
/* -> /*- for license, minor formatting changes
|
#
133741 |
|
15-Aug-2004 |
jmg |
Add locking to the kqueue subsystem. This also makes the kqueue subsystem a more complete subsystem, and removes the knowlege of how things are implemented from the drivers. Include locking around filter ops, so a module like aio will know when not to be unloaded if there are outstanding knotes using it's filter ops.
Currently, it uses the MTX_DUPOK even though it is not always safe to aquire duplicate locks. Witness currently doesn't support the ability to discover if a dup lock is ok (in some cases).
Reviewed by: green, rwatson (both earlier versions)
|
#
132659 |
|
26-Jul-2004 |
yar |
Stop tinkering with the parent's VLAN_MTU capability. Now it is user-controlled through ifconfig(8).
The former ``automagic'' way of operation created more trouble than good. First, VLAN_MTU consumers other than vlan(4) had appeared, e.g., ng_vlan(4). Second, there was no way to disable VLAN_MTU manually if it were causing trouble, e.g., data corruption.
Dropping the ``automagic'' should be completely invisible to the user since a) all the drivers supporting VLAN_MTU have it enabled by default, and in the first place b) there is only one driver that can really toggle VLAN_MTU in the hardware under its control (it's fxp(4), to which I added VLAN_MTU controls to illustrate the principle.)
|
#
132557 |
|
22-Jul-2004 |
brooks |
Actually free the unit when destroying the interface.
Reported by: la at delfi.lt Tested by: la at delfi.lt PR: 68618
|
#
132199 |
|
15-Jul-2004 |
phk |
Do a pass over all modules in the kernel and make them return EOPNOTSUPP for unknown events.
A number of modules return EINVAL in this instance, and I have left those alone for now and instead taught MOD_QUIESCE to accept this as "didn't do anything".
|
#
131586 |
|
04-Jul-2004 |
bms |
Workaround a locking problem in vlan(4). vlan_setmulti() may be called with sleepable locks held from further up in the network stack, and attempts to allocate memory to hold multicast group membership information with M_WAITOK.
This panic was triggered specifically when an exiting routing daemon process closes its raw sockets after joining multicast groups on them.
While we're here, comment some possible locking badness.
PR: kern/48560
|
#
131580 |
|
04-Jul-2004 |
bms |
style(9)/whitespace cleanup while I'm in this file.
|
#
131050 |
|
24-Jun-2004 |
joerg |
Add a couple of #ifdef DEBUG printf()s in vlan_input() I found to be useful when debugging the ether_demux() problem (when bridging over VLANs).
|
#
130933 |
|
22-Jun-2004 |
brooks |
Major overhaul of pseudo-interface cloning. Highlights include:
- Split the code out into if_clone.[ch]. - Locked struct if_clone. [1] - Add a per-cloner match function rather then simply matching names of the form <name><unit> and <name>. - Use the match function to allow creation of <interface>.<tag> vlan interfaces. The old way is preserved unchanged! - Also the match function to allow creation of stf(4) interfaces named stf0, stf, or 6to4. This is the only major user visible change in that "ifconfig stf" creates the interface stf rather then stf0 and does not print "stf0" to stdout. - Allow destroy functions to fail so they can refuse to delete interfaces. Currently, we forbid the deletion of interfaces which were created in the init function, particularly lo0, pflog0, and pfsync0. In the case of lo0 this was a panic implementation so it does not count as a user visiable change. :-) - Since most interfaces do not need the new functionality, an family of wrapper functions, ifc_simple_*(), were created to wrap old style cloner functions. - The IF_CLONE_INITIALIZER macro is replaced with a new incompatible IFC_CLONE_INITIALIZER and ifc_simple consumers use IFC_SIMPLE_DECLARE instead.
Submitted by: Maurycy Pawlowski-Wieronski <maurycy at fouk.org> [1] Reviewed by: andre, mlaier Discussed on: net
|
#
130549 |
|
15-Jun-2004 |
mlaier |
Replace IF_HANDOFF with new IFQ_HANDOFF to enqueue with ALTQ once enabled on the respective drivers.
|
#
129748 |
|
26-May-2004 |
yar |
if_printf() won't emit a newline unless told to.
|
#
129717 |
|
25-May-2004 |
yar |
After all the relevant drivers have been fixed, fix vlan(4) itself WRT manipulating capabilities of the parent interface:
- use ioctl(SIOCSIFCAP) to toggle VLAN_MTU (the way that was done before was just wrong);
- use the right order of conditional clauses to set the MTU fudge (that is logically independent from toggling VLAN_MTU.)
|
#
129637 |
|
23-May-2004 |
yar |
Consult parent's if_capenable for active VLAN-related capabilities. This change is possible since all the relevant drivers have been fixed to set if_capenable properly. The field if_capabilities tracks supported capabilities, which may be disabled administratively.
Inheriting checksum offload support from the parent interface isn't that easy because the checksumming capabilities of the parent may be toggled on the fly. Disable the code for now.
|
#
129539 |
|
21-May-2004 |
ru |
Added dependency on the miibus module.
|
#
128907 |
|
04-May-2004 |
scottl |
Add route.h to pick up the rt_ifmsg() declaration.
|
#
128871 |
|
03-May-2004 |
andre |
Link state change notification of ethernet media to the routing socket.
o Extend the if_data structure with an ifi_link_state field and provide the corresponding defines for the valid states.
o The mii_linkchg() callback updates the ifi_link_state field and calls rt_ifmsg() to notify listeners on the routing socket in addition to the kqueue KNOTE.
o If vlans are configured on a physical interface notify and update all vlan pseudo devices as well with the vlan_link_state() callback.
No objections by: sam, wpaul, ru, bms Brucification by: bde
|
#
128618 |
|
24-Apr-2004 |
luigi |
arpcom untangling:
consistently with the rest of the code, use IFP2AC(ifp) to access the arpcom structure given the ifp.
In this case also fix a difference in assumptions WRT the rest of the net/ sources: it is not the 'struct *softc' that starts with a 'struct arpcom', but a 'struct arpcom' that starts with a 'struct ifnet'
|
#
124096 |
|
03-Jan-2004 |
sam |
backout the switch to use a zone for vlan tags; this requires vlans be present if any driver with h/w vlan tagging is configured
|
#
124078 |
|
02-Jan-2004 |
sam |
switch vlan packet tag allocation to use a private zone
|
#
122555 |
|
12-Nov-2003 |
ru |
- vlan_start(): Increment the correct interface statistics member.
Reviewed by: mdodd
- vlan_input(): Macroize the VLAN tag extraction from mbuf.
|
#
121816 |
|
31-Oct-2003 |
brooks |
Replace the if_name and if_unit members of struct ifnet with new members if_xname, if_dname, and if_dunit. if_xname is the name of the interface and if_dname/unit are the driver name and instance.
This change paves the way for interface renaming and enhanced pseudo device creation and configuration symantics.
Approved By: re (in principle) Reviewed By: njl, imp Tested On: i386, amd64, sparc64 Obtained From: NetBSD (if_xname)
|
#
121637 |
|
28-Oct-2003 |
brooks |
Use VLANNAME instead of "vlan".
|
#
119780 |
|
05-Sep-2003 |
sam |
Add locking. We use a single lock to guard the global vlan list and also to protect the vlan state in each ifnet (e.g. vlan count). The latter is probably better handled through an ifnet-centric means but since changes are infrequent shouldn't matter for now.
Sponsored by: FreeBSD Foundation
|
#
117343 |
|
08-Jul-2003 |
wpaul |
- In vlan_input(), always mask off all but the VLID bits from tags 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
|
#
117273 |
|
06-Jul-2003 |
wpaul |
Testing VLANs with the new 8139C+ chip (which does hardware tag insertion and extraction) has revealed two bugs:
- In vlan_start(), we're supposed to check the underlying interface to see if it has the IFCAP_VLAN_HWTAGGING cabability set and, if so, set things up for the VLAN_OUTPUT_TAG() routine. However the code checks ifp->if_capabilities, which is the vlan pseudo-interface's capabilities when it should be checking p->if_capabilities, which relates to the underlying physical interface. Change ifp->if_capabilities to p->if_capabilities so this works.
- In vlan_input(), we have to extract the 16-bit tag value from the received frame and use it to figure out which vlan interface gets the frame. The code that we use to track down the desired vlan pseudo-interface is:
for (ifv = LIST_FIRST(&ifv_list); ifv != NULL; ifv = LIST_NEXT(ifv, ifv_list)) if (ifp == ifv->ifv_p && tag == ifv->ifv_tag) break;
The problem is that 'tag' is not computed consistently. In the case where the interface supports hardware VLAN tag extraction and calls VLAN_INPUT_TAG(), we do this:
tag = *(u_int*)(mtag+1);
But in the software emulation case, we do this
tag = EVL_VLANOFTAG(ntohs(evl->evl_tag));
The problem here is the EVL_VLANOFTAG() macro is only ever applied in this one case. It's never applied to ifv->ifv_tag or anwhere else. We must be consistent: either it's applied everywhere or nowhere. To see how this can be a problem, do something like ifconfig vlan0 vlan 12345 vlandev foo0 and observe the results.
I'm not quite sure what the right thing is to do here. Neither the vlan(4) nor ifconfig(8) man pages suggest which way to go. For now, I've removed this use of EVL_VLANOFTAG() so that the tag will match correctly in all cases. I will not get upset if somebody makes a compelling argument for using EVL_VLANOFTAG() everywhere instead, as long as the use is consistent.
|
#
112148 |
|
12-Mar-2003 |
sam |
correct two more flag misuses; m_tag* use malloc flags
|
#
111790 |
|
03-Mar-2003 |
mdodd |
sizeof(struct llc) -> LLC_SNAPFRAMELEN sizeof(struct ether_header) -> ETHER_HDR_LEN sizeof(struct fddi_header) -> FDDI_HDR_LEN
|
#
111119 |
|
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
#
109711 |
|
22-Jan-2003 |
fenner |
Implement SIOCGIFMEDIA for vlan devices by passing the request to the parent device, if there is a parent configured. Modify the result returned by the parent to indicate that the only supported media is the currently configured one.
Reviewed by: brooks
|
#
109623 |
|
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
#
106932 |
|
14-Nov-2002 |
sam |
o eliminate separate callback interface for h/w tagged input packets; instead 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
|
#
106601 |
|
07-Nov-2002 |
jhb |
Add a cast to quiet a warning.
|
#
105602 |
|
21-Oct-2002 |
brooks |
Use if_printf(ifp, "blah") instead of printf("vlan%d: blah", ifp->if_unit).
|
#
97289 |
|
25-May-2002 |
brooks |
Move all unit number management cloned interfaces into the cloning code. The reverts the API change which made the <if>_clone_destory() functions return an int instead of void bringing us into closer alignment with NetBSD.
Reviewed by: net (a long time ago)
|
#
93748 |
|
04-Apr-2002 |
luigi |
Fix a couple of incorrect m_free() vs. m_freem() usages and related issues.
Reviewed-by: brooks
|
#
92081 |
|
11-Mar-2002 |
mux |
Simplify the interface cloning framework by handling unit 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
|
#
91647 |
|
04-Mar-2002 |
brooks |
Change the network interface cloning API so the destroy function returns an int errorcode instead of void in preperation for merging cloning of the loopback device.
Submitted by: mux MFC after: 2 weeks
|
#
91272 |
|
26-Feb-2002 |
brooks |
When using hardware decoding, reconstruct the wire form of the ethernet header and push it up any attached bpf devices on the parent interface. This makes hardware vlan decoding more like the normal software path.
Tested by: cjtt@employees.org MFC after: 2 weeks
|
#
86749 |
|
21-Nov-2001 |
arr |
- Utilize the great M_ZERO flag rather than allocating memory then do a call to memset.
|
#
85005 |
|
15-Oct-2001 |
fenner |
Set the interface speed back to zero, after ether_ifattach() set it to 10Mbps. RFC 2863 says: "For a sub-layer which has no concept of bandwidth, [ifSpeed] should be zero."
|
#
84931 |
|
14-Oct-2001 |
fjoe |
bring in ARP support for variable length link level addresses
Reviewed by: jdp Approved by: jdp Obtained from: NetBSD MFC after: 6 weeks
|
#
84576 |
|
06-Oct-2001 |
fenner |
- Fix typo in "didn't find tag in list" code -- != should have been ==. This fixes the panic when receiving a packet with an unknown tag, and also allows reception of packets with known tags. - Allow overlapping tag number spaces when using multiple hardware-assisted VLAN parent devices (by comparing the parent interface in vlan_input_tag() just as in vlan_input() ). - fix typo in comment
MFC after: 1 week
|
#
83130 |
|
06-Sep-2001 |
jlemon |
Wrap array accesses in macros, which also happen to be lvalues:
ifnet_addrs[i - 1] -> ifaddr_byindex(i) ifindex2ifnet[i] -> ifnet_byindex(i)
This is intended to ease the conversion to SMPng.
|
#
83115 |
|
05-Sep-2001 |
brooks |
Make vlan(4) loadable, unloadable, and clonable. As a side effect, interfaces must now always enable VLAN support.
Reviewed by: jlemon MFC after: 3 weeks
|
#
80296 |
|
24-Jul-2001 |
fenner |
Eliminate the panic, reported by Daniel Sobral, which occurs when vlan_unconfig()-ing an interface on which multicast groups have been joined. Instead, keep the list of groups around (and, in fact, allow changing of the membership list) and re-join them when the vlan interface is reassociated with a lower level interface.
|
#
80238 |
|
23-Jul-2001 |
fenner |
Use the IANA assignment IFT_L2VLAN directly instead of indirecting through a privately #defined IFT_8021_VLAN.
MFC after: 3 days
|
#
78251 |
|
15-Jun-2001 |
peter |
Fix warning. s/char/unsigned char/ in "(char *)eth" 294: warning: ethernet address is not type unsigned char *
|
#
76213 |
|
02-May-2001 |
fenner |
Get IP multicast working on VLAN devices:
- Allocate zeroed memory in ether_resolvemulti() to prevent equal() from comparing garbage and determining that two otherwise-equal sockaddr_dls are different. - Fill in all required fields of the sockaddr_dl - Actually copy the multicast address into the sockaddr_dl when calling if_addmulti() - Don't claim that we don't have a way to resolve layer 3 addresses into layer 2 addresses; use the ethernet way.
|
#
74943 |
|
28-Mar-2001 |
yar |
Fix a number of minor bugs in the VLAN code:
* Initialize the "struct sockaddr_dl sdl" correctly in vlan_setmulti().
PR: kern/22181
* The driver used to call malloc(..., M_NOWAIT), but to not check the return value. Change malloc(..., M_NOWAIT) to malloc(..., M_WAITOK) because the corresponding part of code is called from the upper half of the kernel only.
PR: kern/22181
* Make sure a parent interface is up and running before invoking its if_start() routine in order to avoid system panic.
PR: kern/22179 kern/24741 i386/25478
* Do not copy all the flags from a parent mindlessly.
PR: kern/22179
* Do not call if_down() on a parent interface if it's already down. Call if_down() at splimp because if_down() needs that.
PR: kern/22179
Reviewed by: wollman
|
#
72484 |
|
14-Feb-2001 |
asmodai |
Fix another typo I missed on first reading: insersion -> insertion
|
#
72482 |
|
14-Feb-2001 |
asmodai |
Fix typo and comma placement.
|
#
72084 |
|
06-Feb-2001 |
phk |
Convert if_multiaddrs from LIST to TAILQ so that it can be traversed backwards in the three drivers which want to do that.
Reviewed by: mikeh
|
#
71999 |
|
04-Feb-2001 |
phk |
Mechanical change to use <sys/queue.h> macro API instead of fondling implementation details.
Created with: sed(1) Reviewed by: md5(1)
|
#
71959 |
|
03-Feb-2001 |
phk |
Use <sys/queue.h> macro api rather than fondle its implementation detals.
Created with: /usr/bin/sed Reviewed by: /sbin/md5
|
#
71862 |
|
31-Jan-2001 |
peter |
Exterminate the use of PSEUDO_SET() with extreme prejudice.
|
#
69152 |
|
25-Nov-2000 |
jlemon |
Lock down the network interface queues. The queue mutex must be obtained before adding/removing packets from the queue. Also, the if_obytes and if_omcasts fields should only be manipulated under protection of the mutex.
IF_ENQUEUE, IF_PREPEND, and IF_DEQUEUE perform all necessary locking on the queue. An IF_LOCK macro is provided, as well as the old (mutex-less) versions of the macros in the form _IF_ENQUEUE, _IF_QFULL, for code which needs them, but their use is discouraged.
Two new macros are introduced: IF_DRAIN() to drain a queue, and IF_HANDOFF, which takes care of locking/enqueue, and also statistics updating/start if necessary.
|
#
63090 |
|
13-Jul-2000 |
archie |
Make all Ethernet drivers attach using ether_ifattach() and detach using ether_ifdetach().
The former consolidates the operations of if_attach(), ng_ether_attach(), and bpfattach(). The latter consolidates the corresponding detach operations.
Reviewed by: julian, freebsd-net
|
#
60536 |
|
14-May-2000 |
archie |
Move code to handle BPF and bridging for incoming Ethernet packets out of the individual drivers and into the common routine ether_input(). Also, remove the (incomplete) hack for matching ethernet headers in the ip_fw code.
The good news: net result of 1016 lines removed, and this should make bridging now work with *all* Ethernet drivers.
The bad news: it's nearly impossible to test every driver, especially for bridging, and I was unable to get much testing help on the mailing lists.
Reviewed by: freebsd-net
|
#
58635 |
|
26-Mar-2000 |
charnier |
Remove duplicate word
|
#
57020 |
|
07-Feb-2000 |
mdodd |
m_pullup() frees the supplied mbuf on failure; we don't need to try and do this ourselves.
Approved by: jkh Noticed by: Mike Spengler <mks@networkcs.com>
|
#
56970 |
|
03-Feb-2000 |
mdodd |
Make sure that the entire header is in the first mbuf before we attempt to copy the ethernet header forward and otherwise encapsulate a packet for output.
This fixes the panic when using VLAN devices on hardware that doesn't do 802.1Q tagging onboard. (That is to say, all drivers except the Tigon.)
My tests consisted of telnet, ttcp, and a pingflood of packets between 1 and 1600 (plus headers) bytes.
MFC to follow in 1 week.
Approved by: jkh
|
#
56856 |
|
29-Jan-2000 |
peter |
Remove some #if NFOO > 0 that are always true because of config rules.
|
#
54531 |
|
12-Dec-1999 |
jkh |
The current code incorrectly assumes that all vlans 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
|
#
54530 |
|
12-Dec-1999 |
jkh |
sys/net/if_vlan.c fails to maintain the IFF_RUNNING flag on the vlan interfaces it manages. This prevents the interface from actually sending or receiving data.
Submitted by: C. Stephen Gunn <csg@waterspout.com> PR: 15290
|
#
51646 |
|
25-Sep-1999 |
phk |
Remove NBPF conditionality of bpf calls in most of our network drivers.
This means that we will not have to have a bpf and a non-bpf version of our driver modules.
This does not open any security hole, because the bpf core isn't loadable
The drivers left unchanged are the "cross platform" drivers where the respective maintainers are urged to DTRT, whatever that may be.
Add a couple of missing FreeBSD tags.
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
48645 |
|
06-Jul-1999 |
des |
Rename bpfilter to bpf.
|
#
45451 |
|
07-Apr-1999 |
wpaul |
Add missing SYSCTL_DECL(_net_link); required by newer sysctl implementation.
Noticed by: Matthew Dodd <winter@jurai.net>
|
#
44764 |
|
14-Mar-1999 |
wpaul |
Grrr... botched remote commit. Let's try this again: vlan updates, take two.
|
#
44763 |
|
14-Mar-1999 |
wpaul |
Updates for vlan stuff:
- add support for devices that do vlan tag insertion/deletion in firmware - add multicast support - add vlan_unconfig() to complement vlan_config() - update ifconfig(8) to configure vlan interfaces (vlan tag and parent device)
Also fix a small bug in ifconfig; sometimes sa_family is overwritten by ioctls.
Reviewed by: wollman
|
#
41514 |
|
04-Dec-1998 |
archie |
Examine all occurrences of sprintf(), strcat(), and str[n]cpy() for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc.
These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer.
Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
|
#
38482 |
|
23-Aug-1998 |
wollman |
Yow! Completely change the way socket options are handled, eliminating another specialized mbuf type in the process. Also clean up some of the cruft surrounding IPFW, multicast routing, RSVP, and other ill-explored corners.
|
#
36078 |
|
15-May-1998 |
wollman |
Fix an obvious parameter-order bogon. (Don't know what happened to the warning message before.)
|
#
34649 |
|
17-Mar-1998 |
wollman |
Add preliminary support for IEEE 802.1Q VLAN tagging. It doesn't actually 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.
|