The NetBSD Project

CVS log for src/sys/net/if_mpls.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / net

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.41 / (download) - annotate - [select for diffs], Sat Sep 3 20:29:31 2022 UTC (17 months, 3 weeks ago) by thorpej
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, netbsd-10-base, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, bouyer-sunxi-drm-base, bouyer-sunxi-drm, HEAD
Changes since 1.40: +5 -2 lines
Diff to previous 1.40 (colored)

Machete-waving to fix mpls rump build after pktqueue changes.

Revision 1.40 / (download) - annotate - [select for diffs], Sat Sep 3 02:47:59 2022 UTC (17 months, 4 weeks ago) by thorpej
Branch: MAIN
Changes since 1.39: +2 -3 lines
Diff to previous 1.39 (colored)

Garbage-collect the remaining vestiges of netisr.

Revision 1.39 / (download) - annotate - [select for diffs], Sat Sep 3 02:24:59 2022 UTC (17 months, 4 weeks ago) by thorpej
Branch: MAIN
Changes since 1.38: +4 -11 lines
Diff to previous 1.38 (colored)

Convert MPLS from a legacy netisr to pktqueue.

Revision 1.38 / (download) - annotate - [select for diffs], Fri Jul 29 15:25:51 2022 UTC (19 months ago) by skrll
Branch: MAIN
Changes since 1.37: +2 -6 lines
Diff to previous 1.37 (colored)

No need to wrap the call to if_detach with splnet / splx as if_detach
raises spl as required.

Revision 1.36.10.1 / (download) - annotate - [select for diffs], Thu Jun 17 04:46:35 2021 UTC (2 years, 8 months ago) by thorpej
Branch: thorpej-i2c-spi-conf
Changes since 1.36: +3 -9 lines
Diff to previous 1.36 (colored) next main 1.37 (colored)

Sync w/ HEAD.

Revision 1.37 / (download) - annotate - [select for diffs], Wed Jun 16 00:21:19 2021 UTC (2 years, 8 months ago) by riastradh
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-futex2-base, thorpej-futex2, thorpej-cfargs2-base, thorpej-cfargs2
Changes since 1.36: +3 -9 lines
Diff to previous 1.36 (colored)

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.

Revision 1.34.2.2 / (download) - annotate - [select for diffs], Wed Apr 8 14:08:57 2020 UTC (3 years, 10 months ago) by martin
Branch: phil-wifi
Changes since 1.34.2.1: +4 -5 lines
Diff to previous 1.34.2.1 (colored) to branchpoint 1.34 (colored) next main 1.35 (colored)

Merge changes from current as of 20200406

Revision 1.35.4.1 / (download) - annotate - [select for diffs], Sat Feb 29 20:21:06 2020 UTC (4 years ago) by ad
Branch: ad-namecache
Changes since 1.35: +4 -5 lines
Diff to previous 1.35 (colored) next main 1.36 (colored)

Sync with head.

Revision 1.36 / (download) - annotate - [select for diffs], Wed Jan 29 04:18:34 2020 UTC (4 years, 1 month ago) by thorpej
Branch: MAIN
CVS Tags: thorpej-futex-base, thorpej-futex, thorpej-cfargs-base, thorpej-cfargs, phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, is-mlppp-base, is-mlppp, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh, ad-namecache-base3
Branch point for: thorpej-i2c-spi-conf
Changes since 1.35: +4 -5 lines
Diff to previous 1.35 (colored)

Adopt <net/if_stats.h>.

Revision 1.34.2.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:09:45 2019 UTC (4 years, 8 months ago) by christos
Branch: phil-wifi
Changes since 1.34: +3 -3 lines
Diff to previous 1.34 (colored)

Sync with HEAD

Revision 1.35 / (download) - annotate - [select for diffs], Sat Apr 27 06:18:15 2019 UTC (4 years, 10 months ago) by pgoyette
Branch: MAIN
CVS Tags: phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, ad-namecache-base2, ad-namecache-base1, ad-namecache-base
Branch point for: ad-namecache
Changes since 1.34: +3 -3 lines
Diff to previous 1.34 (colored)

A few more empty-string --> NULL in required-modules lists

