From nobody Fri Aug 04 01:11:40 2023 X-Original-To: dev-commits-src-all@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 4RH7305qg3zZX5F; Fri, 4 Aug 2023 01:11:40 +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 4RH7305Npsz4Wj9; Fri, 4 Aug 2023 01:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1691111500; 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=KNSvFD8zBH+r5+cKM5NG8NdOzeXVBfNzUAwx0TCR8t0=; b=mM8qXBY4iFVQ2A18h646Aul+ysQ1/0Kv3sq+gNS6k+kbEKxVHU9H3kOud2hNjcjTKCO9ov ot/rKzyPZBYQOcmII8oY81z1c8HrPZ3rg1pcCFKW2fYIPft4vuEqCAiqrmNBHg3Pu0hLuC 8uqQ48e2AqUvKWCZFF0Acdnm4kDRAUhNAigir2nSPLAJF8KO+RsVkjGBemoKWIiD8FcXhf 1HPNc5niZvDGA8iCbwZ8LDlfzJELEnQv8kcvLlOxT2iVrKQ6R3O9NiuqpGZHiheF8xVsqu temm7d7abY/EIF0D8lAEDwSSdHRkurpvrcZdaN4hZmaWnpqdfpRISxGw/ZY83A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1691111500; 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=KNSvFD8zBH+r5+cKM5NG8NdOzeXVBfNzUAwx0TCR8t0=; b=yWK4aIl4KH92hmK+QARNIE5bkYBuoSQ+NRSTVRaviDSS5MUAnPZVyBQtR/UugF60G2JEmb 0W6P0BXDvrKBF0ToxsWdvgi1+ekxKP1JyC+oOVwWw+8Uj5GK60c87bQK8MgsOegVegXIJM DcO/GTHBbl1cLGzOjxS9jxcRzmqYgiWWbqVf495XrDU9RrFG0fOptDjHW5bTqqfXII7+uo ZvCQHCGoyrHvZNp1am/D1qMawU8i4S/sDwW54Hhmw8sX9mB3I9lMuLmzGk+gxCW/vHEBkD ZwYI15XbJ81YBVcHVxc1kr+faIlBURiCdeUkv7Wju3ACcfknixZ/8HXw72RgXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1691111500; a=rsa-sha256; cv=none; b=h6qKyXr4+yafKyoOwBwtt+j/PjVUdHoIBNENTNWBdiVd1NMZLcvdcwh2S7FZR0j0lE5nps YDy2oMULPTAwCyVg908P/bYzlDicbsnsK5R8RncZySaeSd+W/U9QRwUfETpY+3QmeYw3VF FySTBEqOR8rbLldFFMtL4TWLoLkkbgD1WjqQ0dToR8AgIip2sMViEJOsiuIWt9J1mbWt3X 0ofbE9qH7k+t4/BozEqdCthu7G4Gv9WuGCYN0k4CQIqQXOwCzheofSSfDiLEwcCeXFQMhm eLIJZwfOffIBvXYg53Heu40AHug+9HV0lE77/xKjd56uSuTm3/4vegGdDXyU4Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4RH7304RvvzjKN; Fri, 4 Aug 2023 01:11:40 +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 3741BeTv002474; Fri, 4 Aug 2023 01:11:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3741BeMp002462; Fri, 4 Aug 2023 01:11:40 GMT (envelope-from git) Date: Fri, 4 Aug 2023 01:11:40 GMT Message-Id: <202308040111.3741BeMp002462@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: c45dba3890e4 - stable/13 - e1000: Some fixes for em(4) TSO setup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@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: c45dba3890e489225e0c837abb38b35defc80480 Auto-Submitted: auto-generated The branch stable/13 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=c45dba3890e489225e0c837abb38b35defc80480 commit c45dba3890e489225e0c837abb38b35defc80480 Author: Kevin Bowling AuthorDate: 2023-07-21 01:51:02 +0000 Commit: Kevin Bowling CommitDate: 2023-08-04 01:11:07 +0000 e1000: Some fixes for em(4) TSO setup Always set TXD_CMD_IP for 82544 Otherwise set TXD_CMD_IP for IPv4, not IPv6 Reviewed by: markj (previous version) Differential Revision: https://reviews.freebsd.org/D30072 (cherry picked from commit 201c4b7c29da44500ccb9e47b854dc1207df8b0a) --- sys/dev/e1000/em_txrx.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/sys/dev/e1000/em_txrx.c b/sys/dev/e1000/em_txrx.c index 255aea6347d2..47f9b187aa14 100644 --- a/sys/dev/e1000/em_txrx.c +++ b/sys/dev/e1000/em_txrx.c @@ -141,8 +141,10 @@ em_tso_setup(struct e1000_softc *sc, if_pkt_info_t pi, uint32_t *txd_upper, if_softc_ctx_t scctx = sc->shared; struct em_tx_queue *que = &sc->tx_queues[pi->ipi_qsidx]; struct tx_ring *txr = &que->txr; + struct e1000_hw *hw = &sc->hw; struct e1000_context_desc *TXD; int cur, hdr_len; + uint32_t cmd_type_len; hdr_len = pi->ipi_ehdrlen + pi->ipi_ip_hlen + pi->ipi_tcp_hlen; *txd_lower = (E1000_TXD_CMD_DEXT | /* Extended descr type */ @@ -183,12 +185,23 @@ em_tso_setup(struct e1000_softc *sc, if_pkt_info_t pi, uint32_t *txd_upper, TXD->tcp_seg_setup.fields.mss = htole16(pi->ipi_tso_segsz); TXD->tcp_seg_setup.fields.hdr_len = hdr_len; - TXD->cmd_and_length = htole32(sc->txd_cmd | - E1000_TXD_CMD_DEXT | /* Extended descr */ - E1000_TXD_CMD_TSE | /* TSE context */ - E1000_TXD_CMD_IP | /* Do IP csum */ - E1000_TXD_CMD_TCP | /* Do TCP checksum */ - (pi->ipi_len - hdr_len)); /* Total len */ + /* + * 8254x SDM4.0 page 45, and PCIe GbE SDM2.5 page 63 + * - Set up basic TUCMDs + * - Enable IP bit on 82544 + * - For others IP bit on indicates IPv4, while off indicates IPv6 + */ + cmd_type_len = sc->txd_cmd | + E1000_TXD_CMD_DEXT | /* Extended descr */ + E1000_TXD_CMD_TSE | /* TSE context */ + E1000_TXD_CMD_TCP; /* Do TCP checksum */ + if (hw->mac.type == e1000_82544) + cmd_type_len |= E1000_TXD_CMD_IP; + else if (pi->ipi_etype == ETHERTYPE_IP) + cmd_type_len |= E1000_TXD_CMD_IP; + TXD->cmd_and_length = htole32(cmd_type_len | + (pi->ipi_len - hdr_len)); /* Total len */ + txr->tx_tso = true; if (++cur == scctx->isc_ntxd[0]) {