~kmously/ubuntu/+source/linux/+git/lunar:gvnic-6.2

Last commit made on 2023-09-12
Get this branch:
git clone -b gvnic-6.2 https://git.launchpad.net/~kmously/ubuntu/+source/linux/+git/lunar
Only Khaled El Mously can upload to this branch. If you are Khaled El Mously please log in for upload directions.

Branch merges

Branch information

Name:
gvnic-6.2
Repository:
lp:~kmously/ubuntu/+source/linux/+git/lunar

Recent commits

c8e7e66... by Khaled El Mously

versionify

Signed-off-by: Khalid Elmously <email address hidden>

e6f74dd... by Jakub Kicinski <email address hidden>

netdev-genl: create a simple family for netdev stuff

Add a Netlink spec-compatible family for netdevs.
This is a very simple implementation without much
thought going into it.

It allows us to reap all the benefits of Netlink specs,
one can use the generic client to issue the commands:

  $ ./cli.py --spec netdev.yaml --dump dev_get
  [{'ifindex': 1, 'xdp-features': set()},
   {'ifindex': 2, 'xdp-features': {'basic', 'ndo-xmit', 'redirect'}},
   {'ifindex': 3, 'xdp-features': {'rx-sg'}}]

the generic python library does not have flags-by-name
support, yet, but we also don't have to carry strings
in the messages, as user space can get the names from
the spec.

Acked-by: Jesper Dangaard Brouer <email address hidden>
Co-developed-by: Lorenzo Bianconi <email address hidden>
Signed-off-by: Lorenzo Bianconi <email address hidden>
Co-developed-by: Kumar Kartikeya Dwivedi <email address hidden>
Signed-off-by: Kumar Kartikeya Dwivedi <email address hidden>
Co-developed-by: Marek Majtyka <email address hidden>
Signed-off-by: Marek Majtyka <email address hidden>
Signed-off-by: Jakub Kicinski <email address hidden>
Link: https://lore.kernel.org/r<email address hidden>
Signed-off-by: Alexei Starovoitov <email address hidden>
(cherry picked from commit d3d854fd6a1d97157f790604e07f6386e8df8fe4)
Signed-off-by: Khalid Elmously <email address hidden>

7979aef... by Rushil Gupta <email address hidden>

gve: update gve.rst

Add a note about QPL and RDA mode

Signed-off-by: Rushil Gupta <email address hidden>
Reviewed-by: Willem de Bruijn <email address hidden>
Signed-off-by: Praveen Kaligineedi <email address hidden>
Signed-off-by: Bailey Forrest <email address hidden>
Signed-off-by: David S. Miller <email address hidden>

68f37db... by Eric Dumazet <email address hidden>

gve: fix frag_list chaining

gve_rx_append_frags() is able to build skbs chained with frag_list,
like GRO engine.

Problem is that shinfo->frag_list should only be used
for the head of the chain.

All other links should use skb->next pointer.

Otherwise, built skbs are not valid and can cause crashes.

Equivalent code in GRO (skb_gro_receive()) is:

    if (NAPI_GRO_CB(p)->last == p)
        skb_shinfo(p)->frag_list = skb;
    else
        NAPI_GRO_CB(p)->last->next = skb;
    NAPI_GRO_CB(p)->last = skb;

Fixes: 9b8dd5e5ea48 ("gve: DQO: Add RX path")
Signed-off-by: Eric Dumazet <email address hidden>
Cc: Bailey Forrest <email address hidden>
Cc: Willem de Bruijn <email address hidden>
Cc: Catherine Sullivan <email address hidden>
Reviewed-by: David Ahern <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit 817c7cd2043a83a3d8147f40eea1505ac7300b62)
Signed-off-by: Khalid Elmously <email address hidden>

6da264d... by Rushil Gupta <email address hidden>

gve: RX path for DQO-QPL

The RX path allocates the QPL page pool at queue creation, and
tries to reuse these pages through page recycling. This patch
ensures that on refill no non-QPL pages are posted to the device.

When the driver is running low on free buffers, an ondemand
allocation step kicks in that allocates a non-qpl page for
SKB business to free up the QPL page in use.