Revision 1.33.2.1 / (download) - annotate - [select for diffs], Sat Jul 28 04:38:10 2018 UTC (5 years, 7 months ago) by pgoyette
Branch: pgoyette-compat
CVS Tags: pgoyette-compat-merge-20190127
Changes since 1.33: +4 -4 lines
Diff to previous 1.33 (colored) next main 1.34 (colored)

Sync with HEAD

Revision 1.34 / (download) - annotate - [select for diffs], Tue Jun 26 06:48:02 2018 UTC (5 years, 8 months ago) by msaitoh
Branch: MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, isaki-audio2-base, isaki-audio2
Branch point for: phil-wifi
Changes since 1.33: +4 -4 lines
Diff to previous 1.33 (colored)

 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.

Revision 1.8.8.2 / (download) - annotate - [select for diffs], Tue Mar 13 17:42:41 2018 UTC (5 years, 11 months ago) by snj
Branch: netbsd-6
Changes since 1.8.8.1: +60 -42 lines
Diff to previous 1.8.8.1 (colored) to branchpoint 1.8 (colored) next main 1.9 (colored)

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.

Revision 1.8.22.2 / (download) - annotate - [select for diffs], Tue Mar 13 17:42:39 2018 UTC (5 years, 11 months ago) by snj
Branch: netbsd-6-1
Changes since 1.8.22.1: +60 -42 lines
Diff to previous 1.8.22.1 (colored) to branchpoint 1.8 (colored) next main 1.9 (colored)

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.

Revision 1.8.14.2 / (download) - annotate - [select for diffs], Tue Mar 13 17:42:37 2018 UTC (5 years, 11 months ago) by snj
Branch: netbsd-6-0
Changes since 1.8.14.1: +60 -42 lines
Diff to previous 1.8.14.1 (colored) to branchpoint 1.8 (colored) next main 1.9 (colored)

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.

Revision 1.16.2.1 / (download) - annotate - [select for diffs], Sat Feb 24 18:29:40 2018 UTC (6 years ago) by snj
Branch: netbsd-7
CVS Tags: netbsd-7-2-RELEASE
Changes since 1.16: +70 -46 lines
Diff to previous 1.16 (colored) next main 1.17 (colored)

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.

Revision 1.16.10.1 / (download) - annotate - [select for diffs], Sat Feb 24 18:29:38 2018 UTC (6 years ago) by snj
Branch: netbsd-7-1
CVS Tags: netbsd-7-1-2-RELEASE
Changes since 1.16: +70 -46 lines
Diff to previous 1.16 (colored) next main 1.17 (colored)

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.

Revision 1.16.6.1 / (download) - annotate - [select for diffs], Sat Feb 24 18:29:36 2018 UTC (6 years ago) by snj
Branch: netbsd-7-0
Changes since 1.16: +70 -46 lines
Diff to previous 1.16 (colored) next main 1.17 (colored)

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.

Revision 1.29.8.2 / (download) - annotate - [select for diffs], Mon Feb 12 18:18:00 2018 UTC (6 years ago) by snj
Branch: netbsd-8
CVS Tags: netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1
Changes since 1.29.8.1: +105 -72 lines
Diff to previous 1.29.8.1 (colored) to branchpoint 1.29 (colored) next main 1.30 (colored)

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.

Revision 1.33 / (download) - annotate - [select for diffs], Fri Jan 19 15:04:29 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-base, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315
Branch point for: pgoyette-compat
Changes since 1.32: +41 -27 lines
Diff to previous 1.32 (colored)

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.

Revision 1.29.8.1 / (download) - annotate - [select for diffs], Sun Dec 10 10:10:25 2017 UTC (6 years, 2 months ago) by snj
Branch: netbsd-8
Changes since 1.29: +9 -3 lines
Diff to previous 1.29 (colored)

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

Revision 1.32 / (download) - annotate - [select for diffs], Sat Dec 9 10:30:30 2017 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.31: +8 -5 lines
Diff to previous 1.31 (colored)

Kick MPLS packets earlier.

Revision 1.31 / (download) - annotate - [select for diffs], Fri Dec 8 17:49:54 2017 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.30: +60 -44 lines
Diff to previous 1.30 (colored)

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.

