<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/ethernet/google, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2022-02-16T11:58:35Z</updated>
<entry>
<title>gve: Recording rx queue before sending to napi</title>
<updated>2022-02-16T11:58:35Z</updated>
<author>
<name>Tao Liu</name>
</author>
<published>2022-02-07T17:59:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2592d6734cb0b99f8ea9c4198ae1efb723457f7b'/>
<id>urn:sha1:2592d6734cb0b99f8ea9c4198ae1efb723457f7b</id>
<content type='text'>
[ Upstream commit 084cbb2ec3af2d23be9de65fcc9493e21e265859 ]

This caused a significant performance degredation when using generic XDP
with multiple queues.

Fixes: f5cedc84a30d2 ("gve: Add transmit and receive support")
Signed-off-by: Tao Liu &lt;xliutaox@google.com&gt;
Link: https://lore.kernel.org/r/20220207175901.2486596-1-jeroendb@google.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>gve: fix the wrong AdminQ buffer queue index check</title>
<updated>2022-02-08T17:35:17Z</updated>
<author>
<name>Haiyue Wang</name>
</author>
<published>2022-01-28T10:47:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d9c470134104dfecb753b7b4add7037a7403c6e'/>
<id>urn:sha1:7d9c470134104dfecb753b7b4add7037a7403c6e</id>
<content type='text'>
commit 1f84a9450d75e08af70d9e2f2d5e1c0ac0c881d2 upstream.

The 'tail' and 'head' are 'unsigned int' type free-running count, when
'head' is overflow, the 'int i (= tail) &lt; u32 head' will be false:

Only '- loop 0: idx = 63' result is shown, so it needs to use 'int' type
to compare, it can handle the overflow correctly.

typedef uint32_t u32;

int main()
{
        u32 tail, head;
        int stail, shead;
        int i, loop;

        tail = 0xffffffff;
        head = 0x00000000;

        for (i = tail, loop = 0; i &lt; head; i++) {
                unsigned int idx = i &amp; 63;

                printf("+ loop %d: idx = %u\n", loop++, idx);
        }

        stail = tail;
        shead = head;
        for (i = stail, loop = 0; i &lt; shead; i++) {
                unsigned int idx = i &amp; 63;

                printf("- loop %d: idx = %u\n", loop++, idx);
        }

        return 0;
}

Fixes: 5cdad90de62c ("gve: Batch AQ commands for creating and destroying queues.")
Signed-off-by: Haiyue Wang &lt;haiyue.wang@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>gve: Fix GFP flags when allocing pages</title>
<updated>2022-02-01T16:29:18Z</updated>
<author>
<name>Catherine Sullivan</name>
</author>
<published>2022-01-26T00:38:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7811229f02b1ddee56b45faffbb6c54963587e80'/>
<id>urn:sha1:7811229f02b1ddee56b45faffbb6c54963587e80</id>
<content type='text'>
[ Upstream commit a92f7a6feeb3884c69c1c7c1f13bccecb2228ad0 ]

Use GFP_ATOMIC when allocating pages out of the hotpath,
continue to use GFP_KERNEL when allocating pages during setup.

GFP_KERNEL will allow blocking which allows it to succeed
more often in a low memory enviornment but in the hotpath we do
not want to allow the allocation to block.

Fixes: f5cedc84a30d2 ("gve: Add transmit and receive support")
Signed-off-by: Catherine Sullivan &lt;csully@google.com&gt;
Signed-off-by: David Awogbemila &lt;awogbemila@google.com&gt;
Link: https://lore.kernel.org/r/20220126003843.3584521-1-awogbemila@google.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>gve: Correct order of processing device options</title>
<updated>2021-12-21T02:47:56Z</updated>
<author>
<name>Jeroen de Borst</name>
</author>
<published>2021-12-20T19:27:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1f06f7d97f741667bab0f459a4f940b21cab1549'/>
<id>urn:sha1:1f06f7d97f741667bab0f459a4f940b21cab1549</id>
<content type='text'>
The legacy raw addressing device option was processed before the
new RDA queue format option.  This caused the supported features mask,
which is provided only on the RDA queue format option, not to be set.

This disabled jumbo-frame support when using raw adressing.

Fixes: 255489f5b33c ("gve: Add a jumbo-frame device option")
Signed-off-by: Jeroen de Borst &lt;jeroendb@google.com&gt;
Link: https://lore.kernel.org/r/20211220192746.2900594-1-jeroendb@google.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>gve: fix for null pointer dereference.</title>
<updated>2021-12-08T04:57:17Z</updated>
<author>
<name>Ameer Hamza</name>
</author>
<published>2021-12-05T18:38:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e6f60c51f0435862020bcd2d1e3257caaafe5650'/>
<id>urn:sha1:e6f60c51f0435862020bcd2d1e3257caaafe5650</id>
<content type='text'>
Avoid passing NULL skb to __skb_put() function call if
napi_alloc_skb() returns NULL.

