History log of /dragonfly/sys/dev/virtual/virtio/net/if_vtnet.c (Results 1 – 25 of 54)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 7d596a54 05-Nov-2023 Aaron LI <aly@aaronly.me>

libkern: Remove karc4rand() in favor of karc4random_buf()

The latter karc4random_buf()/arc4random_buf() sees more adoptions in
other BSDs as well as the userland. So only reserve the latter and
rem

libkern: Remove karc4rand() in favor of karc4random_buf()

The latter karc4random_buf()/arc4random_buf() sees more adoptions in
other BSDs as well as the userland. So only reserve the latter and
remove the former.

Update the kernel code accordingly to use karc4random_buf() only.

show more ...


# 20bf5099 05-Jan-2023 Matthew Dillon <dillon@apollo.backplane.com>

vtnet - Fix panic when larger MTUs are specified

* Fix a panic when using vtnet with larger MTUs.

Reported-by: daftaupe


Revision tags: v6.4.0, v6.4.0rc1, v6.5.0, v6.2.2, v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2
# e2292763 01-Sep-2020 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Revamp ifsq_watchdog*() a bit

* Add a flags argument to ifsq_watchdog_init() and implement two
flags:

IF_WDOG_ALLTICKS Watchdog callback occurs each second
prior to terminal count,

kernel - Revamp ifsq_watchdog*() a bit

* Add a flags argument to ifsq_watchdog_init() and implement two
flags:

IF_WDOG_ALLTICKS Watchdog callback occurs each second
prior to terminal count, and on terminal
count.

IF_WDOG_LASTTICK Watchdog callback occurs one second prior
to terminal count, and on terminal count.

0 Watchdog callback only occurs on terminal
count.

Note that the ifnet lock is fully serialized when a watchdog
callback is made, so generally speaking to avoid hicups you
only want to use IF_WDOG_LASTTICK.

* This feature allows the watchdog code to flush any tx buffers
(call *_txeof()) that have completed transmission. Many NICs
and virtual NICs don't bother to generate interrupts to clean-up
such buffers when the rings are only lightly loaded.

* Fix spurious vtnet watchdog events on lightly loaded vtnet
interfaces, loosly using the same code that FreeBSD uses
(just txeof from the second-prior watchdog callback and then
check on terminal count).

show more ...


Revision tags: v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0
# 34c7d7dd 29-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Add polling support.

* We need to tear down the interrupts, to reliably stop them from firing,
when enabling polling. So when disabling polling, we need to hope that
we can get all in

if_vtnet - Add polling support.

* We need to tear down the interrupts, to reliably stop them from firing,
when enabling polling. So when disabling polling, we need to hope that
we can get all interrupts set up again, as before.

* When polling, handle the rx and tx virtqueues on the same cpu.

show more ...


# 4bf21f5c 29-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Factor out the virtio_bind_intr() calls into a separate function.

* And most importantly, store the bindings in the vtnet_softc struct, so we
can restore the interrupt <-> virtqueue bin

if_vtnet - Factor out the virtio_bind_intr() calls into a separate function.

* And most importantly, store the bindings in the vtnet_softc struct, so we
can restore the interrupt <-> virtqueue bindings when disabling polling
mode.

show more ...


# 5f772200 29-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Fixup serialized assertion in vtnet_is_link_up().

* We check vtnet_is_link_up() from the config interrupt, which runs with
just the sc->vtnet_slz serializer.


Revision tags: v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1
# 5bd18522 10-Sep-2017 Imre Vadász <imre@vdsz.com>

vtnet - Split up serializers, now has separate rx and tx serializers.

* This uses the MULTI SERIALIZERS MODE in the DragonFly net framework.

* This allows the rx and tx paths of if_vtnet to run in

vtnet - Split up serializers, now has separate rx and tx serializers.

* This uses the MULTI SERIALIZERS MODE in the DragonFly net framework.

* This allows the rx and tx paths of if_vtnet to run in parallel.

show more ...


# 1ede3780 27-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Cleanup ifalt_subque handling a bit.


# 85c6f9e5 26-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Get rid of separate vtnet_{rx,tx}_intr_task functions.

* Just inline them into vtnet_rx_vq_intr and vtnet_tx_vq_intr respectively.


# bce0b587 26-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Fixup previous commit.


# f7e8a8e7 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Use ifsq_watchdog_* functions as the watchdog.

* The existing watchdog code was commented out.


# 36ad0f35 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Don't drop vtnet_slz in some of the virtqueue_notify() calls.

* There are several cases where the vtnet_slz serializer is dropped around
virtqueue_notify() calls, with the hope that thi

if_vtnet - Don't drop vtnet_slz in some of the virtqueue_notify() calls.

* There are several cases where the vtnet_slz serializer is dropped around
virtqueue_notify() calls, with the hope that this allows other cores to
run if_vtnet code in parallel.

