svn commit: r359136 - in releng/12.1/sys: dev/mlx5/mlx5_en netinet netinet6 sys
Gordon Tetlow
gordon at FreeBSD.org
Thu Mar 19 16:41:30 UTC 2020
Author: gordon
Date: Thu Mar 19 16:41:29 2020
New Revision: 359136
URL: https://svnweb.freebsd.org/changeset/base/359136
Log:
Fix packet forwarding performance in mlx5en(4) driver.
Approved by: so
Security: FreeBSD-EN-20:05.mlx5en
Modified:
releng/12.1/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c
releng/12.1/sys/netinet/ip_output.c
releng/12.1/sys/netinet6/ip6_output.c
releng/12.1/sys/sys/mbuf.h
Modified: releng/12.1/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c
==============================================================================
--- releng/12.1/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c Thu Mar 19 16:35:15 2020 (r359135)
+++ releng/12.1/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c Thu Mar 19 16:41:29 2020 (r359136)
@@ -609,7 +609,8 @@ mlx5e_xmit(struct ifnet *ifp, struct mbuf *mb)
struct mlx5e_sq *sq;
int ret;
- if (mb->m_pkthdr.snd_tag != NULL) {
+ if ((mb->m_pkthdr.csum_flags & CSUM_SND_TAG) != 0 &&
+ (mb->m_pkthdr.snd_tag != NULL)) {
sq = mlx5e_select_queue_by_send_tag(ifp, mb);
if (unlikely(sq == NULL)) {
/* Check for route change */
Modified: releng/12.1/sys/netinet/ip_output.c
==============================================================================
--- releng/12.1/sys/netinet/ip_output.c Thu Mar 19 16:35:15 2020 (r359135)
+++ releng/12.1/sys/netinet/ip_output.c Thu Mar 19 16:41:29 2020 (r359136)
@@ -653,6 +653,7 @@ sendit:
in_pcboutput_txrtlmt(inp, ifp, m);
/* stamp send tag on mbuf */
m->m_pkthdr.snd_tag = inp->inp_snd_tag;
+ m->m_pkthdr.csum_flags |= CSUM_SND_TAG;
} else {
m->m_pkthdr.snd_tag = NULL;
}
@@ -705,6 +706,7 @@ sendit:
in_pcboutput_txrtlmt(inp, ifp, m);
/* stamp send tag on mbuf */
m->m_pkthdr.snd_tag = inp->inp_snd_tag;
+ m->m_pkthdr.csum_flags |= CSUM_SND_TAG;
} else {
m->m_pkthdr.snd_tag = NULL;
}
Modified: releng/12.1/sys/netinet6/ip6_output.c
==============================================================================
--- releng/12.1/sys/netinet6/ip6_output.c Thu Mar 19 16:35:15 2020 (r359135)
+++ releng/12.1/sys/netinet6/ip6_output.c Thu Mar 19 16:41:29 2020 (r359136)
@@ -966,6 +966,7 @@ passout:
in_pcboutput_txrtlmt(inp, ifp, m);
/* stamp send tag on mbuf */
m->m_pkthdr.snd_tag = inp->inp_snd_tag;
+ m->m_pkthdr.csum_flags |= CSUM_SND_TAG;
} else {
m->m_pkthdr.snd_tag = NULL;
}
@@ -1081,6 +1082,7 @@ sendorfree:
in_pcboutput_txrtlmt(inp, ifp, m);
/* stamp send tag on mbuf */
m->m_pkthdr.snd_tag = inp->inp_snd_tag;
+ m->m_pkthdr.csum_flags |= CSUM_SND_TAG;
} else {
m->m_pkthdr.snd_tag = NULL;
}
Modified: releng/12.1/sys/sys/mbuf.h
==============================================================================
--- releng/12.1/sys/sys/mbuf.h Thu Mar 19 16:35:15 2020 (r359135)
+++ releng/12.1/sys/sys/mbuf.h Thu Mar 19 16:41:29 2020 (r359136)
@@ -519,6 +519,8 @@ struct mbuf {
#define CSUM_L5_VALID 0x20000000 /* checksum is correct */
#define CSUM_COALESCED 0x40000000 /* contains merged segments */
+#define CSUM_SND_TAG 0x80000000 /* Packet header has send tag */
+
/*
* CSUM flag description for use with printf(9) %b identifier.
*/
@@ -528,7 +530,7 @@ struct mbuf {
"\12CSUM_IP6_UDP\13CSUM_IP6_TCP\14CSUM_IP6_SCTP\15CSUM_IP6_TSO" \
"\16CSUM_IP6_ISCSI" \
"\31CSUM_L3_CALC\32CSUM_L3_VALID\33CSUM_L4_CALC\34CSUM_L4_VALID" \
- "\35CSUM_L5_CALC\36CSUM_L5_VALID\37CSUM_COALESCED"
+ "\35CSUM_L5_CALC\36CSUM_L5_VALID\37CSUM_COALESCED\40CSUM_SND_TAG"
/* CSUM flags compatibility mappings. */
#define CSUM_IP_CHECKED CSUM_L3_CALC
More information about the svn-src-all
mailing list