gve_try_recycle_buf was moved to gve_rx_append_frags so that driver does
not attempt to mark buffer as used if a non-qpl page was allocated
ondemand.

Signed-off-by: Rushil Gupta <email address hidden>
Reviewed-by: Willem de Bruijn <email address hidden>
Signed-off-by: Praveen Kaligineedi <email address hidden>
Signed-off-by: Bailey Forrest <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit e7075ab4fb6b39730dfbfbfa3a5505d678f01d2c)
Signed-off-by: Khalid Elmously <email address hidden>

c25ecb3... by Rushil Gupta <email address hidden>

gve: Tx path for DQO-QPL

Each QPL page is divided into GVE_TX_BUFS_PER_PAGE_DQO buffers.
When a packet needs to be transmitted, we break the packet into max
GVE_TX_BUF_SIZE_DQO sized chunks and transmit each chunk using a TX
descriptor.
We allocate the TX buffers from the free list in dqo_tx.
We store these TX buffer indices in an array in the pending_packet
structure.

The TX buffers are returned to the free list in dqo_compl after
receiving packet completion or when removing packets from miss
completions list.

Signed-off-by: Rushil Gupta <email address hidden>
Reviewed-by: Willem de Bruijn <email address hidden>
Signed-off-by: Praveen Kaligineedi <email address hidden>
Signed-off-by: Bailey Forrest <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit a6fb8d5a8b6925f1e635818d3dd2d89531d4a058)
Signed-off-by: Khalid Elmously <email address hidden>

1be2c22... by Rushil Gupta <email address hidden>

gve: Control path for DQO-QPL

GVE supports QPL ("queue-page-list") mode where
all data is communicated through a set of pre-registered
pages. Adding this mode to DQO descriptor format.

Add checks, abi-changes and device options to support
QPL mode for DQO in addition to GQI. Also, use
pages-per-qpl supplied by device-option to control the
size of the "queue-page-list".

Signed-off-by: Rushil Gupta <email address hidden>
Reviewed-by: Willem de Bruijn <email address hidden>
Signed-off-by: Praveen Kaligineedi <email address hidden>
Signed-off-by: Bailey Forrest <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(backported from commit 66ce8e6b49df401854f0c98bed50a65e4167825b)
[ kmously: adjusted in drivers/net/ethernet/google/gve/gve.h ]
Signed-off-by: Khalid Elmously <email address hidden>

7295136... by Jakub Kicinski <email address hidden>

eth: add missing xdp.h includes in drivers

Handful of drivers currently expect to get xdp.h by virtue
of including netdevice.h. This will soon no longer be the case
so add explicit includes.

Reviewed-by: Wei Fang <email address hidden>
Reviewed-by: Gerhard Engleder <email address hidden>
Signed-off-by: Jakub Kicinski <email address hidden>
Acked-by: Jesper Dangaard Brouer <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Martin KaFai Lau <email address hidden>
(backported from commit 92272ec4107ef4f826b694a1338562c007e09821)
[ kmously: adjusted for different #includes in drivers/net/ethernet/intel/igc/igc.h ]
Signed-off-by: Khalid Elmously <email address hidden>

e7d5d15... by Jesper Dangaard Brouer

gve: trivial spell fix Recive to Receive

Spotted this trivial spell mistake while casually reading
the google GVE driver code.

Signed-off-by: Jesper Dangaard Brouer <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit 68af900072c157c0cdce0256968edd15067e1e5a)
Signed-off-by: Khalid Elmously <email address hidden>

51c1ce3... by Junfeng Guo <email address hidden>

gve: unify driver name usage

Current codebase contained the usage of two different names for this
driver (i.e., `gvnic` and `gve`), which is quite unfriendly for users
to use, especially when trying to bind or unbind the driver manually.
The corresponding kernel module is registered with the name of `gve`.
It's more reasonable to align the name of the driver with the module.

Fixes: 893ce44df565 ("gve: Add basic driver framework for Compute Engine Virtual NIC")
Cc: <email address hidden>
Signed-off-by: Junfeng Guo <email address hidden>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit 9d0aba98316d00f9c0a4506fc15f5ed9241bc1fd)
Signed-off-by: Khalid Elmously <email address hidden>