gve: Make LRO work for jumbo packets
Each Rx descriptor points to a packet buffer of size 2K, which means that MTUs greater than 2K see multi-descriptor packets. The TCP-hood of such packets was being incorrectly determined by looking for a flag on the last descriptor instead of the first descriptor. Also fixed and progressed the version number. Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D41754
This commit is contained in:
parent
cb8dd292c7
commit
5f62584a9a
|
@ -164,6 +164,7 @@ struct gve_rx_ctx {
|
|||
struct mbuf *mbuf_tail;
|
||||
uint32_t total_size;
|
||||
uint8_t frag_cnt;
|
||||
bool is_tcp;
|
||||
bool drop_pkt;
|
||||
};
|
||||
|
||||
|
|
|
@ -31,10 +31,10 @@
|
|||
#include "gve.h"
|
||||
#include "gve_adminq.h"
|
||||
|
||||
#define GVE_DRIVER_VERSION "GVE-FBSD-1.0.0\n"
|
||||
#define GVE_VERSION_MAJOR 0
|
||||
#define GVE_VERSION_MINOR 9
|
||||
#define GVE_VERSION_SUB 0
|
||||
#define GVE_DRIVER_VERSION "GVE-FBSD-1.0.1\n"
|
||||
#define GVE_VERSION_MAJOR 1
|
||||
#define GVE_VERSION_MINOR 0
|
||||
#define GVE_VERSION_SUB 1
|
||||
|
||||
#define GVE_DEFAULT_RX_COPYBREAK 256
|
||||
|
||||
|
|
|
@ -546,6 +546,7 @@ gve_rx(struct gve_priv *priv, struct gve_rx_ring *rx, struct gve_rx_desc *desc,
|
|||
|
||||
if (is_first_frag) {
|
||||
mbuf->m_pkthdr.rcvif = priv->ifp;
|
||||
ctx->is_tcp = desc->flags_seq & GVE_RXF_TCP;
|
||||
|
||||
if (gve_needs_rss(desc->flags_seq)) {
|
||||
gve_set_rss_type(desc->flags_seq, mbuf);
|
||||
|
@ -567,7 +568,7 @@ gve_rx(struct gve_priv *priv, struct gve_rx_ring *rx, struct gve_rx_desc *desc,
|
|||
do_if_input = true;
|
||||
|
||||
if (((if_getcapenable(priv->ifp) & IFCAP_LRO) != 0) && /* LRO is enabled */
|
||||
(desc->flags_seq & GVE_RXF_TCP) && /* pkt is a TCP pkt */
|
||||
(ctx->is_tcp) && /* pkt is a TCP pkt */
|
||||
((mbuf->m_pkthdr.csum_flags & CSUM_DATA_VALID) != 0) && /* NIC verified csum */
|
||||
(rx->lro.lro_cnt != 0) && /* LRO resources exist */
|
||||
(tcp_lro_rx(&rx->lro, mbuf, 0) == 0))
|
||||
|
|
Loading…
Reference in New Issue