From nobody Wed Sep 06 04:53:09 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RgVPL0T7wz4sLvr; Wed, 6 Sep 2023 04:53:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RgVPK38dKz3Tx3; Wed, 6 Sep 2023 04:53:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1693975989; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZjUSXizhEWkk1eQ935ST4p6YooXvkSJtI/ESOEuknlU=; b=tclkfiRkGW+1GdAsubezdCF+gEXiNYJLhLZ2G885XVaKeYo+nFeOGKGYDZ/13GGozzR+zg a/RmqCbgHrdu2Ji4H4wxTksOT0E4LF78eLgZzzqKtyB5j9MUH8ylRAkmj4UBAITX+590vU 8fvvORnkWaBVd6MxT+Gaj852gQQtE2lBNPIXoCaJ/Ayaj4rQcUKAm2u+HStWjlTEAxxrPn PJwufHZhq388we1237wrcoNqrPZ6mW8tYJUPM0ip6AFZtkKfMaawM0FlnKyVn0sH0fipTL kIfpIKQzxgoxhAAwlZH7yo9nG6RHmaedGZemSlt+1WNT5fzY3TLEvX82iAhvlg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1693975989; a=rsa-sha256; cv=none; b=VndxmTGK6gbmyfBmsQLnxLgM7mBCU3OfKxrSVAj3t0hWpr0J24rvhdbKD3jfYntnfmDfTu cmeDazE0qblsMBQMigUOQ1u5c2p7S+wCMJHkrv8LxB4sMZNAdWrHbCTH6YG4m8s2TRkmjq Lsv3FN3hj66PGOt43Bg7abxJ75hFpsCnAvJEkk6s0JvgdBCyu6sUgu8rcwadX21Rvhoz5o nvDbRoEST0gksu8tDFEu/OjE8xmvrxP1QgNnHjk1sED2wbtYv2fNyFRPjZI2tQ7mwMYQWw 8wZJZXwvR2YE9hV6VMNL3mcFZ3EeaDE8X0yTc+zHaXSEV0O2QandjtPFiOYLow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1693975989; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZjUSXizhEWkk1eQ935ST4p6YooXvkSJtI/ESOEuknlU=; b=Y/JVKz7Wvj413MUB7Z25KoPX4eEbqEF+hnVq5ySUrMxCZAglzq+loMR1ULWf3RsKSlrOm7 s+LYX9OZFk9PKeu1zrhSxtggBZO8hdtbrRoSWPgNRaz9KVTk3iqqbmU1lT75jeVVECcQH5 vGLU4XyPzubIRPjikDpv39MgzfA6KHlppdwn78q0Qbt291I4vx3620vq6QsCUv6ggiBUzW wV8siGpwNp0jIg7BKM/B5IJx5gKXRYrFOdrPXccwDpA+lkmY0I9HrcE8BrMR5tiPy8MO+E PqYQZBx/Apl4a5toYqlxNl4Cb4lO8aPZf8qb9m/z+GD1qEksvfPVyg61KbTtHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RgVPK2GKkz127L; Wed, 6 Sep 2023 04:53:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3864r9fF022451; Wed, 6 Sep 2023 04:53:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3864r9NN022448; Wed, 6 Sep 2023 04:53:09 GMT (envelope-from git) Date: Wed, 6 Sep 2023 04:53:09 GMT Message-Id: <202309060453.3864r9NN022448@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: c0038743d357 - stable/12 - net: Remove vlan metadata on pcp / vlan encapsulation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c0038743d357da9b5ebf756f4fc3b2cf7d2ef3e9 Auto-Submitted: auto-generated The branch stable/12 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=c0038743d357da9b5ebf756f4fc3b2cf7d2ef3e9 commit c0038743d357da9b5ebf756f4fc3b2cf7d2ef3e9 Author: Zhenlei Huang AuthorDate: 2023-08-30 09:36:38 +0000 Commit: Zhenlei Huang CommitDate: 2023-09-06 04:32:56 +0000 net: Remove vlan metadata on pcp / vlan encapsulation For oubound traffic, the flag M_VLANTAG is set in mbuf packet header to indicate the underlaying interface do hardware VLAN tag insertion if capable, otherwise the net stack will do 802.1Q encapsulation instead. Commit 868aabb4708d introduced per-flow priority which set the priority ID in the mbuf packet header. There's a corner case that when the driver is disabled to do hardware VLAN tag insertion, and the net stack do 802.1Q encapsulation, then it will result double tagged packets if the driver do not check the enabled capability (hardware VLAN tag insertion). Unfortunately some drivers, currently known cxgbe(4) re(4) ure(4) igc(4) and vmx(4), have this issue. From a quick review for other interface drivers I believe a lot more drivers have the same issue. It makes more sense to fix in net stack than to try to change every single driver. PR: 270736 Reviewed by: kp Fixes: 868aabb4708d Add IP(V6)_VLAN_PCP to set 802.1 priority per-flow MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D39499 (cherry picked from commit b22aae410bc7e4e9a6b43e556dc34be72deadb65) (cherry picked from commit 494de30b63de9ef31587dcc3fb8e7249535e840a) (cherry picked from commit 337475505b4cdf40510bd2e2788fdce5c0c47367) --- sys/net/if_ethersubr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index ddc92535be60..f832700003ef 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -443,8 +443,11 @@ ether_set_pcp(struct mbuf **mp, struct ifnet *ifp, uint8_t pcp) struct ether_header *eh; eh = mtod(*mp, struct ether_header *); - if (ntohs(eh->ether_type) == ETHERTYPE_VLAN || - ether_8021q_frame(mp, ifp, ifp, 0, pcp)) + if (eh->ether_type == htons(ETHERTYPE_VLAN)) { + (*mp)->m_flags &= ~M_VLANTAG; + return (true); + } + if (ether_8021q_frame(mp, ifp, ifp, 0, pcp)) return (true); if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); return (false); @@ -1373,6 +1376,7 @@ ether_8021q_frame(struct mbuf **mp, struct ifnet *ife, struct ifnet *p, if_printf(ife, "unable to prepend 802.1Q header"); return (false); } + (*mp)->m_flags &= ~M_VLANTAG; } return (true); }