]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Introduce NETMAP support in ENA
authormw <mw@FreeBSD.org>
Thu, 31 Oct 2019 15:51:18 +0000 (15:51 +0000)
committermw <mw@FreeBSD.org>
Thu, 31 Oct 2019 15:51:18 +0000 (15:51 +0000)
commitfb3decade7d8f653e9953fc8f2f2963728b60973
tree2944cd8b611fcc4774cadded435ecc2fbfcb0abe
parent16d17de23456c895bb4de4e2e32061b79c278a58
Introduce NETMAP support in ENA

Mock implementation of NETMAP routines is located in ena_netmap.c/.h
files. All code is protected under the DEV_NETMAP macro. Makefile was
updated with files and flag.

As ENA driver provide own implementations of (un)likely it must be
undefined before including NETMAP headers.

ena_netmap_attach function is called on the end of NIC attach. It fills
structure with NIC configuration and callbacks. Then provides it to
netmap_attach. Similarly netmap_detach is called during ena_detach.

Three callbacks are used.
nm_register is implemented by ena_netmap_reg. It is called when user
space application open or close NIC in NETMAP mode. Current action is
recognized based on onoff parameter: true means on and false off. As
NICs rings need to be reconfigured ena_down and ena_up are reused.
When user space application wants to receive new packets from NIC
nm_rxsync is called, and when there are new packets ready for Tx
nm_txsync is called.

Differential Revision: https://reviews.freebsd.org/D21934
Submitted by: Rafal Kozik <rk@semihalf.com>
              Michal Krawczyk <mk@semihalf.com>
Obtained from: Semihalf
Sponsored by:  Amazon, Inc.
sys/contrib/ena-com/ena_plat.h
sys/dev/ena/ena.c
sys/dev/ena/ena_netmap.c [new file with mode: 0644]
sys/dev/ena/ena_netmap.h [new file with mode: 0644]
sys/modules/ena/Makefile