History log of /src/sys/net/pktqueue.c |
Revision | | Date | Author | Comments |
1.22 |
| 28-May-2023 |
andvar | s/explcit/explicit/ in comment.
|
1.21 |
| 04-Sep-2022 |
thorpej | In pktq_flush(): - Run a dummy softint at IPL_SOFTNET on all CPUs to ensure that the ISR for this pktqueue is not running (addresses a pre-existing XXX). - Hold the barrier lock around the critical section to ensure that implicit pktq_barrier() calls via pktq_ifdetach() are held off during the critical section. - Ensure the critical section completes in minimal time by not freeing memory during the critical section; instead, just build a list of the packets pulled out of the per-CPU queues and free them after the critical section is over.
|
1.20 |
| 02-Sep-2022 |
thorpej | Re-factor how pktq_barrier() is issued by if_detach().
Rather than excplicitly referencing ip_pktq and ip6_pktq in if_detach(), instead add all pktqueues to a global list. This list is then used in the new pktq_ifdetach() function to issue a barrier on all pktqueues.
Note that the performance of this list is not critical; it will seldom be accessed (then pktqueues are created/destroyed and when network interfaces are detached), and so a simple synchronization strategy using a rwlock is sufficient.
|
1.19 |
| 02-Sep-2022 |
thorpej | pktqueue: Re-factor sysctl handling.
Provide a new pktq_sysctl_setup() function that attaches standard pktq sysctl nodes below a specified parent node, with either a fixed node ID or CTL_CREATE to dynamically assign node IDs. Make all of the sysctl handlers private to pktqueue.c, and remove the INET- and INET6-specific pktqueue sysctl code from net/if.c.
|
1.18 |
| 01-Sep-2022 |
thorpej | pktq_rps_hash(): Make the "funcp" argument const.
|
1.17 |
| 01-Sep-2022 |
thorpej | pktq_dequeue(): Prevent packets from getting stuck beind barrier markers.
pktq_barrier() ensures that all packets enqueued before the barrier have been dequeued before the barrier returns. However, previously, pktq_dequeue() would return NULL when a barrier marker was encountered. If there were packets queued up behind the marker and no additional softint were scheduled for the pktqueue, those packets would end up stranded. pktq_dequeue() now continues to the next slot after the marker, ensuring that processing can continue after the barrier has been signaled.
|
1.16 |
| 21-Dec-2021 |
knakahara | Fix net.*.rps_hash=toeplitz-othercpus on one CPU systems.
|
1.15 |
| 15-Dec-2021 |
knakahara | Fix typo in comment.
|
1.14 |
| 11-Oct-2021 |
knakahara | Make pktq_rps_hash() pluggable for each interface type. Reviewed by gdt@n.o, thorpej@n.o, and riastradh@n.o, thanks.
|
1.13 |
| 25-Mar-2021 |
skrll | Remove strange padding #define and replace with anonymous struct/union
|
1.12 |
| 11-Sep-2020 |
riastradh | branches: 1.12.2; 1.12.4; pktqueue(9): Use percpu_create to allow early initialization.
Otherwise pktqueues can't be created before all CPUs are detected -- they will have a queue only for the primary CPU, not for others.
This will also be necessary if we want to add CPU hotplug (still need some way to block hotplug during pktq_set_maxlen but it's a start).
|
1.11 |
| 07-Feb-2020 |
thorpej | Use percpu_foreach_xcall() to gather volatile per-cpu counters. These must be serialized against the interrupts / soft-interrupts in which they're manipulated, as well as protected from non-atomic 64-bit memory loads on 32-bit platforms.
|
1.10 |
| 10-Aug-2018 |
msaitoh | branches: 1.10.6; - Fix a bug that drop counter shows incorrect vaule like "net.inet.ip.ifq.drops = 72059810241052672" - Change pktq's length sysctl to uint64_t.
|
1.9 |
| 01-Jun-2017 |
chs | branches: 1.9.8; 1.9.10; remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
|
1.8 |
| 04-Jul-2014 |
ozaki-r | branches: 1.8.2; 1.8.6; 1.8.8; Fix pktq_enqueue for rump
Add _RUMP_NATIVE_ABI to the macro condition for i386 and x86_64 because _RUMPKERNEL is not defined for them. See sys/rump/Makefile.rump.
Found by ATF
|
1.7 |
| 02-Jul-2014 |
ozaki-r | Restore RPS of pktq_enqueue unless _RUMPKERNEL
It's a workaround and would be fixed in rump soon.
ok pooka@
|
1.6 |
| 16-Jun-2014 |
ozaki-r | Move sysctl_pktq_{maxlen,count} to pktqueue.c and make them global
They will be used by bridge.
ok rmind@
|
1.5 |
| 16-Jun-2014 |
ozaki-r | Add 3rd argument to pktq_create to pass sc
It will be used to pass bridge sc for bridge_forward softint.
ok rmind@
|
1.4 |
| 09-Jun-2014 |
rmind | pktqueue: add or fix some comments, remove some header inclusions.
|
1.3 |
| 09-Jun-2014 |
rmind | Restore the assert in RUMP's softint_schedule_cpu() and just ensure curcpu() in the caller.
|
1.2 |
| 09-Jun-2014 |
rmind | Implement pktq_set_maxlen() and let sysctl net.inet.{ip,ip6}.ifq.maxlen be changed on the fly again.
|
1.1 |
| 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.8.8.1 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.8.6.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.8.6.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.8.6.1 |
| 04-Jul-2014 |
tls | file pktqueue.c was added on branch tls-maxphys on 2014-08-20 00:04:34 +0000
|
1.8.2.2 |
| 10-Aug-2014 |
tls | Rebase.
|
1.8.2.1 |
| 04-Jul-2014 |
tls | file pktqueue.c was added on branch tls-earlyentropy on 2014-08-10 06:56:15 +0000
|
1.9.10.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.9.10.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.9.8.1 |
| 06-Sep-2018 |
pgoyette | Sync with HEAD
Resolve a couple of conflicts (result of the uimin/uimax changes)
|
1.10.6.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.12.4.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|
1.12.2.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|