|
Revision tags: release/13.4.0-p5, release/13.5.0-p1, release/14.2.0-p3, release/13.5.0, release/14.2.0-p2, release/14.1.0-p8, release/13.4.0-p4, release/14.1.0-p7, release/14.2.0-p1, release/13.4.0-p3, release/14.2.0, release/13.4.0, release/14.1.0, release/13.3.0, release/14.0.0 |
|
| #
685dc743 |
| 16-Aug-2023 |
Warner Losh <[email protected]> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
4d846d26 |
| 10-May-2023 |
Warner Losh <[email protected]> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause.
Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
show more ...
|
|
Revision tags: release/13.2.0 |
|
| #
ce12afaa |
| 05-Apr-2023 |
Mark Johnston <[email protected]> |
netmap: Fix queue stalls with generic interfaces
In emulated mode, the FreeBSD netmap port attempts to perform zero-copy transmission. This works as follows: the kernel ring is populated with mbuf
netmap: Fix queue stalls with generic interfaces
In emulated mode, the FreeBSD netmap port attempts to perform zero-copy transmission. This works as follows: the kernel ring is populated with mbuf headers to which netmap buffers are attached. When transmitting, the mbuf refcount is initialized to 2, and when the counter value has been decremented to 1 netmap infers that the driver has freed the mbuf and thus transmission is complete.
This scheme does not generalize to the situation where netmap is attaching to a software interface which may transmit packets among multiple "queues", as is the case with bridge or lagg interfaces. In that case, we would be relying on backing hardware drivers to free transmitted mbufs promptly, but this isn't guaranteed; a driver may reasonably defer freeing a small number of transmitted buffers indefinitely. If such a buffer ends up at the tail of a netmap transmit ring, further transmits can end up blocked indefinitely.
Fix the problem by removing the zero-copy scheme (which is also not implemented in the Linux port of netmap). Instead, the kernel ring is populated with regular mbuf clusters into which netmap buffers are copied by nm_os_generic_xmit_frame(). The refcounting scheme is preserved, and this lets us avoid allocating a fresh cluster per transmitted packet in the common case. If the transmit ring is full, a callout is used to free the "stuck" mbuf, avoiding the queue deadlock described above.
Furthermore, when recycling mbuf clusters, be sure to fully reinitialize the mbuf header instead of simply re-setting M_PKTHDR. Some software interfaces, like if_vlan, may set fields in the header which should be reset before the mbuf is reused.
Reviewed by: vmaffione MFC after: 1 month Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38065
show more ...
|
| #
22bf2a47 |
| 11-Mar-2023 |
Vincenzo Maffione <[email protected]> |
netmap: get rid of WNA() macro
MFC after: 7 days
|
| #
e330262f |
| 12-Jan-2023 |
Justin Hibbits <[email protected]> |
Mechanically convert netmap(4) to IfAPI
Reviewed by: vmaffione, zlei Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D37814
|
| #
df40e30c |
| 23-Jan-2023 |
Mark Johnston <[email protected]> |
netmap: Try to count packet drops in emulated mode
Right now we have little visibility into packet drops within netmap. Start trying to make packet loss issues more visible by counting queue drops i
netmap: Try to count packet drops in emulated mode
Right now we have little visibility into packet drops within netmap. Start trying to make packet loss issues more visible by counting queue drops in the transmit path, and in the input path for interfaces running in emulated mode, where we place received packets in a bounded software queue that is processed by rxsync.
Reviewed by: vmaffione MFC after: 1 week Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38064
show more ...
|
| #
539437c8 |
| 23-Jan-2023 |
Mark Johnston <[email protected]> |
netmap: Fix a queue length check in the generic port rx path
The check is ok by default, since the default value of netmap_generic_ringsize is 1024. But we should check against the configured "ring
netmap: Fix a queue length check in the generic port rx path
The check is ok by default, since the default value of netmap_generic_ringsize is 1024. But we should check against the configured "ring" size.
Reviewed by: vmaffione MFC after: 1 week Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38062
show more ...
|
| #
3da494d3 |
| 24-Dec-2022 |
Vincenzo Maffione <[email protected]> |
netmap: drop compatibility FreeBSD code
Netmap users on FreeBSD are not supposed to import code from the github netmap repository anymore. They should use the code that is available in the src repo.
netmap: drop compatibility FreeBSD code
Netmap users on FreeBSD are not supposed to import code from the github netmap repository anymore. They should use the code that is available in the src repo. We can therefore drop the compatibility code.
MFC after: 7 days
show more ...
|
|
Revision tags: release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0 |
|
| #
45c67e8f |
| 02-Apr-2021 |
Vincenzo Maffione <[email protected]> |
netmap: several typo fixes
No functional changes intended.
|
| #
a6d768d8 |
| 29-Mar-2021 |
Vincenzo Maffione <[email protected]> |
netmap: add kernel support for the "offsets" feature
This feature enables applications to ask netmap to transmit or receive packets starting at a user-specified offset from the beginning of the netm
netmap: add kernel support for the "offsets" feature
This feature enables applications to ask netmap to transmit or receive packets starting at a user-specified offset from the beginning of the netmap buffer. This is meant to ease those packet manipulation operations such as pushing or popping packet headers, that may be useful to implement software switches, routers and other packet processors. To use the feature, drivers (e.g., iflib, vtnet, etc.) must have explicit support. This change does not add support for any driver, but introduces the necessary kernel changes. However, offsets support is already included for VALE ports and pipes.
show more ...
|
|
Revision tags: release/12.2.0, release/11.4.0, release/12.1.0 |
|
| #
484456b2 |
| 28-Oct-2019 |
Vincenzo Maffione <[email protected]> |
netmap: enter NET_EPOCH on generic txsync
After r353292, netmap generic adapter on if_vlan interfaces panics on asserting the NET_EPOCH. In more detail, this happens when nm_os_generic_xmit_frame()
netmap: enter NET_EPOCH on generic txsync
After r353292, netmap generic adapter on if_vlan interfaces panics on asserting the NET_EPOCH. In more detail, this happens when nm_os_generic_xmit_frame() is called, that is in the generic txsync routine. Fix the issue by entering the NET_EPOCH during the generic txsync. We amortize the cost of entering/exiting over a whole batch of transmissions.
PR: 241489 Reported by: Aleksandr Fedorov <[email protected]>
show more ...
|
| #
d7143780 |
| 13-Jul-2019 |
Vincenzo Maffione <[email protected]> |
netmap: fix bug introduced by r349752
r349752 introduced a NULL pointer reference bug in the emulated netmap code.
Reported by: lwhsu MFC after: 3 days
|
|
Revision tags: release/11.3.0 |
|
| #
5fe59a51 |
| 04-Jul-2019 |
Vincenzo Maffione <[email protected]> |
netmap: fix kernel pointer printing in netmap_generic.c
Print the adapter name rather than the address of the adapter to avoid kernel address leakage.
PR: Bug 238642 Submitted by: Fuqian Huang <hu
netmap: fix kernel pointer printing in netmap_generic.c
Print the adapter name rather than the address of the adapter to avoid kernel address leakage.
PR: Bug 238642 Submitted by: Fuqian Huang <[email protected]> Reviewed by: vmaffione MFC after: 1 week
show more ...
|
| #
75f4f3ed |
| 05-Feb-2019 |
Vincenzo Maffione <[email protected]> |
netmap: refactor logging macros and pipes
Changelist: - Replace ND, D and RD macros with nm_prdis, nm_prinf, nm_prerr and nm_prlim, to avoid possible naming conflicts. - Add netmap_kri
netmap: refactor logging macros and pipes
Changelist: - Replace ND, D and RD macros with nm_prdis, nm_prinf, nm_prerr and nm_prlim, to avoid possible naming conflicts. - Add netmap_krings_mode_commit() helper function and use that to reduce code duplication. - Refactor pipes control code to export some functions that can be reused by the veth driver (on Linux) and epair(4). - Add check to reject API requests with version less than 11. - Small code refactoring for the null adapter.
MFC after: 1 week
show more ...
|
|
Revision tags: release/12.0.0 |
|
| #
b6e66be2 |
| 05-Dec-2018 |
Vincenzo Maffione <[email protected]> |
netmap: align codebase to the current upstream (760279cfb2730a585)
Changelist: - Replace netmap passthrough host support with a more general mechanism to call TXSYNC/RXSYNC from an in-kernel e
netmap: align codebase to the current upstream (760279cfb2730a585)
Changelist: - Replace netmap passthrough host support with a more general mechanism to call TXSYNC/RXSYNC from an in-kernel event-loop. No kernel threads are used to use this feature: the application is required to spawn a thread (or a process) and issue a SYNC_KLOOP_START (NIOCCTRL) command in the thread body. The kernel loop is executed by the ioctl implementation, which returns to userspace only when a different thread calls SYNC_KLOOP_STOP or the netmap file descriptor is closed. - Update the if_ptnet driver to cope with the new data structures, and prune all the obsolete ptnetmap code. - Add support for "null" netmap ports, useful to allocate netmap_if, netmap_ring and netmap buffers to be used by specialized applications (e.g. hypervisors). TXSYNC/RXSYNC on these ports have no effect. - Various fixes and code refactoring.
Sponsored by: Sunny Valley Networks Differential Revision: https://reviews.freebsd.org/D18015
show more ...
|
| #
2a7db7a6 |
| 23-Oct-2018 |
Vincenzo Maffione <[email protected]> |
netmap: align codebase to the current upstream (sha 8374e1a7e6941)
Changelist: - Move large parts of VALE code to a new file and header netmap_bdg.[ch]. This is useful to reuse the code wi
netmap: align codebase to the current upstream (sha 8374e1a7e6941)
Changelist: - Move large parts of VALE code to a new file and header netmap_bdg.[ch]. This is useful to reuse the code within upcoming projects. - Improvements and bug fixes to pipes and monitors. - Introduce nm_os_onattach(), nm_os_onenter() and nm_os_onexit() to handle differences between FreeBSD and Linux. - Introduce some new helper functions to handle more host rings and fake rings (netmap_all_rings(), netmap_real_rings(), ...) - Added new sysctl to enable/disable hw checksum in emulated netmap mode. - nm_inject: add support for NS_MOREFRAG
Approved by: gnn (mentor) Differential Revision: https://reviews.freebsd.org/D17364
show more ...
|
|
Revision tags: release/11.2.0 |
|
| #
cfa866f6 |
| 18-May-2018 |
Matt Macy <[email protected]> |
netmap: pull fix for 32-bit support from upstream
Approved by: sbruno
|
| #
2ff91c17 |
| 12-Apr-2018 |
Vincenzo Maffione <[email protected]> |
netmap: align codebase to the current upstream (commit id 3fb001303718146)
Changelist: - Turn tx_rings and rx_rings arrays into arrays of pointers to kring structs. This patch includes fix
netmap: align codebase to the current upstream (commit id 3fb001303718146)
Changelist: - Turn tx_rings and rx_rings arrays into arrays of pointers to kring structs. This patch includes fixes for ixv, ixl, ix, re, cxgbe, iflib, vtnet and ptnet drivers to cope with the change. - Generalize the nm_config() callback to accept a struct containing many parameters. - Introduce NKR_FAKERING to support buffers sharing (used for netmap pipes) - Improved API for external VALE modules. - Various bug fixes and improvements to the netmap memory allocator, including support for externally (userspace) allocated memory. - Refactoring of netmap pipes: now linked rings share the same netmap buffers, with a separate set of kring pointers (rhead, rcur, rtail). Buffer swapping does not need to happen anymore. - Large refactoring of the control API towards an extensible solution; the goal is to allow the addition of more commands and extension of existing ones (with new options) without the need of hacks or the risk of running out of configuration space. A new NIOCCTRL ioctl has been added to handle all the requests of the new control API, which cover all the functionalities so far supported. The netmap API bumps from 11 to 12 with this patch. Full backward compatibility is provided for the old control command (NIOCREGIF), by means of a new netmap_legacy module. Many parts of the old netmap.h header has now been moved to netmap_legacy.h (included by netmap.h).
Approved by: hrs (mentor)
show more ...
|
| #
4f80b14c |
| 09-Apr-2018 |
Vincenzo Maffione <[email protected]> |
netmap: align codebase to upstream version v11.4
Changelist: - remove unused nkr_slot_flags - new nm_intr adapter callback to enable/disable interrupts - remove unused sysctls and document the
netmap: align codebase to upstream version v11.4
Changelist: - remove unused nkr_slot_flags - new nm_intr adapter callback to enable/disable interrupts - remove unused sysctls and document the other sysctls - new infrastructure to support NS_MOREFRAG for NIC ports - support for external memory allocator (for now linux-only), including linux-specific changes in common headers - optimizations within netmap pipes datapath - improvements on VALE control API - new nm_parse() helper function in netmap_user.h - various bug fixes and code clean up
Approved by: hrs (mentor)
show more ...
|
| #
718cf2cc |
| 27-Nov-2017 |
Pedro F. Giffuni <[email protected]> |
sys/dev: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error
sys/dev: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
show more ...
|
| #
e8fd18f3 |
| 09-Oct-2017 |
Gleb Smirnoff <[email protected]> |
Shorten list of arguments to mbuf external storage freeing function.
All of these arguments are stored in m_ext, so there is no reason to pass them in the argument list. Not all functions need the
Shorten list of arguments to mbuf external storage freeing function.
All of these arguments are stored in m_ext, so there is no reason to pass them in the argument list. Not all functions need the second argument, some don't even need the first one. The second argument lives in next cache line, so not dereferencing it is a performance gain. This was discovered in sendfile(2), which will be covered by next commits.
The second goal of this commit is to bring even more flexibility to m_ext mbufs, allowing to create more fields in m_ext, opaque to the generic mbuf code, and potentially set and dereferenced by subsystems.
Reviewed by: gallatin, kbowling Differential Revision: https://reviews.freebsd.org/D12615
show more ...
|
|
Revision tags: release/10.4.0 |
|
| #
a02dbe4c |
| 21-Jul-2017 |
Luiz Otavio O Souza <[email protected]> |
Do not allow the use of the loopback interface in netmap.
The generic support in netmap send the packets using if_transmit() and the loopback do not support packets coming from if_transmit()/if_star
Do not allow the use of the loopback interface in netmap.
The generic support in netmap send the packets using if_transmit() and the loopback do not support packets coming from if_transmit()/if_start().
This avoids the use of the loopback interface and the subsequent crash that happens when the application send packets to the loopback interface.
Details in: https://github.com/luigirizzo/netmap/issues/322 Reported by: Vincenzo Maffione <[email protected]> Sponsored by: Rubicon Communications, LLC (Netgate)
show more ...
|
|
Revision tags: release/11.1.0 |
|
| #
c3e9b4db |
| 12-Jun-2017 |
Luiz Otavio O Souza <[email protected]> |
Update the current version of netmap to bring it in sync with the github version.
This commit contains mostly refactoring, a few fixes and minor added functionality.
Submitted by: Vincenzo Maffione
Update the current version of netmap to bring it in sync with the github version.
This commit contains mostly refactoring, a few fixes and minor added functionality.
Submitted by: Vincenzo Maffione <v.maffione at gmail.com> Requested by: many Sponsored by: Rubicon Communications, LLC (Netgate)
show more ...
|
| #
4c55b4e8 |
| 14-Feb-2017 |
Mark Johnston <[email protected]> |
Unbreak the gcc build of netmap.
This fixes several LINT targets.
Reviewed by: Vincenzo Maffione
|
| #
25a33410 |
| 12-Jan-2017 |
Sean Bruno <[email protected]> |
Fix panic on mb_free_ext() due to NULL destructor.
This used to happen because of the SET_MBUF_DESTRUCTOR() called on unregif.
Submitted by: Vincenzo Maffione <[email protected]>
|