History log of /src/sys/net/if_mpls.c |
Revision | | Date | Author | Comments |
1.41 |
| 03-Sep-2022 |
thorpej | Machete-waving to fix mpls rump build after pktqueue changes.
|
1.40 |
| 03-Sep-2022 |
thorpej | Garbage-collect the remaining vestiges of netisr.
|
1.39 |
| 03-Sep-2022 |
thorpej | Convert MPLS from a legacy netisr to pktqueue.
|
1.38 |
| 29-Jul-2022 |
skrll | No need to wrap the call to if_detach with splnet / splx as if_detach raises spl as required.
|
1.37 |
| 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.36 |
| 29-Jan-2020 |
thorpej | branches: 1.36.10; Adopt <net/if_stats.h>.
|
1.35 |
| 27-Apr-2019 |
pgoyette | branches: 1.35.4; A few more empty-string --> NULL in required-modules lists
|
1.34 |
| 26-Jun-2018 |
msaitoh | branches: 1.34.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.33 |
| 19-Jan-2018 |
maxv | branches: 1.33.2; Several changes:
* Declare TRIM_LABEL as a function.
* In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly.
* In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.32 |
| 09-Dec-2017 |
maxv | Kick MPLS packets earlier.
|
1.31 |
| 08-Dec-2017 |
maxv | Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now.
|
1.30 |
| 23-Oct-2017 |
msaitoh | If if_attach() failed in the attach function, free resources and return.
|
1.29 |
| 12-Dec-2016 |
ozaki-r | branches: 1.29.8; Make the routing table and rtcaches MP-safe
See the following descriptions for details.
Proposed on tech-kern and tech-net
Overview
|
1.28 |
| 03-Oct-2016 |
ozaki-r | Fix race condition on ifqueue used by traditional netisr
If a underlying network device driver supports MSI/MSI-X, RX interrupts can be delivered to arbitrary CPUs. This means that Layer 2 subroutines such as ether_input (softint) and subsequent Layer 3 subroutines (softint) which are called via traditional netisr can be dispatched on an arbitrary CPU. Layer 2 subroutines now run without any locks (expected) and so a Layer 2 subroutine and a Layer 3 subroutine can run in parallel.
There is a shared data between a Layer 2 routine and a Layer 3 routine, that is ifqueue and IF_ENQUEUE (from L2) and IF_DEQUEUE (from L3) on it are racy now.
To fix the race condition, use ifqueue#ifq_lock to protect ifqueue instead of splnet that is meaningless now.
The same race condition exists in route_intr. Fix it as well.
Reviewed by knakahara@
|
1.27 |
| 07-Aug-2016 |
christos | modularize some more drivers and merge the module glue
|
1.26 |
| 07-Jul-2016 |
msaitoh | branches: 1.26.2; KNF. Remove extra spaces. No functional change.
|
1.25 |
| 20-Jun-2016 |
knakahara | fix: kern/51259
|
1.24 |
| 20-Jun-2016 |
knakahara | apply if_output_lock() to L3 callers which call ifp->if_output() of L2(or L3 tunneling).
|
1.23 |
| 10-Jun-2016 |
ozaki-r | Avoid storing a pointer of an interface in a mbuf
Having a pointer of an interface in a mbuf isn't safe if we remove big kernel locks; an interface object (ifnet) can be destroyed anytime in any packet processing and accessing such object via a pointer is racy. Instead we have to get an object from the interface collection (ifindex2ifnet) via an interface index (if_index) that is stored to a mbuf instead of an pointer.
The change provides two APIs: m_{get,put}_rcvif_psref that use psref(9) for sleep-able critical sections and m_{get,put}_rcvif that use pserialize(9) for other critical sections. The change also adds another API called m_get_rcvif_NOMPSAFE, that is NOT MP-safe and for transition moratorium, i.e., it is intended to be used for places where are not planned to be MP-ified soon.
The change adds some overhead due to psref to performance sensitive paths, however the overhead is not serious, 2% down at worst.
Proposed on tech-kern and tech-net.
|
1.22 |
| 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.21 |
| 26-Apr-2016 |
ozaki-r | Stop using rt_gwroute on packet sending paths
rt_gwroute of rtentry is a reference to a rtentry of the gateway for a rtentry with RTF_GATEWAY. That was used by L2 (arp and ndp) to look up L2 addresses. By separating L2 nexthop caches, we don't need a route for the purpose and we can stop using rt_gwroute. By doing so, we can reduce referencing and modifying rtentries, which makes it easy to apply a lock (and/or psref) to the routing table and rtentries.
One issue to do this is to keep RTF_REJECT behavior. It seems it was broken when we moved rtalloc1 things from L2 output routines (e.g., ether_output) to ip_hresolv_output, but (fortunately?) it works unexpectedly. What we mistook are: - RTF_REJECT was checked for any routes in L2 output routines, but in ip_hresolv_output it is checked only when the route is RTF_GATEWAY - The RTF_REJECT check wasn't copied to IPv6 (nd6_output)
It seems that rt_gwroute checks hid the mistakes and it looked work (unexpectedly) and removing rt_gwroute checks unveil the issue. So we need to fix RTF_REJECT checks in ip_hresolv_output and also add them to nd6_output.
One more point we have to care is returning an errno; we need to mimic looutput behavior. Originally RTF_REJECT check was done either in L2 output routines or in looutput. The latter is applied when a reject route directs to a loopback interface. However, now RTF_REJECT check is done before looutput so to keep the original behavior we need to return an errno which looutput chooses. Added rt_check_reject_route does such tweaks.
|
1.20 |
| 09-Feb-2016 |
ozaki-r | Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
1.19 |
| 24-Aug-2015 |
pooka | sprinkle _KERNEL_OPT
|
1.18 |
| 20-Aug-2015 |
christos | include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
1.17 |
| 04-Jun-2015 |
ozaki-r | Pull out route lookups from L2 output routines
Route lookups for routes of RTF_GATEWAY were done in L2 output routines such as ether_output, but they should be done in L3 i.e., before L2 output routines. This change places the lookups between L3 output routines (say ip_output) and the L2 output routines.
The change is based on dyoung's patch submitted in the thread: https://mail-index.netbsd.org/tech-net/2013/02/01/msg003847.html You can find out detailed investigations by dyoung about the issue in there.
Note that the change introduces a workaround for MPLS. ether_output knew that it needs to fill the ethertype of a frame as MPLS, based on a tag of an original route (rtentry), but now we don't pass it to ehter_output. So we have to tell that in another way. We use mtag to do so for now, which introduces some overhead. We should fix it somehow in the future.
Discussed on tech-kern and tech-net.
|
1.16 |
| 17-Jul-2014 |
bouyer | branches: 1.16.2; 1.16.4; 1.16.6; 1.16.10; Make sure to call ifp->if_output() with KERNEL_LOCK held. Should fix mpls-related atf tests.
|
1.15 |
| 09-Jul-2014 |
rtr | * split PRU_ACCEPT function out of pr_generic() usrreq switches and put into a separate function xxx_accept(struct socket *, struct mbuf *)
note: future cleanup will take place to remove struct mbuf parameter type and replace it with a more appropriate type.
patch reviewed by rmind
|
1.14 |
| 06-Jun-2014 |
rmind | - Eliminate RTFREE() macro in favour of rtfree() function. - Make rtcache() function static.
|
1.13 |
| 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.12 |
| 15-May-2014 |
msaitoh | Put schednetisr(NETISR_IP) into splnet()/splx() pair. This avoid extra ipintr() call with empty queue.
|
1.11 |
| 25-Oct-2013 |
kefren | branches: 1.11.2; RFC3032 conformance for Router Alert Label
|
1.10 |
| 23-Jul-2013 |
kefren | Implement RFC4182 changes - switchable via sysctl
|
1.9 |
| 15-Jul-2013 |
kefren | branches: 1.9.2; stop abusing kmem during softint context
|
1.8 |
| 03-Jul-2011 |
kefren | branches: 1.8.2; 1.8.8; 1.8.12; 1.8.14; 1.8.16; 1.8.22; Avoid putting implicit null labels on the wire
|
1.7 |
| 22-Jun-2011 |
kefren | make LSE prepend the rest of the shims in they exist
|
1.6 |
| 21-Jun-2011 |
kefren | learn mpls interface how to prepend multiple shims by using a vector of smpls_addrs in sockaddr_mpls. The number of smpls_addrs is found from smpls_len. First label encountered is BoS. XXX: need to do the same for LSE and this feature needs to be documented.
|
1.5 |
| 17-Jun-2011 |
kefren | teach loopback about MPLS. Prerequisite for MPLS tunnels
|
1.4 |
| 16-Jun-2011 |
kefren | use ETHERTYPE_MPLS only for unicast packets (RFC3032)
|
1.3 |
| 27-Jun-2010 |
kefren | branches: 1.3.2; 1.3.4; 1.3.6; 1.3.12; Don't assume that rt_tag family is AF_MPLS but verify it. This way rt_tag can be used for other future work also, not only MPLS
|
1.2 |
| 26-Jun-2010 |
kefren | Fix build for MPLS import: add options MPLS, changed pseudo-device mpls to pseudo-device ifmpls
|
1.1 |
| 26-Jun-2010 |
kefren | Add MPLS support, proposed on tech-net@ a couple of days ago
Welcome to 5.99.33
|
1.3.12.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.3.6.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.3.6.1 |
| 27-Jun-2010 |
uebayasi | file if_mpls.c was added on branch uebayasi-xip on 2010-08-17 06:47:44 +0000
|
1.3.4.2 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.3.4.1 |
| 27-Jun-2010 |
yamt | file if_mpls.c was added on branch yamt-nfs-mp on 2010-08-11 22:54:54 +0000
|
1.3.2.2 |
| 03-Jul-2010 |
rmind | sync with head
|
1.3.2.1 |
| 27-Jun-2010 |
rmind | file if_mpls.c was added on branch rmind-uvmplock on 2010-07-03 01:19:59 +0000
|
1.8.22.2 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.8.22.1 |
| 30-Jul-2013 |
msaitoh | Pull up following revision(s) (requested by kefren in ticket #921): sys/net/if_mpls.c: revision 1.9 stop abusing kmem during softint context to prevent panic
|
1.8.16.2 |
| 18-May-2014 |
rmind | sync with head
|
1.8.16.1 |
| 28-Aug-2013 |
rmind | sync with head
|
1.8.14.2 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.8.14.1 |
| 30-Jul-2013 |
msaitoh | Pull up following revision(s) (requested by kefren in ticket #921): sys/net/if_mpls.c: revision 1.9 stop abusing kmem during softint context to prevent panic
|
1.8.12.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.8.12.1 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.8.8.2 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.8.8.1 |
| 30-Jul-2013 |
msaitoh | Pull up following revision(s) (requested by kefren in ticket #921): sys/net/if_mpls.c: revision 1.9 stop abusing kmem during softint context to prevent panic
|
1.8.2.1 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.9.2.1 |
| 23-Jul-2013 |
riastradh | sync with HEAD
|
1.11.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.16.10.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.16.6.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.16.4.7 |
| 05-Feb-2017 |
skrll | Sync with HEAD
|
1.16.4.6 |
| 05-Oct-2016 |
skrll | Sync with HEAD
|
1.16.4.5 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
1.16.4.4 |
| 29-May-2016 |
skrll | Sync with HEAD
|
1.16.4.3 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.16.4.2 |
| 22-Sep-2015 |
skrll | Sync with HEAD
|
1.16.4.1 |
| 06-Jun-2015 |
skrll | Sync with HEAD
|
1.16.2.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.26.2.2 |
| 07-Jan-2017 |
pgoyette | Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
|
1.26.2.1 |
| 04-Nov-2016 |
pgoyette | Sync with HEAD
|
1.29.8.2 |
| 12-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #546): sys/net/if_mpls.c: 1.31-1.33 sys/netmpls/mpls_ttl.c: 1.9-1.11 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len. -- Style in MPLS. -- Add XXX.
|
1.29.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.33.2.1 |
| 28-Jul-2018 |
pgoyette | Sync with HEAD
|
1.34.2.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.34.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.35.4.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.36.10.1 |
| 17-Jun-2021 |
thorpej | Sync w/ HEAD.
|