| History log of /src/sys/net/if_faith.c |
| Revision | | Date | Author | Comments |
| 1.64 |
| 07-Sep-2024 |
andvar | spelling and grammar fixes, mainly in comments.
|
| 1.63 |
| 03-Sep-2022 |
thorpej | Garbage-collect the remaining vestiges of netisr.
|
| 1.62 |
| 16-Jun-2021 |
riastradh | if_attach and if_initialize cannot fail, don't test return value
These were originally made failable back in 2017 when if_initialize allocated a softint in every interface for link state changes, so that it could fail gracefully instead of panicking:
https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html
However, this spawned many seldom- or never-tested error branches, which are risky to have around. And that softint in every interface has since been replaced by a single global workqueue, because link state changes require thread context but not low latency or high throughput:
https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html
So there is no longer any reason for if_initialize to fail. (The subroutine if_stats_init can't fail because percpu_alloc can't fail either.)
There is a snag: the softint_establish in if_percpuq_create could fail, potentially leading to bad consequences later on trying to use the softint. This change doesn't introduce any new bugs because of the snag -- if_percpuq_attach was already broken. However, the snag can be better addressed without spawning error branches, either by using a single softint or making softints less scarce.
(Separate commit will change the signatures of if_attach and if_initialize to return void, scheduled to ride whatever is the next convenient kernel bump.)
Patch and testing on amd64 and evbmips64-eb by maya@; commit message soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.
|
| 1.61 |
| 29-Jan-2020 |
thorpej | branches: 1.61.10; Adopt <net/if_stats.h>.
|
| 1.60 |
| 27-Apr-2019 |
pgoyette | branches: 1.60.4; A few more empty-string --> NULL in required-modules lists
|
| 1.59 |
| 26-Jun-2018 |
msaitoh | branches: 1.59.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
| 1.58 |
| 01-May-2018 |
maxv | Remove now unused net_osdep.h includes, the other BSDs did the same.
|
| 1.57 |
| 06-Dec-2017 |
ozaki-r | branches: 1.57.2; Ensure to not turn on IFF_RUNNING of an interface until its initialization completes
And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.)
|
| 1.56 |
| 23-Oct-2017 |
msaitoh | If if_attach() failed in the attach function, free resources and return.
|
| 1.55 |
| 12-Dec-2016 |
ozaki-r | branches: 1.55.8; Make the routing table and rtcaches MP-safe
See the following descriptions for details.
Proposed on tech-kern and tech-net
Overview
|
| 1.54 |
| 07-Aug-2016 |
christos | modularize some more drivers and merge the module glue
|
| 1.53 |
| 10-Jun-2016 |
ozaki-r | branches: 1.53.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
| 1.52 |
| 28-Apr-2016 |
ozaki-r | Constify rtentry of if_output
We no longer need to change rtentry below if_output.
The change makes it clear where rtentries are changed (or not) and helps forthcoming locking (os psrefing) rtentries.
|
| 1.51 |
| 20-Aug-2015 |
christos | include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
| 1.50 |
| 29-Jul-2014 |
ozaki-r | branches: 1.50.4; Use if_free instead of free
|
| 1.49 |
| 06-Jun-2014 |
rmind | - Eliminate RTFREE() macro in favour of rtfree() function. - Make rtcache() function static.
|
| 1.48 |
| 05-Jun-2014 |
rmind | - Implement pktqueue interface for lockless IP input queue. - Replace ipintrq and ip6intrq with the pktqueue mechanism. - Eliminate kernel-lock from ipintr() and ip6intr(). - Some preparation work to push softnet_lock out of ipintr().
Discussed on tech-net.
|
| 1.47 |
| 05-Apr-2010 |
joerg | branches: 1.47.18; 1.47.32; Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf check into the inline functions as well the fourth argument for bpf_attach.
|
| 1.46 |
| 19-Jan-2010 |
pooka | branches: 1.46.2; 1.46.4; Redefine bpf linkage through an always present op vector, i.e. #if NBPFILTER is no longer required in the client. This change doesn't yet add support for loading bpf as a module, since drivers can register before bpf is attached. However, callers of bpf can now be modularized.
Dynamically loadable bpf could probably be done fairly easily with coordination from the stub driver and the real driver by registering attachments in the stub before the real driver is loaded and doing a handoff. ... and I'm not going to ponder the depths of unload here.
Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
|
| 1.45 |
| 07-Nov-2008 |
dyoung | *** Summary ***
When a link-layer address changes (e.g., ifconfig ex0 link 02:de:ad:be:ef:02 active), send a gratuitous ARP and/or a Neighbor Advertisement to update the network-/link-layer address bindings on our LAN peers.
Refuse a change of ethernet address to the address 00:00:00:00:00:00 or to any multicast/broadcast address. (Thanks matt@.)
Reorder ifnet ioctl operations so that driver ioctls may inherit the functions of their "class"---ether_ioctl(), fddi_ioctl(), et cetera---and the class ioctls may inherit from the generic ioctl, ifioctl_common(), but both driver- and class-ioctls may override the generic behavior. Make network drivers share more code.
Distinguish a "factory" link-layer address from others for the purposes of both protecting that address from deletion and computing EUI64.
Return consistent, appropriate error codes from network drivers.
Improve readability. KNF.
*** Details ***
In if_attach(), always initialize the interface ioctl routine, ifnet->if_ioctl, if the driver has not already initialized it. Delete if_ioctl == NULL tests everywhere else, because it cannot happen.
In the ioctl routines of network interfaces, inherit common ioctl behaviors by calling either ifioctl_common() or whichever ioctl routine is appropriate for the class of interface---e.g., ether_ioctl() for ethernets.
Stop (ab)using SIOCSIFADDR and start to use SIOCINITIFADDR. In the user->kernel interface, SIOCSIFADDR's argument was an ifreq, but on the protocol->ifnet interface, SIOCSIFADDR's argument was an ifaddr. That was confusing, and it would work against me as I make it possible for a network interface to overload most ioctls. On the protocol->ifnet interface, replace SIOCSIFADDR with SIOCINITIFADDR. In ifioctl(), return EPERM if userland tries to invoke SIOCINITIFADDR.
In ifioctl(), give the interface the first shot at handling most interface ioctls, and give the protocol the second shot, instead of the other way around. Finally, let compatibility code (COMPAT_OSOCK) take a shot.
Pull device initialization out of switch statements under SIOCINITIFADDR. For example, pull ..._init() out of any switch statement that looks like this:
switch (...->sa_family) { case ...: ..._init(); ... break; ... default: ..._init(); ... break; }
Rewrite many if-else clauses that handle all permutations of IFF_UP and IFF_RUNNING to use a switch statement,
switch (x & (IFF_UP|IFF_RUNNING)) { case 0: ... break; case IFF_RUNNING: ... break; case IFF_UP: ... break; case IFF_UP|IFF_RUNNING: ... break; }
unifdef lots of code containing #ifdef FreeBSD, #ifdef NetBSD, and #ifdef SIOCSIFMTU, especially in fwip(4) and in ndis(4).
In ipw(4), remove an if_set_sadl() call that is out of place.
In nfe(4), reuse the jumbo MTU logic in ether_ioctl().
Let ethernets register a callback for setting h/w state such as promiscuous mode and the multicast filter in accord with a change in the if_flags: ether_set_ifflags_cb() registers a callback that returns ENETRESET if the caller should reset the ethernet by calling if_init(), 0 on success, != 0 on failure. Pull common code from ex(4), gem(4), nfe(4), sip(4), tlp(4), vge(4) into ether_ioctl(), and register if_flags callbacks for those drivers.
Return ENOTTY instead of EINVAL for inappropriate ioctls. In zyd(4), use ENXIO instead of ENOTTY to indicate that the device is not any longer attached.
Add to if_set_sadl() a boolean 'factory' argument that indicates whether a link-layer address was assigned by the factory or some other source. In a comment, recommend using the factory address for generating an EUI64, and update in6_get_hw_ifid() to prefer a factory address to any other link-layer address.
Add a routing message, RTM_LLINFO_UPD, that tells protocols to update the binding of network-layer addresses to link-layer addresses. Implement this message in IPv4 and IPv6 by sending a gratuitous ARP or a neighbor advertisement, respectively. Generate RTM_LLINFO_UPD messages on a change of an interface's link-layer address.
In ether_ioctl(), do not let SIOCALIFADDR set a link-layer address that is broadcast/multicast or equal to 00:00:00:00:00:00.
Make ether_ioctl() call ifioctl_common() to handle ioctls that it does not understand.
In gif(4), initialize if_softc and use it, instead of assuming that the gif_softc and ifp overlap.
Let ifioctl_common() handle SIOCGIFADDR.
Sprinkle rtcache_invariants(), which checks on DIAGNOSTIC kernels that certain invariants on a struct route are satisfied.
In agr(4), rewrite agr_ioctl_filter() to be a bit more explicit about the ioctls that we do not allow on an agr(4) member interface.
bzero -> memset. Delete unnecessary casts to void *. Use sockaddr_in_init() and sockaddr_in6_init(). Compare pointers with NULL instead of "testing truth". Replace some instances of (type *)0 with NULL. Change some K&R prototypes to ANSI C, and join lines.
|
| 1.44 |
| 24-Oct-2008 |
dyoung | branches: 1.44.2; Constify the rt_addrinfo argument to the ifa_rtrequest member function of struct ifaddr.
|
| 1.43 |
| 15-Jun-2008 |
christos | branches: 1.43.2; that should read if_alloc.
|
| 1.42 |
| 15-Jun-2008 |
christos | - add if_alloc (ours just mallocs), and if_initname and use them (from FreeBSD) - kill memsets where M_ZERO can be used.
|
| 1.41 |
| 07-Feb-2008 |
dyoung | branches: 1.41.6; 1.41.8; 1.41.10; 1.41.12; 1.41.14; Start patching up the kernel so that a network driver always has the opportunity to handle an ioctl before generic ifioctl handling occurs. This will ease extending the kernel and sharing of code between drivers.
First steps: Make the signature of ifioctl_common() match struct ifinet->if_ioctl. Convert SIOCSIFCAP and SIOCSIFMTU to the new ifioctl() regime, throughout the kernel.
|
| 1.40 |
| 19-Oct-2007 |
ad | branches: 1.40.2; machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
|
| 1.39 |
| 04-Mar-2007 |
christos | branches: 1.39.2; 1.39.14; 1.39.16; 1.39.20; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
| 1.38 |
| 17-Feb-2007 |
dyoung | KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
| 1.37 |
| 16-Nov-2006 |
christos | branches: 1.37.4; __unused removal on arguments; approved by core.
|
| 1.36 |
| 12-Oct-2006 |
christos | - sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
| 1.35 |
| 09-Oct-2006 |
peter | Remove unneeded usage of LIST_*.
ok cube@
|
| 1.34 |
| 31-Jan-2006 |
rpaulo | branches: 1.34.18; 1.34.20; Replace the comment that came from if_loop.c many years ago by something that matches reality.
|
| 1.33 |
| 31-Jan-2006 |
christos | PR/32676: Yves-Emmanuel JUTARD: faithprefix should only be defined with INET6
|
| 1.32 |
| 11-Dec-2005 |
thorpej | branches: 1.32.2; ANSI function decls and application of static.
|
| 1.31 |
| 11-Dec-2005 |
christos | merge ktrace-lwp.
|
| 1.30 |
| 04-Dec-2004 |
peter | branches: 1.30.12; Change ifc_destroy to return an int instead of void, so that it can pass back errors to ifconfig.
|
| 1.29 |
| 20-Aug-2004 |
enami | Fix compilation error introduced by prevoius commit.
|
| 1.28 |
| 19-Aug-2004 |
christos | Factor out the hand-crafting of mbufs from the interface files. Reviewed by gimpy. XXX: I could have used bpf_mtap2 on some of the new functions, but I chose not to, because I just wanted to do what amounts to a code move.
|
| 1.27 |
| 21-Apr-2004 |
itojun | kill sprintf, use snprintf
|
| 1.26 |
| 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
| 1.25 |
| 04-Jun-2002 |
itojun | branches: 1.25.6; no need to set rmx_send/recvpipe.
|
| 1.24 |
| 15-Nov-2001 |
thorpej | branches: 1.24.8; Someone <sys/param.h> was deleted from the includes list. Add it back so that this file compiles again.
|
| 1.23 |
| 13-Nov-2001 |
lukem | remove unnecessary #if NFOO > 0 .... #endif wrappers
|
| 1.22 |
| 12-Nov-2001 |
lukem | add RCSIDs
|
| 1.21 |
| 18-Jul-2001 |
thorpej | bzero -> memset
|
| 1.20 |
| 08-May-2001 |
itojun | branches: 1.20.2; remove #ifdef for freebsd
|
| 1.19 |
| 08-May-2001 |
itojun | correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix() to determine. sync with kame. (without this change, non-faith socket may mistakenly accept for-faith traffic)
|
| 1.18 |
| 13-Apr-2001 |
thorpej | Remove the use of splimp() from the NetBSD kernel. splnet() and only splnet() is allowed for the protection of data structures used by network devices.
|
| 1.17 |
| 20-Feb-2001 |
itojun | branches: 1.17.2; explicitly use u_int32_t for DLT_NULL encapsulation.
correct gif address family. from chopps, sync with kame.
|
| 1.16 |
| 17-Jan-2001 |
itojun | pull post-4.4BSD change to sys/net/route.c from BSD/OS 4.2 (UCB copyrighted).
have sys/net/route.c:rtrequest1(), which takes rt_addrinfo * as the argument. pass rt_addrinfo all the way down to rtrequest, and ifa->ifa_rtrequest. 3rd arg of ifa->ifa_rtrequest is now rt_addrinfo * instead of sockaddr * (almost noone is using it anyways).
benefit: the follwoing command now works. previously we need two route(8) invocations, "add" then "change". # route add -inet6 default ::1 -ifp gif0
remove unsafe typecast in rtrequest(), from rtentry * to sockaddr *. it was introduced by 4.3BSD-reno and never corrected.
XXX is eon_rtrequest() change correct regarding to 3rd arg? eon_rtrequest() and rtrequest() were incorrect since 4.3BSD-reno, so i do not have correct answer in the source code. someone with more clue about netiso-over-ip, please help.
|
| 1.15 |
| 17-Jan-2001 |
thorpej | Fix a rather annoying problem where the sockaddr_dl which holds the link level name for the interface (ifp->if_sadl) is allocated before ifp->if_addrlen is initialized, which could lead to allocating too little space for the link level address.
Do this by splitting allocation of the link level name out of if_attach() and into if_alloc_sadl(), which is normally called by functions like ether_ifattach(). Network interfaces which don't have a link-specific attach routine must call if_alloc_sadl() themselves (example: gif).
Link level names are freed by if_free_sadl(), which can be called from e.g. ether_ifdetach(). Drivers never need call if_free_sadl() themselves as if_detach() will do it if it is not already done.
While here, add the ability to pass an AF_LINK address to SIOCSIFADDR in ether_ioctl() (this is what caused me to notice the problem that the above fixes).
|
| 1.14 |
| 18-Dec-2000 |
thorpej | Fill in if_dlt.
|
| 1.13 |
| 12-Dec-2000 |
thorpej | Adapt to bpfattach() changes, and further centralize the bpfattach() and bpfdetach() calls into link-type subroutines where possible.
|
| 1.12 |
| 04-Jul-2000 |
thorpej | faith(4) is now a cloning pseudo-device.
|
| 1.11 |
| 30-Mar-2000 |
augustss | branches: 1.11.4; Kill some more register declarations.
|
| 1.10 |
| 06-Feb-2000 |
itojun | fix include pathname for better rfc2292 compliance.
|
| 1.9 |
| 06-Jan-2000 |
itojun | remove extra portability #ifdef (like #ifdef __FreeBSD__) in KAME IPv6/IPsec code, from netbsd-current repository. #ifdef'ed version is always available from ftp.kame.net.
XXX please do not make too many diff-unfriendly changes, we'll need to take bunch of diffs on upgrade...
|
| 1.8 |
| 22-Dec-1999 |
itojun | fix compilation on sun3x. From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
|
| 1.7 |
| 13-Dec-1999 |
itojun | sync IPv6 part with latest KAME tree. IPsec part is left unmodified due to massive changes in KAME side. - IPv6 output goes through nd6_output - faith can capture IPv4 packets as well - you can run IPv4-to-IPv6 translator using heavily modified DNS servers - per-interface statistics (required for IPv6 MIB) - interface autoconfig is revisited - udp input handling has a big change for mapped address support. - introduce in4_cksum() for non-overwriting checksumming - introduce m_pulldown() - neighbor discovery cleanups/improvements - netinet/in.h strictly conforms to RFC2553 (no extra defs visible to userland) - IFA_STATS is fixed a bit (not tested) - and more more more.
TODO: - cleanup os-independency #ifdef - avoid rcvif dual use (for IPsec) to help ifdetach
(sorry for jumbo commit, I can't separate this any more...)
|
| 1.6 |
| 02-Dec-1999 |
itojun | rcsid police
|
| 1.5 |
| 27-Oct-1999 |
itojun | avoid unnecessary file inclusion.
|
| 1.4 |
| 12-Jul-1999 |
bouyer | branches: 1.4.2; 1.4.4; 1.4.6; Needs cpu.h for netisr (compile breaks on sun3).
|
| 1.3 |
| 09-Jul-1999 |
thorpej | defopt INET6, and put it in opt_inet.h (most places already include this file, which is why the file list is so short).
|
| 1.2 |
| 01-Jul-1999 |
itojun | branches: 1.2.2; IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details.
- sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen
In my understanding no code here is subject to export control so it should be safe.
|
| 1.1 |
| 28-Jun-1999 |
itojun | branches: 1.1.2; file if_faith.c was initially added on branch kame.
|
| 1.1.2.2 |
| 30-Nov-1999 |
itojun | bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch just for reference purposes. This commit includes 1.4 -> 1.4.1 sync for kame branch.
The branch does not compile at all (due to the lack of ALTQ and some other source code). Please do not try to modify the branch, this is just for referenre purposes.
synchronization to latest KAME will take place on HEAD branch soon.
|
| 1.1.2.1 |
| 28-Jun-1999 |
itojun | KAME/NetBSD 1.4 SNAP kit, dated 19990628.
NOTE: this branch (kame) is used just for refernce. this may not compile due to multiple reasons.
|
| 1.2.2.3 |
| 02-Aug-1999 |
thorpej | Update from trunk.
|
| 1.2.2.2 |
| 01-Jul-1999 |
thorpej | Sync w/ -current.
|
| 1.2.2.1 |
| 01-Jul-1999 |
thorpej | file if_faith.c was added on branch chs-ubc2 on 1999-07-01 23:45:19 +0000
|
| 1.4.6.1 |
| 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
| 1.4.4.1 |
| 15-Nov-1999 |
fvdl | Sync with -current
|
| 1.4.2.6 |
| 21-Apr-2001 |
bouyer | Sync with HEAD
|
| 1.4.2.5 |
| 12-Mar-2001 |
bouyer | Sync with HEAD.
|
| 1.4.2.4 |
| 18-Jan-2001 |
bouyer | Sync with head (for UBC+NFS fixes, mostly).
|
| 1.4.2.3 |
| 05-Jan-2001 |
bouyer | Sync with HEAD
|
| 1.4.2.2 |
| 13-Dec-2000 |
bouyer | Sync with HEAD (for UBC fixes).
|
| 1.4.2.1 |
| 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
| 1.11.4.1 |
| 09-May-2001 |
he | Pull up revision 1.19 (requested by itojun): Correct faith prefix determintaion.
|
| 1.17.2.5 |
| 20-Jun-2002 |
nathanw | Catch up to -current.
|
| 1.17.2.4 |
| 15-Nov-2001 |
thorpej | Merge from -trunk; compilation fix.
|
| 1.17.2.3 |
| 14-Nov-2001 |
nathanw | Catch up to -current.
|
| 1.17.2.2 |
| 24-Aug-2001 |
nathanw | Catch up with -current.
|
| 1.17.2.1 |
| 21-Jun-2001 |
nathanw | Catch up to -current.
|
| 1.20.2.3 |
| 23-Jun-2002 |
jdolecek | catch up with -current on kqueue branch
|
| 1.20.2.2 |
| 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
| 1.20.2.1 |
| 03-Aug-2001 |
lukem | update to -current
|
| 1.24.8.1 |
| 20-Jun-2002 |
gehenna | catch up with -current.
|
| 1.25.6.5 |
| 18-Dec-2004 |
skrll | Sync with HEAD.
|
| 1.25.6.4 |
| 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
| 1.25.6.3 |
| 18-Sep-2004 |
skrll | Sync with HEAD.
|
| 1.25.6.2 |
| 25-Aug-2004 |
skrll | Sync with HEAD.
|
| 1.25.6.1 |
| 03-Aug-2004 |
skrll | Sync with HEAD
|
| 1.30.12.6 |
| 11-Feb-2008 |
yamt | sync with head.
|
| 1.30.12.5 |
| 27-Oct-2007 |
yamt | sync with head.
|
| 1.30.12.4 |
| 03-Sep-2007 |
yamt | sync with head.
|
| 1.30.12.3 |
| 26-Feb-2007 |
yamt | sync with head.
|
| 1.30.12.2 |
| 30-Dec-2006 |
yamt | sync with head.
|
| 1.30.12.1 |
| 21-Jun-2006 |
yamt | sync with head.
|
| 1.32.2.1 |
| 01-Feb-2006 |
yamt | sync with head.
|
| 1.34.20.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
| 1.34.20.1 |
| 22-Oct-2006 |
yamt | sync with head
|
| 1.34.18.1 |
| 18-Nov-2006 |
ad | Sync with head.
|
| 1.37.4.2 |
| 12-Mar-2007 |
rmind | Sync with HEAD.
|
| 1.37.4.1 |
| 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
| 1.39.20.1 |
| 25-Oct-2007 |
bouyer | Sync with HEAD.
|
| 1.39.16.2 |
| 23-Mar-2008 |
matt | sync with HEAD
|
| 1.39.16.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
| 1.39.14.1 |
| 26-Oct-2007 |
joerg | Sync with HEAD.
Follow the merge of pmap.c on i386 and amd64 and move pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup code to restore CR4 before jumping back into kernel space as the large page option might cover that.
|
| 1.39.2.1 |
| 23-Oct-2007 |
ad | Sync with head.
|
| 1.40.2.1 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.41.14.1 |
| 18-Jun-2008 |
simonb | Sync with head.
|
| 1.41.12.1 |
| 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
| 1.41.10.3 |
| 11-Aug-2010 |
yamt | sync with head.
|
| 1.41.10.2 |
| 11-Mar-2010 |
yamt | sync with head
|
| 1.41.10.1 |
| 04-May-2009 |
yamt | sync with head.
|
| 1.41.8.1 |
| 17-Jun-2008 |
yamt | sync with head.
|
| 1.41.6.2 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
| 1.41.6.1 |
| 29-Jun-2008 |
mjf | Sync with HEAD.
|
| 1.43.2.1 |
| 13-Dec-2008 |
haad | Update haad-dm branch to haad-dm-base2.
|
| 1.44.2.1 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
| 1.46.4.1 |
| 30-May-2010 |
rmind | sync with head
|
| 1.46.2.1 |
| 30-Apr-2010 |
uebayasi | Sync with HEAD.
|
| 1.47.32.1 |
| 10-Aug-2014 |
tls | Rebase.
|
| 1.47.18.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
| 1.47.18.1 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.50.4.5 |
| 05-Feb-2017 |
skrll | Sync with HEAD
|
| 1.50.4.4 |
| 05-Oct-2016 |
skrll | Sync with HEAD
|
| 1.50.4.3 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
| 1.50.4.2 |
| 29-May-2016 |
skrll | Sync with HEAD
|
| 1.50.4.1 |
| 22-Sep-2015 |
skrll | Sync with HEAD
|
| 1.53.2.1 |
| 07-Jan-2017 |
pgoyette | Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
|
| 1.55.8.2 |
| 02-Jan-2018 |
snj | Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default.
|
| 1.55.8.1 |
| 10-Dec-2017 |
snj | Pull up following revision(s) (requested by msaitoh in ticket #427): sys/arch/amiga/dev/if_bah_zbus.c: 1.17 sys/arch/arm/broadcom/bcm53xx_eth.c: 1.30 sys/arch/powerpc/booke/dev/pq3etsec.c: 1.32 sys/arch/usermode/dev/if_veth.c: 1.9 sys/dev/ic/an.c: 1.66 sys/dev/ic/athn.c: 1.17 sys/dev/ic/atw.c: 1.162 sys/dev/ic/bwi.c: 1.33 sys/dev/ic/dwc_gmac.c: 1.41-1.42 sys/dev/ic/malo.c: 1.10 sys/dev/ic/rt2560.c: 1.31 sys/dev/ic/rt2661.c: 1.36 sys/dev/ic/rt2860.c: 1.29 sys/dev/ic/rtw.c: 1.127 sys/dev/ic/rtwvar.h: 1.46 sys/dev/ic/smc90cx6.c: 1.71 sys/dev/ic/smc90cx6var.h: 1.12 sys/dev/ic/wi.c: 1.244 sys/dev/pci/if_ipw.c: 1.66 sys/dev/pci/if_iwi.c: 1.104 sys/dev/pci/if_iwm.c: 1.76 sys/dev/pci/if_iwn.c: 1.86 sys/dev/pci/if_rtwn.c: 1.13 sys/dev/pci/if_wm.c: 1.541 sys/dev/pci/if_wpi.c: 1.79 sys/dev/pci/ixgbe/ixgbe.c: 1.106 sys/dev/pci/ixgbe/ixv.c: 1.73 via patch sys/dev/pcmcia/if_malo_pcmcia.c: 1.15 sys/dev/scsipi/if_se.c: 1.95 sys/dev/usb/if_upl.c: 1.60 sys/net/if.c: 1.396 sys/net/if.h: 1.241 sys/net/if_arc.h: 1.23 sys/net/if_arcsubr.c: 1.78 sys/net/if_bridge.c: 1.136-1.137 sys/net/if_etherip.c: 1.39 sys/net/if_faith.c: 1.56 sys/net/if_gif.c: 1.131 sys/net/if_loop.c: 1.96 sys/net/if_mpls.c: 1.30 sys/net/if_pppoe.c: 1.129 sys/net/if_srt.c: 1.27 sys/net/if_stf.c: 1.102 sys/net/if_tap.c: 1.100 sys/net/if_vlan.c: 1.105 sys/netinet/ip_carp.c: 1.91 sys/rump/net/lib/libshmif/if_shmem.c: 1.73-1.74 sys/rump/net/lib/libvirtif/if_virt.c: 1.55-1.56 if_initalize() and if_attach() failed when resource allocation failed (e.g. allocating softint). Without this change, it panics. It's bad because resource shortage really occured when a lot of pseudo interface is created. To avoid this problem, don't panic and change return value of if_initialize() and if_attach() to int. Caller fanction will be recover from error cleanly by checking the return value. Return if bah_attach_subr() failed. If if_attach() failed in the attach function, return. - If if_initialize() failed in the attach function, free resources and return. - Add some missing frees in bridge_clone_destroy(). - KNF If error occured in bcmeth_ccb_attach(), free resources and return. If error occured in pq3etsec_attach(), free resources and return. If error occured in the attach function, free resources and return. - If if_initialize() failed in athn_attach(), free resources and return. - Add missing pmf_event_deregister() in athn_detach(). - Free resources correctly on some errors in atw_attach(). - Use apint*() insread of printf() in the attach function. If if_initialize() failed in the attach function, return. - If if_initialize() failed in the attach function, free resources and return. - Add missing dwc_gmac_free_dma_rings() and mutex_destroy() when attach failed. - If if_initialize() failed in the attach function, free resources and return. - ifp is always not NULL in iwi_detach(). Check correctly with ifp->if_softc. - If if_initialize() failed in the attach function, free resources and return. - Fix error path in the attach function correctly. If if_initialize() failed in the attach function, free resources and return. If if_attach() failed in the attach function, free resources and return. - If if_initialize() failed in the attach function, free resources and return. - KNF - If if_attach() failed in the attach function, free resources and return. - KNF Fix compile error. Fix compile error. We don't need '&mii', but just 'mii' for mii_detach(). Don't free sc_rthash twice
|
| 1.57.2.2 |
| 28-Jul-2018 |
pgoyette | Sync with HEAD
|
| 1.57.2.1 |
| 02-May-2018 |
pgoyette | Synch with HEAD
|
| 1.59.2.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
| 1.59.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
| 1.60.4.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
| 1.61.10.1 |
| 17-Jun-2021 |
thorpej | Sync w/ HEAD.
|