History log of /openbsd/sys/dev/pci/if_vmx.c (Results 1 – 25 of 87)
Revision Date Author Comments
# 5dcde5c3 07-Jun-2024 jan <jan@openbsd.org>

Use TCP Large Receive Offload in vmx(4).

tested by Hrvoje Popovski and bluhm@

ok bluhm@


# 1171ef0c 21-May-2024 jan <jan@openbsd.org>

Refactor vmx(4) receive offloading.

- avoid combination of M_TCP_CSUM_IN_OK and M_UDP_CSUM_IN_OK
- remove useless letoh32() calls
- simplify the IPv4 checksum flag check

ok bluhm@


# 0f9e9ec2 13-May-2024 jsg <jsg@openbsd.org>

remove prototypes with no matching function
ok mpi@


# 7f8ccd64 07-May-2024 jan <jan@openbsd.org>

Additional check for TSO packets with 0 MSS.

Tested by bluhm

ok bluhm@


# 2964abb4 02-Apr-2024 jan <jan@openbsd.org>

Implement and enable TSO in vmx(4)

Tested with IPv4/IPv6 and vlan(4).

ok jmatthew@


# 1bd4ef1c 29-Feb-2024 jan <jan@openbsd.org>

Add missing include of vlan.h in vmx(4).

ok bluhm@


# e9542ffc 15-Feb-2024 jan <jan@openbsd.org>

vmx(4): Add TCP/UDP Checksum Offloading for IPv4/6

ok jmatthew@, bluhm@


# d2ab39c1 09-Feb-2024 jan <jan@openbsd.org>

vmx(4): add missing NVLAN checks

ok bluhm@


# cf96265b 10-Nov-2023 bluhm <bluhm@openbsd.org>

Make ifq and ifiq interface MP safe.

Rename ifq_set_maxlen() to ifq_init_maxlen(). This function neither
uses WRITE_ONCE() nor a mutex and is called before the ifq mutex
is initialized. The new na

Make ifq and ifiq interface MP safe.

Rename ifq_set_maxlen() to ifq_init_maxlen(). This function neither
uses WRITE_ONCE() nor a mutex and is called before the ifq mutex
is initialized. The new name expresses that it should be used only
during interface attach when there is no concurrency.

Protect ifq_len(), ifq_empty(), ifiq_len(), and ifiq_empty() with
READ_ONCE(). They can be used without lock as they only read a
single integer.

OK dlg@

show more ...


# 25640f7c 30-Jul-2023 dlg <dlg@openbsd.org>

move rx head register writes out of rx completions and into rxfill

rxfill is always called after rx completions are done anyway, and
it makes more sense to give the hypervisor an update about new mb

move rx head register writes out of rx completions and into rxfill

rxfill is always called after rx completions are done anyway, and
it makes more sense to give the hypervisor an update about new mbufs
on the ring after we put them there.

show more ...


# 90b61f46 30-Jul-2023 dlg <dlg@openbsd.org>

fix generation handling on rx ring wraparound.


# df4baabe 30-Jul-2023 dlg <dlg@openbsd.org>

white space fixes, no functional change


# a7006e06 30-Jul-2023 dlg <dlg@openbsd.org>

add bus_dmamap_sync() ops around the rx handling.


# c41cd7be 30-Jul-2023 dlg <dlg@openbsd.org>

clear oactive on each txq, not just txq 0 when the iface goes up or down

if the driver did get into a situation where the tx rings were out
of sync (which should be fixed now) and were stuck oactive

clear oactive on each txq, not just txq 0 when the iface goes up or down

if the driver did get into a situation where the tx rings were out
of sync (which should be fixed now) and were stuck oactive, taking
the interface down and up didnt clear that on anything except ring
0.

show more ...


# 69cf50f8 30-Jul-2023 dlg <dlg@openbsd.org>

add bus_dmamap_syncs around tx ring handling.

this copies the dmamem wrapper from ixl (which has been copied
around lots of other places too) so it makes the bus_dma ops around
them more consistent

add bus_dmamap_syncs around tx ring handling.

this copies the dmamem wrapper from ixl (which has been copied
around lots of other places too) so it makes the bus_dma ops around
them more consistent with other drivers. before this vmx would use
the bus dma api to allocate physical memory, but then free the
dmamap so it wasnt available for use with bus_dmamap_sync().

show more ...


# 535a77a4 30-Jul-2023 dlg <dlg@openbsd.org>

tighten up the tx start/completion handling of the producer and consumer.

the hypervisor obvious snoops the descriptor rings like crazy, and
it can run and complete transmit of packets as soon as th

tighten up the tx start/completion handling of the producer and consumer.

the hypervisor obvious snoops the descriptor rings like crazy, and
it can run and complete transmit of packets as soon as the ownership
bit is set on the descriptor and before the txh register is updated
with the producer index. txintr would only process tx completions
if the producer and consumer indexes the driver maintains were
different, but would then go and pop every packet the hardware said
was done off the ring.

this changes txintr so it will only iterate over packets between
the driver consumer and producer indexes. also, have the start code
update the producer before flipping the ownership bit in the ring.
this keeps the start and intr code in sync.

show more ...


# 7678612e 30-Jul-2023 dlg <dlg@openbsd.org>

post tx ring producer updates to each rings own txh register.

before this change all the different ring producer updates were
posted to ring 0.


# b8b3f978 11-Sep-2022 yasuoka <yasuoka@openbsd.org>

Handle if pci_intr_establish() failed. This actually happens if many
VMXNET3 are configured. from IIJ.

ok jmatthew


# 8d2c75e4 11-Mar-2022 mpi <mpi@openbsd.org>

Constify struct cfattach.


# 4b1a56af 09-Jan-2022 jsg <jsg@openbsd.org>

spelling
feedback and ok tb@ jmc@ ok ratchov@


# 1d900c3f 09-Aug-2021 jan <jan@openbsd.org>

Remove useless code. The driver_data is ignored by the host system.
Set the pointer to all 1s as linux do.

OK patrick@


# bc8858ce 23-Jul-2021 jmatthew <jmatthew@openbsd.org>

pci_intr_msix_count() is the function that drivers using multiple MSI-X
vectors use to decide whether to use MSI-X, so make it return 0 if MSI
is not enabled for the device.

fixes problems with ix(4

pci_intr_msix_count() is the function that drivers using multiple MSI-X
vectors use to decide whether to use MSI-X, so make it return 0 if MSI
is not enabled for the device.

fixes problems with ix(4) on older amd64 hardware and current riscv64
ok kettenis@ dlg@

show more ...


# 471f2571 12-Dec-2020 jan <jan@openbsd.org>

Rename the macro MCLGETI to MCLGETL and removes the dead parameter ifp.

OK dlg@, bluhm@
No Opinion mpi@
Not against it claudio@


# 0cae21bd 10-Jul-2020 patrick <patrick@openbsd.org>

Change users of IFQ_SET_MAXLEN() and IFQ_IS_EMPTY() to use the "new" API.

ok dlg@ tobhe@


# 72b0de73 07-Jul-2020 dlg <dlg@openbsd.org>

apparently vmx(4) needs a power of 2 number of interrupts.

so we pass INTRMAP_POWEROF2 to intrmap_create and things are better.

reported by and fixed by mark patruck. thanks :)


1234