#
031800c7 |
| 14-Feb-2025 |
Jasper Tran O'Leary <jtranoleary@google.com> |
gve: Do minor cleanup and bump version
This commit fixes several minor issues:
- Removes an unnecessary function pointer parameter on gve_start_tx_ring - Adds a presubmit check against style(9) - R
gve: Do minor cleanup and bump version
This commit fixes several minor issues:
- Removes an unnecessary function pointer parameter on gve_start_tx_ring - Adds a presubmit check against style(9) - Replaces mb() and rmb() macros with native atomic_thread_fence_seq_cst() and atomic_thread_fence_acq() respectively - Fixes various typos throughout - Increments the version number to 1.3.2
Co-authored-by: Vee Agarwal <veethebee@google.com> Signed-off-by: Vee Agarwal <veethebee@google.com> Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>
Reviewed by: delphij, markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D48969
show more ...
|
Revision tags: release/14.1.0-p7, release/14.2.0-p1, release/13.4.0-p3, release/14.2.0 |
|
#
40097cd6 |
| 05-Nov-2024 |
Shailend Chand <shailend@google.com> |
gve: Fix TX livelock
Before this change the transmit taskqueue would enqueue itself when it cannot find space on the NIC ring with the hope that eventually space would be made. This results in the f
gve: Fix TX livelock
Before this change the transmit taskqueue would enqueue itself when it cannot find space on the NIC ring with the hope that eventually space would be made. This results in the following livelock that only occurs after passing ~200Gbps of TCP traffic for many hours:
100% CPU ┌───────────┐wait on ┌──────────┐ ┌───────────┐ │user thread│ cpu │gve xmit │wait on │gve cleanup│ │with mbuf ├────────►│taskqueue ├────────►│taskqueue │ │uma lock │ │ │ NIC ring│ │ └───────────┘ └──────────┘ space └─────┬─────┘ ▲ │ │ wait on mbuf uma lock │ └───────────────────────────────────────────┘
Further details about the livelock are available on https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281560.
After this change, the transmit taskqueue no longer spins till there is room on the NIC ring. It instead stops itself and lets the completion-processing taskqueue wake it up.
Since I'm touching the trasnmit taskqueue I've also corrected the name of a counter and also fixed a bug where EINVAL mbufs were not being freed and were instead living forever on the bufring.
Signed-off-by: Shailend Chand <shailend@google.com> Reviewed-by: markj MFC-after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47138
show more ...
|
#
2348ac89 |
| 05-Nov-2024 |
Shailend Chand <shailend@google.com> |
gve: Add DQO QPL support
DQO is the descriptor format for our next generation virtual NIC. It is necessary to make full use of the hardware bandwidth on many newer GCP VM shapes.
This patch extends
gve: Add DQO QPL support
DQO is the descriptor format for our next generation virtual NIC. It is necessary to make full use of the hardware bandwidth on many newer GCP VM shapes.
This patch extends the previously introduced DQO descriptor format with a "QPL" mode. QPL stands for Queue Page List and refers to the fact that the hardware cannot access arbitrary regions of the host memory and instead expects a fixed bounce buffer comprising of a list of pages.
The QPL aspects are similar to the already existing GQI queue queue format: in that the mbufs being input in the Rx path have external storage in the form of vm pages attached to them; and in the Tx path we always copy the mbuf payload into QPL pages.
Signed-off-by: Shailend Chand <shailend@google.com> Reviewed-by: markj MFC-after: 2 weeks Differential Revision: https://reviews.freebsd.org/D46691
show more ...
|
#
d438b4ef |
| 05-Nov-2024 |
Shailend Chand <shailend@google.com> |
gve: Add DQO RDA support
DQO is the descriptor format for our next generation virtual NIC. It is necessary to make full use of the hardware bandwidth on many newer GCP VM shapes.
One major change w
gve: Add DQO RDA support
DQO is the descriptor format for our next generation virtual NIC. It is necessary to make full use of the hardware bandwidth on many newer GCP VM shapes.
One major change with DQO from its predecessor GQI is that it uses dual descriptor rings for both TX and RX queues.
The TX path uses a descriptor ring to send descriptors to HW, and receives packet completion events on a TX completion ring.
The RX path posts buffers to HW using an RX descriptor ring and receives incoming packets on an RX completion ring.
In GQI-QPL, the hardware could not access arbitrary regions of guest memory, which is why there was a pre-negotitated bounce buffer (QPL: Queue Page List). DQO-RDA has no such limitation.
"RDA" is in contrast to QPL and stands for "Raw DMA Addressing" which just means that HW does not need a fixed bounce buffer and can DMA arbitrary regions of guest memory.
A subsequent patch will introduce the DQO-QPL datapath that uses the same descriptor format as in this patch, but will have a fixed bounce buffer.
Signed-off-by: Shailend Chand <shailend@google.com> Reviewed-by: markj MFC-after: 2 weeks Differential Revision: https://reviews.freebsd.org/D46690
show more ...
|
Revision tags: release/13.4.0, release/14.1.0, release/13.3.0, release/14.0.0 |
|
#
543cf924 |
| 12-Aug-2023 |
Shailend Chand <shailend@google.com> |
gve: Simplify tx loop over buffer ring
Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D41281
|
#
74861578 |
| 27-Jul-2023 |
Shailend Chand <shailend@google.com> |
gve: Fix Tx tcpdump panic
Ringing the doorbell before making the BPF call can result in the mbuf being freed before the BPF call.
Reviewed-by: markj MFC-after: 3 days Differential Revision: https
gve: Fix Tx tcpdump panic
Ringing the doorbell before making the BPF call can result in the mbuf being freed before the BPF call.
Reviewed-by: markj MFC-after: 3 days Differential Revision: https://reviews.freebsd.org/D41189
show more ...
|
#
54dfc97b |
| 02-Jun-2023 |
Shailend Chand <shailend@google.com> |
Add gve, the driver for Google Virtual NIC (gVNIC)
gVNIC is a virtual network interface designed specifically for Google Compute Engine (GCE). It is required to support per-VM Tier_1 networking perf
Add gve, the driver for Google Virtual NIC (gVNIC)
gVNIC is a virtual network interface designed specifically for Google Compute Engine (GCE). It is required to support per-VM Tier_1 networking performance, and for using certain VM shapes on GCE.
The NIC supports TSO, Rx and Tx checksum offloads, and RSS. It does not currently do hardware LRO, and thus the software-LRO in the host is used instead. It also supports jumbo frames.
For each queue, the driver negotiates a set of pages with the NIC to serve as a fixed bounce buffer, this precludes the use of iflib.
Reviewed-by: markj MFC-after: 2 weeks Differential Revision: https://reviews.freebsd.org/D39873
show more ...
|