From nobody Sun Nov 24 03:22:49 2024 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 4XwvKk2f50z5dL12; Sun, 24 Nov 2024 03:22:50 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4XwvKk0Tmkz4J8q; Sun, 24 Nov 2024 03:22:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1732418570; 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=5UJV/IlOlS7Mqv/F9R6pExmQ7wbuIyPR1bA2HZ/TTWk=; b=uB0M60vsGjFl1OR1Mf4m/G2omcbzg7CrVpmKkE+6z/AlF3UREt3K5RA0DobU1YY59O9Wp0 C+5icJKi2MIp+sSMX3Ze0vAgSuQq+wNKuyOaMMD/GNhrwKAC7eOJBmahcIlA7Zn7SqnqVh pAh0ZsEv/Hk0neadX0HP+i5DJmLSxMRXWKWjOhfAAwGVnBzxG5eZiOxpFsyqGvGAr9y89i 3HYqK+DGUiYMrNumpEmMQmAsMycWSl7b3+nzBS0hIaNyX+IBmuUUzO0QSxcE4vNQw7X8Yb 5put+EC62FU5uA6k2F331NowAKZsYpTn5oOggqoU7Oy9atJ+b/D47+8808uAUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1732418570; 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=5UJV/IlOlS7Mqv/F9R6pExmQ7wbuIyPR1bA2HZ/TTWk=; b=BIMBzAWJaVDQwKE7ohdCIeBY7mk69Dc6vgnRg0Glb59fXwqctguo/hJa03JNPZx3+VeIx4 A6JodG0Fw/HG3i30UO7CoUqSdrwJKLii6mGpA9ubwC1y6AKRc5VFUh3Ssgqlz1iYh+ob0P Q4UfxCssemj9/604sr7cdBMzrQvQ1CGZrgrabjhQXIR/0aFNJXmEjPQytsTHj7I7nOnbzn FgYm/KGr37lE7EunYjMMH6G9uE9w/6/aq73Ke4uEMXOn6jeNN5L0BbHSffRgf7q6lfgUDP mAQki7cRJ/+EglFWe/c/rv1/x18knJkpSENC46rzHnrpfogBEEZWDRAo9S4kag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1732418570; a=rsa-sha256; cv=none; b=KZSMnFrBLwpSboPWwbBFhXctfL8FKc4bo9RGLpmSF6BLICjuSL+rw4lvDXKEoOCaupIwLr sCEO/eaB2hTl5lwVqmKRsOJHEV+M1/hYC698BuzL+RbCEYR97WXCKEaUpbHQPcXMZNRAPR fEDY6GNSALCu6v7XG0/MAve7lMue3hAnoJOLjhA7m2NIsBtZw+S3cZ8ldR58KuOSXRjawQ QPvLHXBu1IyPVln9ZacEOUqi7sRMCRF5g57i20G2mHmDGxssaXQqTvOrPyCcTm3UzhZq9g 562GqgM2g0omZRFc5k/AnWd6Y0Al/LPDrHYrH3yjJ4XFdZ8vFeY4+v8fOmCyeg== 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 4XwvKk05qJzcds; Sun, 24 Nov 2024 03:22:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 4AO3MnfJ041406; Sun, 24 Nov 2024 03:22:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4AO3MnNQ041403; Sun, 24 Nov 2024 03:22:49 GMT (envelope-from git) Date: Sun, 24 Nov 2024 03:22:49 GMT Message-Id: <202411240322.4AO3MnNQ041403@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 367e42ab984d - stable/13 - e1000: sysctl for TCP flag handling during TSO 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: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 367e42ab984dc8d06e0b7d662642b8560527cf4b Auto-Submitted: auto-generated The branch stable/13 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=367e42ab984dc8d06e0b7d662642b8560527cf4b commit 367e42ab984dc8d06e0b7d662642b8560527cf4b Author: Michael Tuexen AuthorDate: 2024-11-21 02:22:10 +0000 Commit: Kevin Bowling CommitDate: 2024-11-24 03:22:28 +0000 e1000: sysctl for TCP flag handling during TSO Add tso_tcp_flags_mask_first_segment, tso_tcp_flags_mask_middle_segment, and tso_tcp_flags_mask_last_segment sysctl-variables to control the handling of TCP flags during TSO. This allows to change the masks appropriate for classical ECN and to configure appropriate masks for accurate ECN. Reviewed by: rrs Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D44259 (cherry picked from commit 90853dfac851afa9e8840f5a38383256d75458b6) --- sys/dev/e1000/if_em.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index e000343eb4b4..537faf046bca 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -333,6 +333,7 @@ static int em_is_valid_ether_addr(u8 *); static void em_newitr(struct e1000_softc *, struct em_rx_queue *, struct tx_ring *, struct rx_ring *); static bool em_automask_tso(if_ctx_t); +static int em_sysctl_tso_tcp_flags_mask(SYSCTL_HANDLER_ARGS); static int em_sysctl_int_delay(SYSCTL_HANDLER_ARGS); static void em_add_int_delay_sysctl(struct e1000_softc *, const char *, const char *, struct em_int_delay_info *, int, int); @@ -878,6 +879,24 @@ em_if_attach_pre(if_ctx_t ctx) igb_sysctl_dmac, "I", "DMA Coalesce"); } + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, + "tso_tcp_flags_mask_first_segment", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, + sc, 0, em_sysctl_tso_tcp_flags_mask, "IU", + "TSO TCP flags mask for first segment"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, + "tso_tcp_flags_mask_middle_segment", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, + sc, 1, em_sysctl_tso_tcp_flags_mask, "IU", + "TSO TCP flags mask for middle segment"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, + "tso_tcp_flags_mask_last_segment", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, + sc, 2, em_sysctl_tso_tcp_flags_mask, "IU", + "TSO TCP flags mask for last segment"); + scctx->isc_tx_nsegments = EM_MAX_SCATTER; scctx->isc_nrxqsets_max = scctx->isc_ntxqsets_max = em_set_num_queues(ctx); if (bootverbose) @@ -5184,6 +5203,43 @@ em_sysctl_int_delay(SYSCTL_HANDLER_ARGS) return (0); } +static int +em_sysctl_tso_tcp_flags_mask(SYSCTL_HANDLER_ARGS) +{ + struct e1000_softc *sc; + u32 reg, val, shift; + int error, mask; + + sc = oidp->oid_arg1; + switch (oidp->oid_arg2) { + case 0: + reg = E1000_DTXTCPFLGL; + shift = 0; + break; + case 1: + reg = E1000_DTXTCPFLGL; + shift = 16; + break; + case 2: + reg = E1000_DTXTCPFLGH; + shift = 0; + break; + default: + return (EINVAL); + break; + } + val = E1000_READ_REG(&sc->hw, reg); + mask = (val >> shift) & 0xfff; + error = sysctl_handle_int(oidp, &mask, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + if (mask < 0 || mask > 0xfff) + return (EINVAL); + val = (val & ~(0xfff << shift)) | (mask << shift); + E1000_WRITE_REG(&sc->hw, reg, val); + return (0); +} + static void em_add_int_delay_sysctl(struct e1000_softc *sc, const char *name, const char *description, struct em_int_delay_info *info,