Page MenuHomeFreeBSD

D61518.1794765075.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D61518.1794765075.diff

diff --git a/FreeBSD/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c b/FreeBSD/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c
--- a/FreeBSD/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c
+++ b/FreeBSD/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c
@@ -323,7 +323,7 @@
static inline void
mlx5e_build_rx_mbuf(struct mlx5_cqe64 *cqe, struct mlx5e_rq *rq,
- struct mbuf *mb, struct mlx5e_rq_mbuf *mr, u32 cqe_bcnt)
+ struct mbuf *mb, struct mlx5e_rq_mbuf *mr, u32 cqe_bcnt, bool *tcp)
{
if_t ifp = rq->ifp;
struct mlx5e_channel *c;
@@ -463,6 +463,17 @@
break;
}
+ switch (get_cqe_l4_hdr_type(cqe)) {
+ case CQE_L4_HDR_TYPE_TCP_NO_ACK:
+ case CQE_L4_HDR_TYPE_TCP_ACK_NO_DATA:
+ case CQE_L4_HDR_TYPE_TCP_ACK_AND_DATA:
+ *tcp = 1;
+ break;
+ default:
+ *tcp = 0;
+ break;
+ }
+
mlx5e_accel_ipsec_handle_rx(ifp, mb, cqe, mr);
}
@@ -539,11 +550,15 @@
}
}
+#define CSUM_TUNNEL (CSUM_INNER_L3_CALC | CSUM_INNER_L3_VALID |\
+ CSUM_INNER_L4_CALC | CSUM_INNER_L4_VALID)
+
static int
mlx5e_poll_rx_cq(struct mlx5e_rq *rq, int budget)
{
struct pfil_head *pfil;
int i, rv;
+ bool tcp;
CURVNET_SET_QUIET(if_getvnet(rq->ifp));
pfil = rq->channel->priv->pfil;
@@ -634,17 +649,23 @@
}
rx_common:
mlx5e_build_rx_mbuf(cqe, rq, mb, &rq->mbuf[wqe_counter],
- byte_cnt);
+ byte_cnt, &tcp);
rq->stats.bytes += byte_cnt;
rq->stats.packets++;
#ifdef NUMA
mb->m_pkthdr.numa_domain = if_getnumadomain(rq->ifp);
#endif
+ tcp = tcp ||
+ (mb->m_pkthdr.csum_flags & CSUM_TUNNEL) == CSUM_TUNNEL;
+
#if !defined(HAVE_TCP_LRO_RX)
- tcp_lro_queue_mbuf(&rq->lro, mb);
+ if (tcp)
+ tcp_lro_queue_mbuf(&rq->lro, mb);
+ else
+ if_input(rq->ifp, mb);
#else
- if (mb->m_pkthdr.csum_flags == 0 ||
+ if (mb->m_pkthdr.csum_flags == 0 || !tcp ||
(if_getcapenable(rq->ifp) & IFCAP_LRO) == 0 ||
rq->lro.lro_cnt == 0 ||
tcp_lro_rx(&rq->lro, mb, 0) != 0) {

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 15, 5:51 PM (8 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41731603
Default Alt Text
D61518.1794765075.diff (1 KB)

Event Timeline