Revision 1.8.12.2 / (download) - annotate - [select for diffs], Sun Dec 3 11:39:02 2017 UTC (6 years, 2 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.8.12.1: +78 -28 lines
Diff to previous 1.8.12.1 (colored) to branchpoint 1.8 (colored) next main 1.9 (colored)

update from HEAD

Revision 1.30 / (download) - annotate - [select for diffs], Mon Oct 23 09:32:00 2017 UTC (6 years, 4 months ago) by msaitoh
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202
Changes since 1.29: +9 -3 lines
Diff to previous 1.29 (colored)

 If if_attach() failed in the attach function, free resources and return.

Revision 1.16.4.7 / (download) - annotate - [select for diffs], Sun Feb 5 13:40:58 2017 UTC (7 years ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.6: +4 -5 lines
Diff to previous 1.16.4.6 (colored) to branchpoint 1.16 (colored) next main 1.17 (colored)

Sync with HEAD

Revision 1.26.2.2 / (download) - annotate - [select for diffs], Sat Jan 7 08:56:50 2017 UTC (7 years, 1 month ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.26.2.1: +4 -4 lines
Diff to previous 1.26.2.1 (colored) to branchpoint 1.26 (colored) next main 1.27 (colored)

Sync with HEAD.  (Note that most of these changes are simply $NetBSD$
tag issues.)

Revision 1.29 / (download) - annotate - [select for diffs], Mon Dec 12 03:55:57 2016 UTC (7 years, 2 months ago) by ozaki-r
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, nick-nhusb-base-20170204, netbsd-8-base, matt-nb8-mediatek-base, matt-nb8-mediatek, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: netbsd-8
Changes since 1.28: +4 -4 lines
Diff to previous 1.28 (colored)

Make the routing table and rtcaches MP-safe

See the following descriptions for details.

Proposed on tech-kern and tech-net


Overview
--------

We protect the routing table with a rwock and protect
rtcaches with another rwlock. Each rtentry is protected
from being freed or updated via reference counting and psref.

Global rwlocks
--------------

There are two rwlocks; one for the routing table (rt_lock) and
the other for rtcaches (rtcache_lock). rtcache_lock covers
all existing rtcaches; there may have room for optimizations
(future work).

The locking order is rtcache_lock first and rt_lock is next.

rtentry references
------------------

References to an rtentry is managed with reference counting
and psref. Either of the two mechanisms is used depending on
where a rtentry is obtained. Reference counting is used when
we obtain a rtentry from the routing table directly via
rtalloc1 and rtrequest{,1} while psref is used when we obtain
a rtentry from a rtcache via rtcache_* APIs. In both cases,
a caller can sleep/block with holding an obtained rtentry.

The reasons why we use two different mechanisms are (i) only
using reference counting hurts the performance due to atomic
instructions (rtcache case) (ii) ease of implementation;
applying psref to APIs such rtaloc1 and rtrequest{,1} requires
additional works (adding a local variable and an argument).

We will finally migrate to use only psref but we can do it
when we have a lockless routing table alternative.

Reference counting for rtentry
------------------------------

rt_refcnt now doesn't count permanent references such as for
rt_timers and rtcaches, instead it is used only for temporal
references when obtaining a rtentry via rtalloc1 and rtrequest{,1}.
We can do so because destroying a rtentry always involves
removing references of rt_timers and rtcaches to the rtentry
and we don't need to track such references. This also makes
it easy to wait for readers to release references on deleting
or updating a rtentry, i.e., we can simply wait until the
reference counter is 0 or 1. (If there are permanent references
the counter can be arbitrary.)

rt_ref increments a reference counter of a rtentry and rt_unref
decrements it. rt_ref is called inside APIs (rtalloc1 and
rtrequest{,1} so users don't need to care about it while
users must call rt_unref to an obtained rtentry after using it.

rtfree is removed and we use rt_unref and rt_free instead.
rt_unref now just decrements the counter of a given rtentry
and rt_free just tries to destroy a given rtentry.

See the next section for destructions of rtentries by rt_free.

Destructions of rtentries
-------------------------

We destroy a rtentry only when we call rtrequst{,1}(RTM_DELETE);
the original implementation can destroy in any rtfree where it's
the last reference. If we use reference counting or psref, it's
easy to understand if the place that a rtentry is destroyed is
fixed.

rt_free waits for references to a given rtentry to be released
before actually destroying the rtentry. rt_free uses a condition
variable (cv_wait) (and psref_target_destroy for psref) to wait.

Unfortunately rtrequst{,1}(RTM_DELETE) can be called in softint
that we cannot use cv_wait. In that case, we have to defer the
destruction to a workqueue.

rtentry#rt_cv, rtentry#rt_psref and global variables
(see rt_free_global) are added to conduct the procedure.

Updates of rtentries
--------------------

One difficulty to use refcnt/psref instead of rwlock for rtentry
is updates of rtentries. We need an additional mechanism to
prevent readers from seeing inconsistency of a rtentry being
updated.

We introduce RTF_UPDATING flag to rtentries that are updating.
While the flag is set to a rtentry, users cannot acquire the
rtentry. By doing so, we avoid users to see inconsistent
rtentries.

There are two options when a user tries to acquire a rtentry
with the RTF_UPDATING flag; if a user runs in softint context
the user fails to acquire a rtentry (NULL is returned).
Otherwise a user waits until the update completes by waiting
on cv.

The procedure of a updater is simpler to destruction of
a rtentry. Wait on cv (and psref) and after all readers left,
proceed with the update.

Global variables (see rt_update_global) are added to conduct
the procedure.

Currently we apply the mechanism to only RTM_CHANGE in
rtsock.c. We would have to apply other codes. See
"Known issues" section.

psref for rtentry
-----------------

When we obtain a rtentry from a rtcache via rtcache_* APIs,
psref is used to reference to the rtentry.

rtcache_ref acquires a reference to a rtentry with psref
and rtcache_unref releases the reference after using it.
rtcache_ref is called inside rtcache_* APIs and users don't
need to take care of it while users must call rtcache_unref
to release the reference.

struct psref and int bound that is needed for psref is
embedded into struct route. By doing so we don't need to
add local variables and additional argument to APIs.

However this adds another constraint to psref other than
reference counting one's; holding a reference of an rtentry
via a rtcache is allowed by just one caller at the same time.
So we must not acquire a rtentry via a rtcache twice and
avoid a recursive use of a rtcache. And also a rtcache must
be arranged to be used by a LWP/softint at the same time
somehow. For IP forwarding case, we have per-CPU rtcaches
used in softint so the constraint is guaranteed. For a h
rtcache of a PCB case, the constraint is guaranteed by the
solock of each PCB. Any other cases (pf, ipf, stf and ipsec)
are currently guaranteed by only the existence of the global
locks (softnet_lock and/or KERNEL_LOCK). If we've found the
cases that we cannot guarantee the constraint, we would need
to introduce other rtcache APIs that use simple reference
counting.

psref of rtcache is created with IPL_SOFTNET and so rtcache
shouldn't used at an IPL higher than IPL_SOFTNET.

Note that rtcache_free is used to invalidate a given rtcache.
We don't need another care by my change; just keep them as
they are.

Performance impact
------------------

When NET_MPSAFE is disabled the performance drop is 3% while
when it's enabled the drop is increased to 11%. The difference
comes from that currently we don't take any global locks and
don't use psref if NET_MPSAFE is disabled.

We can optimize the performance of the case of NET_MPSAFE
on by reducing lookups of rtcache that uses psref;
currently we do two lookups but we should be able to trim
one of two. This is a future work.

Known issues
------------

There are two known issues to be solved; one is that
a caller of rtrequest(RTM_ADD) may change rtentry (see rtinit).
We need to prevent new references during the update. Or
we may be able to remove the code (perhaps, need more
investigations).

The other is rtredirect that updates a rtentry. We need
to apply our update mechanism, however it's not easy because
rtredirect is called in softint and we cannot apply our
mechanism simply. One solution is to defer rtredirect to
a workqueue but it requires some code restructuring.

Revision 1.26.2.1 / (download) - annotate - [select for diffs], Fri Nov 4 14:49:20 2016 UTC (7 years, 3 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.26: +6 -6 lines
Diff to previous 1.26 (colored)

Sync with HEAD

Revision 1.16.4.6 / (download) - annotate - [select for diffs], Wed Oct 5 20:56:08 2016 UTC (7 years, 4 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.5: +47 -10 lines
Diff to previous 1.16.4.5 (colored) to branchpoint 1.16 (colored)

Sync with HEAD

Revision 1.28 / (download) - annotate - [select for diffs], Mon Oct 3 11:06:06 2016 UTC (7 years, 4 months ago) by ozaki-r
Branch: MAIN
CVS Tags: pgoyette-localcount-20161104, nick-nhusb-base-20161204, nick-nhusb-base-20161004
Changes since 1.27: +6 -6 lines
Diff to previous 1.27 (colored)

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@

Revision 1.27 / (download) - annotate - [select for diffs], Sun Aug 7 17:38:34 2016 UTC (7 years, 6 months ago) by christos
Branch: MAIN
CVS Tags: localcount-20160914
Changes since 1.26: +41 -5 lines
Diff to previous 1.26 (colored)

modularize some more drivers and merge the module glue

Revision 1.16.4.5 / (download) - annotate - [select for diffs], Sat Jul 9 20:25:21 2016 UTC (7 years, 7 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.4: +6 -8 lines
Diff to previous 1.16.4.4 (colored) to branchpoint 1.16 (colored)

Sync with HEAD

Revision 1.26 / (download) - annotate - [select for diffs], Thu Jul 7 06:55:43 2016 UTC (7 years, 7 months ago) by msaitoh
Branch: MAIN
CVS Tags: pgoyette-localcount-base, pgoyette-localcount-20160806, pgoyette-localcount-20160726, nick-nhusb-base-20160907
Branch point for: pgoyette-localcount
Changes since 1.25: +3 -3 lines
Diff to previous 1.25 (colored)

KNF. Remove extra spaces. No functional change.

Revision 1.25 / (download) - annotate - [select for diffs], Mon Jun 20 22:59:36 2016 UTC (7 years, 8 months ago) by knakahara
Branch: MAIN
Changes since 1.24: +3 -3 lines
Diff to previous 1.24 (colored)

fix: kern/51259

Revision 1.24 / (download) - annotate - [select for diffs], Mon Jun 20 06:46:37 2016 UTC (7 years, 8 months ago) by knakahara
Branch: MAIN
Changes since 1.23: +3 -5 lines
Diff to previous 1.23 (colored)

apply if_output_lock() to L3 callers which call ifp->if_output() of L2(or L3 tunneling).

Revision 1.23 / (download) - annotate - [select for diffs], Fri Jun 10 13:31:44 2016 UTC (7 years, 8 months ago) by ozaki-r
Branch: MAIN
Changes since 1.22: +4 -4 lines
Diff to previous 1.22 (colored)

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.

Revision 1.16.4.4 / (download) - annotate - [select for diffs], Sun May 29 08:44:38 2016 UTC (7 years, 9 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.3: +15 -12 lines
Diff to previous 1.16.4.3 (colored) to branchpoint 1.16 (colored)

Sync with HEAD

Revision 1.22 / (download) - annotate - [select for diffs], Thu Apr 28 00:16:56 2016 UTC (7 years, 10 months ago) by ozaki-r
Branch: MAIN
CVS Tags: nick-nhusb-base-20160529
Changes since 1.21: +14 -11 lines
Diff to previous 1.21 (colored)

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.

Revision 1.21 / (download) - annotate - [select for diffs], Tue Apr 26 09:30:01 2016 UTC (7 years, 10 months ago) by ozaki-r
Branch: MAIN
Changes since 1.20: +3 -3 lines
Diff to previous 1.20 (colored)

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.

Revision 1.16.4.3 / (download) - annotate - [select for diffs], Sat Mar 19 11:30:32 2016 UTC (7 years, 11 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.2: +3 -3 lines
Diff to previous 1.16.4.2 (colored) to branchpoint 1.16 (colored)

Sync with HEAD

Revision 1.20 / (download) - annotate - [select for diffs], Tue Feb 9 08:32:12 2016 UTC (8 years ago) by ozaki-r
Branch: MAIN
CVS Tags: nick-nhusb-base-20160422, nick-nhusb-base-20160319
Changes since 1.19: +3 -3 lines
Diff to previous 1.19 (colored)

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!

Revision 1.16.4.2 / (download) - annotate - [select for diffs], Tue Sep 22 12:06:10 2015 UTC (8 years, 5 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16.4.1: +9 -7 lines
Diff to previous 1.16.4.1 (colored) to branchpoint 1.16 (colored)

Sync with HEAD

Revision 1.19 / (download) - annotate - [select for diffs], Mon Aug 24 22:21:26 2015 UTC (8 years, 6 months ago) by pooka
Branch: MAIN
CVS Tags: nick-nhusb-base-20151226, nick-nhusb-base-20150921
Changes since 1.18: +4 -2 lines
Diff to previous 1.18 (colored)

sprinkle _KERNEL_OPT

Revision 1.18 / (download) - annotate - [select for diffs], Thu Aug 20 14:40:19 2015 UTC (8 years, 6 months ago) by christos
Branch: MAIN
Changes since 1.17: +4 -4 lines
Diff to previous 1.17 (colored)

include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.

Revision 1.16.4.1 / (download) - annotate - [select for diffs], Sat Jun 6 14:40:25 2015 UTC (8 years, 8 months ago) by skrll
Branch: nick-nhusb
Changes since 1.16: +7 -2 lines
Diff to previous 1.16 (colored)

Sync with HEAD

Revision 1.17 / (download) - annotate - [select for diffs], Thu Jun 4 09:19:59 2015 UTC (8 years, 8 months ago) by ozaki-r
Branch: MAIN
CVS Tags: nick-nhusb-base-20150606
Changes since 1.16: +7 -2 lines
Diff to previous 1.16 (colored)

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.

Revision 1.8.12.1 / (download) - annotate - [select for diffs], Wed Aug 20 00:04:34 2014 UTC (9 years, 6 months ago) by tls
Branch: tls-maxphys
Changes since 1.8: +60 -48 lines
Diff to previous 1.8 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.11.2.1 / (download) - annotate - [select for diffs], Sun Aug 10 06:56:15 2014 UTC (9 years, 6 months ago) by tls
Branch: tls-earlyentropy
Changes since 1.11: +17 -31 lines
Diff to previous 1.11 (colored) next main 1.12 (colored)

Rebase.

Revision 1.16 / (download) - annotate - [select for diffs], Thu Jul 17 10:46:57 2014 UTC (9 years, 7 months ago) by bouyer
Branch: MAIN
CVS Tags: tls-maxphys-base, tls-earlyentropy-base, nick-nhusb-base-20150406, nick-nhusb-base, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-1-RELEASE, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE
Branch point for: nick-nhusb, netbsd-7-1, netbsd-7-0, netbsd-7
Changes since 1.15: +9 -3 lines
Diff to previous 1.15 (colored)

Make sure to call ifp->if_output() with KERNEL_LOCK held.
Should fix mpls-related atf tests.

Revision 1.15 / (download) - annotate - [select for diffs], Wed Jul 9 14:41:42 2014 UTC (9 years, 7 months ago) by rtr
Branch: MAIN
Changes since 1.14: +4 -4 lines
Diff to previous 1.14 (colored)

* 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

Revision 1.14 / (download) - annotate - [select for diffs], Fri Jun 6 01:02:47 2014 UTC (9 years, 8 months ago) by rmind
Branch: MAIN
Changes since 1.13: +4 -4 lines
Diff to previous 1.13 (colored)

- Eliminate RTFREE() macro in favour of rtfree() function.
- Make rtcache() function static.

Revision 1.13 / (download) - annotate - [select for diffs], Thu Jun 5 23:48:16 2014 UTC (9 years, 8 months ago) by rmind
Branch: MAIN
Changes since 1.12: +6 -26 lines
Diff to previous 1.12 (colored)

- 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.

Revision 1.8.2.1 / (download) - annotate - [select for diffs], Thu May 22 11:41:09 2014 UTC (9 years, 9 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.8: +46 -20 lines
Diff to previous 1.8 (colored) next main 1.9 (colored)

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")

Revision 1.8.16.2 / (download) - annotate - [select for diffs], Sun May 18 17:46:12 2014 UTC (9 years, 9 months ago) by rmind
Branch: rmind-smpnet
Changes since 1.8.16.1: +32 -11 lines
Diff to previous 1.8.16.1 (colored) to branchpoint 1.8 (colored) next main 1.9 (colored)

sync with head

Revision 1.12 / (download) - annotate - [select for diffs], Thu May 15 07:48:41 2014 UTC (9 years, 9 months ago) by msaitoh
Branch: MAIN
CVS Tags: rmind-smpnet-nbase, rmind-smpnet-base
Changes since 1.11: +3 -3 lines
Diff to previous 1.11 (colored)

 Put schednetisr(NETISR_IP) into splnet()/splx() pair.
This avoid extra ipintr() call with empty queue.

Revision 1.11 / (download) - annotate - [select for diffs], Fri Oct 25 09:25:32 2013 UTC (10 years, 4 months ago) by kefren
Branch: MAIN
CVS Tags: yamt-pagecache-base9, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3
Branch point for: tls-earlyentropy
Changes since 1.10: +31 -10 lines
Diff to previous 1.10 (colored)

RFC3032 conformance for Router Alert Label

Revision 1.8.16.1 / (download) - annotate - [select for diffs], Wed Aug 28 23:59:36 2013 UTC (10 years, 6 months ago) by rmind
Branch: rmind-smpnet
Changes since 1.8: +25 -20 lines
Diff to previous 1.8 (colored)

sync with head

Revision 1.8.14.1 / (download) - annotate - [select for diffs], Tue Jul 30 03:07:50 2013 UTC (10 years, 7 months ago) by msaitoh
Branch: netbsd-6-0
CVS Tags: netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE
Changes since 1.8: +10 -19 lines
Diff to previous 1.8 (colored)

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

Revision 1.8.22.1 / (download) - annotate - [select for diffs], Tue Jul 30 03:06:42 2013 UTC (10 years, 7 months ago) by msaitoh
Branch: netbsd-6-1
CVS Tags: netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE
Changes since 1.8: +10 -19 lines
Diff to previous 1.8 (colored)

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

Revision 1.8.8.1 / (download) - annotate - [select for diffs], Tue Jul 30 03:05:39 2013 UTC (10 years, 7 months ago) by msaitoh
Branch: netbsd-6
Changes since 1.8: +10 -19 lines
Diff to previous 1.8 (colored)

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

Revision 1.9.2.1 / (download) - annotate - [select for diffs], Tue Jul 23 21:07:37 2013 UTC (10 years, 7 months ago) by riastradh
Branch: riastradh-drm2
Changes since 1.9: +17 -3 lines
Diff to previous 1.9 (colored) next main 1.10 (colored)

sync with HEAD

Revision 1.10 / (download) - annotate - [select for diffs], Tue Jul 23 11:11:55 2013 UTC (10 years, 7 months ago) by kefren
Branch: MAIN
CVS Tags: riastradh-drm2-base2, riastradh-drm2-base1
Changes since 1.9: +17 -3 lines
Diff to previous 1.9 (colored)

Implement RFC4182 changes - switchable via sysctl

Revision 1.9 / (download) - annotate - [select for diffs], Mon Jul 15 12:10:34 2013 UTC (10 years, 7 months ago) by kefren
Branch: MAIN
CVS Tags: riastradh-drm2-base
Branch point for: riastradh-drm2
Changes since 1.8: +10 -19 lines
Diff to previous 1.8 (colored)

stop abusing kmem during softint context

Revision 1.8 / (download) - annotate - [select for diffs], Sun Jul 3 18:46:12 2011 UTC (12 years, 8 months ago) by kefren
Branch: MAIN
CVS Tags: yamt-pagecache-tag8, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, khorben-n900, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base9, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base5, jmcneill-usbmp-base4, jmcneill-usbmp-base3, jmcneill-usbmp-base2, jmcneill-usbmp-base10, jmcneill-usbmp-base, jmcneill-usbmp, jmcneill-audiomp3-base, jmcneill-audiomp3, agc-symver-base, agc-symver
Branch point for: yamt-pagecache, tls-maxphys, rmind-smpnet, netbsd-6-1, netbsd-6-0, netbsd-6
Changes since 1.7: +6 -4 lines
Diff to previous 1.7 (colored)

Avoid putting implicit null labels on the wire

Revision 1.3.12.1 / (download) - annotate - [select for diffs], Thu Jun 23 14:20:25 2011 UTC (12 years, 8 months ago) by cherry
Branch: cherry-xenmp
Changes since 1.3: +6 -5 lines
Diff to previous 1.3 (colored) next main 1.4 (colored)

Catchup with rmind-uvmplock merge.

Revision 1.7 / (download) - annotate - [select for diffs], Wed Jun 22 19:08:29 2011 UTC (12 years, 8 months ago) by kefren
Branch: MAIN
Changes since 1.6: +18 -3 lines
Diff to previous 1.6 (colored)

make LSE prepend the rest of the shims in they exist

Revision 1.6 / (download) - annotate - [select for diffs], Tue Jun 21 14:30:19 2011 UTC (12 years, 8 months ago) by kefren
Branch: MAIN
Changes since 1.5: +40 -17 lines
Diff to previous 1.5 (colored)

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.

Revision 1.5 / (download) - annotate - [select for diffs], Fri Jun 17 09:15:24 2011 UTC (12 years, 8 months ago) by kefren
Branch: MAIN
Changes since 1.4: +4 -4 lines
Diff to previous 1.4 (colored)

teach loopback about MPLS. Prerequisite for MPLS tunnels

Revision 1.4 / (download) - annotate - [select for diffs], Thu Jun 16 19:47:31 2011 UTC (12 years, 8 months ago) by kefren
Branch: MAIN
Changes since 1.3: +4 -3 lines
Diff to previous 1.3 (colored)

use ETHERTYPE_MPLS only for unicast packets (RFC3032)

Revision 1.3.6.2 / (download) - annotate - [select for diffs], Tue Aug 17 06:47:44 2010 UTC (13 years, 6 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.3.6.1: +600 -0 lines
Diff to previous 1.3.6.1 (colored) to branchpoint 1.3 (colored) next main 1.4 (colored)

Sync with HEAD.

Revision 1.3.4.2 / (download) - annotate - [select for diffs], Wed Aug 11 22:54:54 2010 UTC (13 years, 6 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.3.4.1: +600 -0 lines
Diff to previous 1.3.4.1 (colored) to branchpoint 1.3 (colored) next main 1.4 (colored)

sync with head.

Revision 1.3.2.2 / (download) - annotate - [select for diffs], Sat Jul 3 01:19:59 2010 UTC (13 years, 8 months ago) by rmind
Branch: rmind-uvmplock
Changes since 1.3.2.1: +600 -0 lines
Diff to previous 1.3.2.1 (colored) to branchpoint 1.3 (colored) next main 1.4 (colored)

sync with head

Revision 1.3.6.1, Sun Jun 27 13:39:11 2010 UTC (13 years, 8 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.3: +0 -600 lines
FILE REMOVED

file if_mpls.c was added on branch uebayasi-xip on 2010-08-17 06:47:44 +0000

Revision 1.3.4.1, Sun Jun 27 13:39:11 2010 UTC (13 years, 8 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.3: +0 -600 lines
FILE REMOVED

file if_mpls.c was added on branch yamt-nfs-mp on 2010-08-11 22:54:54 +0000

Revision 1.3.2.1, Sun Jun 27 13:39:11 2010 UTC (13 years, 8 months ago) by rmind
Branch: rmind-uvmplock
Changes since 1.3: +0 -600 lines
FILE REMOVED

file if_mpls.c was added on branch rmind-uvmplock on 2010-07-03 01:19:59 +0000

Revision 1.3 / (download) - annotate - [select for diffs], Sun Jun 27 13:39:11 2010 UTC (13 years, 8 months ago) by kefren
Branch: MAIN
CVS Tags: yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base4, uebayasi-xip-base3, uebayasi-xip-base2, rmind-uvmplock-nbase, rmind-uvmplock-base, matt-mips64-premerge-20101231, jruoho-x86intr-base, jruoho-x86intr, cherry-xenmp-base, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2
Branch point for: yamt-nfs-mp, uebayasi-xip, rmind-uvmplock, cherry-xenmp
Changes since 1.2: +6 -5 lines
Diff to previous 1.2 (colored)

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

Revision 1.2 / (download) - annotate - [select for diffs], Sat Jun 26 15:17:56 2010 UTC (13 years, 8 months ago) by kefren
Branch: MAIN
Changes since 1.1: +4 -4 lines
Diff to previous 1.1 (colored)

Fix build for MPLS import: add options MPLS, changed pseudo-device mpls
to pseudo-device ifmpls

Revision 1.1 / (download) - annotate - [select for diffs], Sat Jun 26 14:24:28 2010 UTC (13 years, 8 months ago) by kefren
Branch: MAIN

Add MPLS support, proposed on tech-net@ a couple of days ago

Welcome to 5.99.33

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>