diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index 61781cddee9..c446199dff2 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -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; }; diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index c3ee6d5c343..cd7849778bc 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -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 diff --git a/sys/dev/gve/gve_rx.c b/sys/dev/gve/gve_rx.c index f5d8fd7a7b7..9be96cf1ee3 100644 --- a/sys/dev/gve/gve_rx.c +++ b/sys/dev/gve/gve_rx.c @@ -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))