* In vtnet_exec_ctrl_cmd(), it shouldn't make a significant performance
difference, and avoids some theoretical race possibilities.

* In the vtnet_init_rx_vq initialization code, it also is irrelevant for
performance, and only complicates things.

* In the vtnet_rxeof() and vtnet_start() cases it might actually be relevant
for performance, so we keep those for now. When changing the driver to
use the MULTI_SERIALIZERS MODE, the serializer dropping can also be
removed in those two cases.

show more ...


# af62becb 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Remove vtnet_tick_ch and vtnet_cfgchg_task from softc struct.

* Forgot to remove the softc variables in the changes
c5f8e1538bcc13f7a39b805bcc5b774780 and 603be9646446bdb4292b6cd2754478

if_vtnet - Remove vtnet_tick_ch and vtnet_cfgchg_task from softc struct.

* Forgot to remove the softc variables in the changes
c5f8e1538bcc13f7a39b805bcc5b774780 and 603be9646446bdb4292b6cd27544788c2c.

* Also remove a leftover taskqueue_drain() call.

show more ...


# 9528162f 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Pass the vtnet serializer in ether_ifattach().

* This is likely just an intermediate step, the plan is to eventually use
the MULTI SERIALIZER MODE.


# 603be964 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - Remove unused vtnet_tick() code.


# c5f8e153 25-Mar-2018 Imre Vadász <imre@vdsz.com>

if_vtnet - No need to use the taskqueue to run vtnet_update_link_status().


# 099c4d8e 22-Mar-2018 Imre Vadász <imre@vdsz.com>

virtio - Get rid of unused flags option in virtio_alloc_virtqueues().


# 6ea187fd 24-Mar-2018 Imre Vadász <imre@vdsz.com>

virtio - Explicitly teardown interrupts in driver detach methods.

* This seems to be an easy way to avoid potential races during driver
detachements.


# f852cf82 13-Sep-2017 Imre Vadász <imre@vdsz.com>

virtio - Move virtqueue_pending() checks into the child driver.

* This makes it easier for now, to deal with virtqueue locking, when
multiple virtqueues are mapped to a single interrupt vector.


# b817dce2 12-Sep-2017 Imre Vadász <imre@vdsz.com>

virtio - Get rid of config_change devmethod, treat like vq interrupts.


# 9d96478c 11-Sep-2017 Imre Vadász <imre@vdsz.com>

virtio - Specify handler and argument in bind_intr, instead of vq alloc.


# 2f2405bb 07-Sep-2017 Imre Vadász <imre@vdsz.com>

virtio - Refactor virtio bus API, to untangle virtuques from IRQ allocation.

* These API changes allow each virtio device driver to explicitly control
the assignment of virtqueues to IRQ vectors.

virtio - Refactor virtio bus API, to untangle virtuques from IRQ allocation.

* These API changes allow each virtio device driver to explicitly control
the assignment of virtqueues to IRQ vectors.

* This allows explicitly assigning IRQ vectors to cpus. And virtio device
drivers also get to know, on which cpu each virtqueue interrupt is
running.

show more ...


# d3d27d23 22-Jan-2018 zrj <zrj@dragonflybsd.org>

Revert "kernel: Disable attributes that take no effect."

This reverts commit 191430ddf0486f992e75ff14effbb5a69e1da2bd.

Needs more checking.


# 191430dd 21-Jan-2018 zrj <rimvydas.jasinskas@gmail.com>

kernel: Disable attributes that take no effect.

Both gcc50 and gcc80 ignore these attributes:
warning: ignoring attribute 'aligned' because it conflicts with attribute 'packed' [-Wattributes]
No dif

kernel: Disable attributes that take no effect.

Both gcc50 and gcc80 ignore these attributes:
warning: ignoring attribute 'aligned' because it conflicts with attribute 'packed' [-Wattributes]
No differences for final objects.

show more ...


# d07f5241 17-Oct-2017 Imre Vadász <imre@vdsz.com>

if_vtnet - Handle missing IFCAP_VLAN_* flags nicer. Comment IFCAP_LOR stuff.

* The if_vtnet driver used to define the IFCAP_LRO, IFCAP_VLAN_HWFILTER and
IFCAP_VLAN_HWTSO flags itself, to make the

if_vtnet - Handle missing IFCAP_VLAN_* flags nicer. Comment IFCAP_LOR stuff.

* The if_vtnet driver used to define the IFCAP_LRO, IFCAP_VLAN_HWFILTER and
IFCAP_VLAN_HWTSO flags itself, to make the code from FreeBSD build.
Instead define IFCAP_VLAN_HWFILTER and IFCAP_VLAN_HWTSO to 0, when they
are not defined already. This allows the code to build, but all checks
for the flags fail. (Inspired by the vmxnet3 driver port).

* The IFCAP_LRO flag is unavailable in DragonFly, but the LRO offload seems
to work somehow.

* According to the virtio specification, LRO support should be possible
without rx checksum support as well.

show more ...


123