Fixes: 37149e9374bf ("gve: Implement packet continuation for RX.")
Signed-off-by: Ameer Hamza &lt;amhamza.mgc@gmail.com&gt;
Link: https://lore.kernel.org/r/20211205183810.8299-1-amhamza.mgc@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>gve: fix unmatched u64_stats_update_end()</title>
<updated>2021-11-10T14:42:25Z</updated>
<author>
<name>Dan Carpenter</name>
</author>
<published>2021-11-10T08:11:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=721111b1b29c67fd18ac2f69b3a48c06ba996762'/>
<id>urn:sha1:721111b1b29c67fd18ac2f69b3a48c06ba996762</id>
<content type='text'>
The u64_stats_update_end() call is supposed to be inside the curly
braces so it pairs with the u64_stats_update_begin().

Fixes: 37149e9374bf ("gve: Implement packet continuation for RX.")
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gve: Fix off by one in gve_tx_timeout()</title>
<updated>2021-11-09T13:58:46Z</updated>
<author>
<name>Dan Carpenter</name>
</author>
<published>2021-11-09T11:47:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1c360cc1cc883fbdf0a258b4df376571fbeac5ee'/>
<id>urn:sha1:1c360cc1cc883fbdf0a258b4df376571fbeac5ee</id>
<content type='text'>
The priv-&gt;ntfy_blocks[] has "priv-&gt;num_ntfy_blks" elements so this &gt;
needs to be &gt;= to prevent an off by one bug.  The priv-&gt;ntfy_blocks[]
array is allocated in gve_alloc_notify_blocks().

Fixes: 87a7f321bb6a ("gve: Recover from queue stall due to missed IRQ")
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gve: Add a jumbo-frame device option.</title>
<updated>2021-10-25T13:13:12Z</updated>
<author>
<name>Shailend Chand</name>
</author>
<published>2021-10-24T18:42:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=255489f5b33ccec046be689dd45b5ccdec2b2a32'/>
<id>urn:sha1:255489f5b33ccec046be689dd45b5ccdec2b2a32</id>
<content type='text'>
A widely deployed driver has a bug that will cause the driver not
to load when a max_mtu &gt; 2048 is present in the device descriptor.

To avoid this bug while still enabling jumbo frames, we present a lower
max_mtu in the device descriptor and pass the actual max_mtu in
a separate device option.

The driver supports 2 different queue formats. To enable features
on one queue format, but not the other, a supported_features mask
was added to the device options in the device descriptor.

Signed-off-by: Shailend Chand &lt;shailend@google.com&gt;
Signed-off-by: Jeroen de Borst &lt;jeroendb@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gve: Implement packet continuation for RX.</title>
<updated>2021-10-25T13:13:12Z</updated>
<author>
<name>David Awogbemila</name>
</author>
<published>2021-10-24T18:42:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=37149e9374bf7271563f7477ace9014ebc65a8af'/>
<id>urn:sha1:37149e9374bf7271563f7477ace9014ebc65a8af</id>
<content type='text'>
This enables the driver to receive RX packets spread across multiple
buffers:

For a given multi-fragment packet the "packet continuation" bit is set
on all descriptors except the last one. These descriptors' payloads are
combined into a single SKB before the SKB is handed to the
networking stack.

This change adds a "packet buffer size" notion for RX queues. The
CreateRxQueue AdminQueue command sent to the device now includes the
packet_buffer_size.

We opt for a packet_buffer_size of PAGE_SIZE / 2 to give the
driver the opportunity to flip pages where we can instead of copying.

Signed-off-by: David Awogbemila &lt;awogbemila@google.com&gt;
Signed-off-by: Jeroen de Borst &lt;jeroendb@google.com&gt;
Reviewed-by: Catherine Sullivan &lt;csully@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gve: Add RX context.</title>
<updated>2021-10-25T13:13:12Z</updated>
<author>
<name>David Awogbemila</name>
</author>
<published>2021-10-24T18:42:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1344e751e91092ac0cb63b194621e59d2f364197'/>
<id>urn:sha1:1344e751e91092ac0cb63b194621e59d2f364197</id>
<content type='text'>
This refactor moves the skb_head and skb_tail fields into a new
gve_rx_ctx struct. This new struct will contain information about the
current packet being processed. This is in preparation for
multi-descriptor RX packets.

Signed-off-by: David Awogbemila &lt;awogbemila@google.com&gt;
Signed-off-by: Jeroen de Borst &lt;jeroendb@google.com&gt;
Reviewed-by: Catherine Sullivan &lt;csully@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
