#
3c4ad300 |
| 17-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r358000 through r358048.
|
#
10108cb6 |
| 17-Feb-2020 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Partially revert VNET change and expand VNET structure.
Revert parts of r353274 replacing vnet_state with a shutdown flag.
Not having the state flag for the current SI_SUB_* makes it harder to debu
Partially revert VNET change and expand VNET structure.
Revert parts of r353274 replacing vnet_state with a shutdown flag.
Not having the state flag for the current SI_SUB_* makes it harder to debug kernel or module panics related to VNET bringup or teardown. Not having the state also does not allow us to check for other dependency levels between components, e.g. for moving interfaces.
Expand the VNET structure with the new boolean flag indicating that we are doing a shutdown of a given vnet and update the vnet magic cookie for the change.
Update libkvm to compile with a bool in the kernel struct.
Bump __FreeBSD_version for (external) module builds to more easily detect the change.
Reviewed by: hselasky MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D23097
show more ...
|
#
bc02c18c |
| 07-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r357408 through r357661.
|
#
cd0be8b2 |
| 06-Feb-2020 |
Jeff Roberson <jeff@FreeBSD.org> |
Temporarily force IFF_NEEDSEPOCH until drivers have been resolved.
Recent network epoch changes have left some drivers unexpectedly broken and there is not yet a consensus on the correct fix. This
Temporarily force IFF_NEEDSEPOCH until drivers have been resolved.
Recent network epoch changes have left some drivers unexpectedly broken and there is not yet a consensus on the correct fix. This is patch is a minor performance impact until we can agree on the correct path forward.
Reviewed by: core, network, imp, glebius, hselasky Differential Revision: https://reviews.freebsd.org/D23515
show more ...
|
#
53d2936c |
| 20-Jan-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r356848 through r356919.
|
#
2888eb40 |
| 18-Jan-2020 |
Eugene Grosbein <eugen@FreeBSD.org> |
ifa_maintain_loopback_route: adjust debugging output
Correction after r333476:
- write this as LOG_DEBUG again instead of LOG_INFO; - get back function name into the message; - error may be ESRCH i
ifa_maintain_loopback_route: adjust debugging output
Correction after r333476:
- write this as LOG_DEBUG again instead of LOG_INFO; - get back function name into the message; - error may be ESRCH if an address is removed in process (by carp f.e.), not only ENOENT; - expression complexity grows, so try making it more readable.
MFC after: 1 week
show more ...
|
#
2a4bd982 |
| 15-Jan-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Introduce NET_EPOCH_CALL() macro and use it everywhere where we free data based on the network epoch. The macro reverses the argument order of epoch_call(9) - first function, then its argument. NFC
|
#
97168be8 |
| 15-Jan-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Mechanically substitute assertion of in_epoch(net_epoch_preempt) to NET_EPOCH_ASSERT(). NFC
|
#
3264dcad |
| 15-Jan-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
- Move global network epoch definition to epoch.h, as more different subsystems tend to need to know about it, and including if_var.h is huge header pollution for them. Polluting possible non-ne
- Move global network epoch definition to epoch.h, as more different subsystems tend to need to know about it, and including if_var.h is huge header pollution for them. Polluting possible non-network users with single symbol seems much lesser evil. - Remove non-preemptible network epoch. Not used yet, and unlikely to get used in close future.
show more ...
|
#
c7bab2a7 |
| 09-Jan-2020 |
Kyle Evans <kevans@FreeBSD.org> |
if_vmove: return proper error status
if_vmove can fail if it lost a race and the vnet's already been moved. The callers (and their callers) can generally cope with this, but right now success is ass
if_vmove: return proper error status
if_vmove can fail if it lost a race and the vnet's already been moved. The callers (and their callers) can generally cope with this, but right now success is assumed. Plumb out the ENOENT from if_detach_internal if it happens so that the error's properly reported to userland.
Reviewed by: bz, kp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D22780
show more ...
|
#
5fcb2832 |
| 02-Jan-2020 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
Plug loopback idaddr refcount leak.
Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D22980
|
#
3f197b13 |
| 20-Dec-2019 |
Mark Johnston <markj@FreeBSD.org> |
Deduplicate code between if_delgroup() and if_delgroups().
Fix some style in if_addgroup(). No functional change intended.
Reviewed by: hselasky MFC after: 2 weeks Sponsored by: The FreeBSD Founda
Deduplicate code between if_delgroup() and if_delgroups().
Fix some style in if_addgroup(). No functional change intended.
Reviewed by: hselasky MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D22892
show more ...
|
#
718ef55e |
| 20-Dec-2019 |
Mark Johnston <markj@FreeBSD.org> |
Fix a memory leak in if_delgroups() introduced in r334118.
PR: 242712 Submitted by: ghuckriede@blackberry.com MFC after: 3 days
|
#
3232273f |
| 25-Nov-2019 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Allow kernel to compile without BPF.
r297816 added some bpf magic for VIMAGE unconditionally which no longer allows kernels to compile without bpf (but with other networking). Add the missing ifdef
Allow kernel to compile without BPF.
r297816 added some bpf magic for VIMAGE unconditionally which no longer allows kernels to compile without bpf (but with other networking). Add the missing ifdef checks and allow a kernel to compile without bpf again.
PR: 242136 Reported by: dave mischler.com MFC after: 2 weeks
show more ...
|
#
7993a104 |
| 23-Nov-2019 |
Conrad Meyer <cem@FreeBSD.org> |
Add explicit SI_SUB_EPOCH
Add explicit SI_SUB_EPOCH, after SI_SUB_TASKQ and before SI_SUB_SMP (EARLY_AP_STARTUP). Rename existing "SI_SUB_TASKQ + 1" to SI_SUB_EPOCH.
epoch(9) consumers cannot epoc
Add explicit SI_SUB_EPOCH
Add explicit SI_SUB_EPOCH, after SI_SUB_TASKQ and before SI_SUB_SMP (EARLY_AP_STARTUP). Rename existing "SI_SUB_TASKQ + 1" to SI_SUB_EPOCH.
epoch(9) consumers cannot epoch_alloc() before SI_SUB_EPOCH:SI_ORDER_SECOND, but likely should allocate before SI_SUB_SMP. Prior to this change, consumers (well, epoch itself, and net/if.c) just open-coded the SI_SUB_TASKQ + 1 order to match epoch.c, but this was fragile.
Reviewed by: mmacy Differential Revision: https://reviews.freebsd.org/D22503
show more ...
|
#
9352fab6 |
| 13-Nov-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
In if_siocaddmulti() enter VNET.
Reported & tested by: garga
|
Revision tags: release/12.1.0 |
|
#
0839aa5c |
| 29-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
There is a long standing problem with multicast programming for NICs and IPv6. With IPv6 we may call if_addmulti() in context of processing of an incoming packet. Usually this is interrupt context.
There is a long standing problem with multicast programming for NICs and IPv6. With IPv6 we may call if_addmulti() in context of processing of an incoming packet. Usually this is interrupt context. While most of the NIC drivers are able to reprogram multicast filters without sleeping, some of them can't. An example is e1000 family of drivers. With iflib conversion the problem was somewhat hidden. Iflib processes packets in private taskqueue, so going to sleep doesn't trigger an assertion. However, the sleep would block operation of the driver and following incoming packets would fill the ring and eventually would start being dropped. Enabling epoch for the full time of a packet processing again started to trigger assertions for e1000.
Fix this problem once and for all using a general taskqueue to call if_ioctl() method in all cases when if_addmulti() is called in a non sleeping context. Note that nobody cares about returned value.
Reviewed by: hselasky, kib Differential Revision: https://reviews.freebsd.org/D22154
show more ...
|
#
19e09f44 |
| 21-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Remove obsoleted KPIs that were used to access interface address lists.
|
#
7790c8c1 |
| 17-Oct-2019 |
Conrad Meyer <cem@FreeBSD.org> |
Split out a more generic debugnet(4) from netdump(4)
Debugnet is a simplistic and specialized panic- or debug-time reliable datagram transport. It can drive a single connection at a time and is cur
Split out a more generic debugnet(4) from netdump(4)
Debugnet is a simplistic and specialized panic- or debug-time reliable datagram transport. It can drive a single connection at a time and is currently unidirectional (debug/panic machine transmit to remote server only).
It is mostly a verbatim code lift from netdump(4). Netdump(4) remains the only consumer (until the rest of this patch series lands).
The INET-specific logic has been extracted somewhat more thoroughly than previously in netdump(4), into debugnet_inet.c. UDP-layer logic and up, as much as possible as is protocol-independent, remains in debugnet.c. The separation is not perfect and future improvement is welcome. Supporting INET6 is a long-term goal.
Much of the diff is "gratuitous" renaming from 'netdump_' or 'nd_' to 'debugnet_' or 'dn_' -- sorry. I thought keeping the netdump name on the generic module would be more confusing than the refactoring.
The only functional change here is the mbuf allocation / tracking. Instead of initiating solely on netdump-configured interface(s) at dumpon(8) configuration time, we watch for any debugnet-enabled NIC for link activation and query it for mbuf parameters at that time. If they exceed the existing high-water mark allocation, we re-allocate and track the new high-water mark. Otherwise, we leave the pre-panic mbuf allocation alone. In a future patch in this series, this will allow initiating netdump from panic ddb(4) without pre-panic configuration.
No other functional change intended.
Reviewed by: markj (earlier version) Some discussion with: emaste, jhb Objection from: marius Differential Revision: https://reviews.freebsd.org/D21421
show more ...
|
#
b46d70fd |
| 16-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
do_link_state_change() is executed in taskqueue context and in general is allowed to sleep. Don't enter the epoch for the whole duration. If some event handlers need the epoch, they should handle t
do_link_state_change() is executed in taskqueue context and in general is allowed to sleep. Don't enter the epoch for the whole duration. If some event handlers need the epoch, they should handle that theirselves.
Discussed with: hselasky
show more ...
|
#
270b83b9 |
| 15-Oct-2019 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
The two functions ifnet_byindex() and ifnet_byindex_locked() are exactly the same after the network stack was epochified. Merge the two into one function and cleanup all uses of ifnet_byindex_locked(
The two functions ifnet_byindex() and ifnet_byindex_locked() are exactly the same after the network stack was epochified. Merge the two into one function and cleanup all uses of ifnet_byindex_locked().
While at it: - Add branch prediction macros. - Make sure the ifnet pointer is only deferred once, also when code optimisation is disabled.
Sponsored by: Mellanox Technologies
show more ...
|
#
93cfeb0e |
| 15-Oct-2019 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
Exclude the network link eventhandler from epochification after r353292.
This fixes the following assert when "options RATELIMIT" is used: panic() malloc() sysctl_add_oid() tcp_rl_ifnet_link() do_li
Exclude the network link eventhandler from epochification after r353292.
This fixes the following assert when "options RATELIMIT" is used: panic() malloc() sysctl_add_oid() tcp_rl_ifnet_link() do_link_state_change() taskqueue_run_locked()
Sponsored by: Mellanox Technologies
show more ...
|
#
416a1d1e |
| 14-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
if_delmulti() is never called without ifp argument, assert this instead of doing a useless search through interfaces.
|
#
fb3fc771 |
| 11-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Add two extra functions that basically give count of addresses on interface. Such function could been implemented on top of the if_foreach_llm?addr(), but several drivers need counting, so avoid cop
Add two extra functions that basically give count of addresses on interface. Such function could been implemented on top of the if_foreach_llm?addr(), but several drivers need counting, so avoid copy-n-paste inside the drivers.
show more ...
|
#
826857c8 |
| 11-Oct-2019 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Provide new KPI for network drivers to access lists of interface addresses. The KPI doesn't reveal neither how addresses are stored, how the access to them is synchronized, neither reveal struct ifa
Provide new KPI for network drivers to access lists of interface addresses. The KPI doesn't reveal neither how addresses are stored, how the access to them is synchronized, neither reveal struct ifaddr and struct ifmaddr.
Reviewed by: gallatin, erj, hselasky, philip, stevek Differential Revision: https://reviews.freebsd.org/D21943
show more ...
|