From nobody Mon Sep 12 18:48:13 2022 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 4MRFwZ1mlNz4c1SV; Mon, 12 Sep 2022 18:48:14 +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 4MRFwZ11zZz3Stq; Mon, 12 Sep 2022 18:48:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663008494; 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=ON7/m/ObqOvYO9z6zlDXQBNSqYeC1CDsFY42i5Oxlao=; b=py/73K2FpFXAkpGcjwVGDXtcul8wbpP3lpfApD62vbTluLzRUIlrEXL2wnzeLxHOj7Gd8K mfVD/Nbj93wbH85enO0otQnb0m2TJ9Yu4bTbdxQc1BsJbGNSKpsmmibYYvKLEAPhp6fMQ7 b9HDCFp6pJPuSMz3DS4Ttl5XdNfTl2wZdU17bCP4mpIPExfv4ySMixf7DbivvEXot2pOtB UNrdj3Tt4zgEulQNxMVqEE0No+ux4UFI/7IQZ5XnQjTI3UNMn4eS4DPzfHJQPJX+lTlmms TicwXdJn2XLlFotAPdcLmWHyNUuVp+YP4H6hPxd6newlaoRUtsS6T/QBJrDN0w== 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 4MRFwZ044Zz14Qh; Mon, 12 Sep 2022 18:48:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 28CImDkR038424; Mon, 12 Sep 2022 18:48:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 28CImDko038423; Mon, 12 Sep 2022 18:48:13 GMT (envelope-from git) Date: Mon, 12 Sep 2022 18:48:13 GMT Message-Id: <202209121848.28CImDko038423@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Navdeep Parhar Subject: git: c387ff0045d6 - main - cxgbe(4): Specify the ingress queue's type when creating it. 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: np X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c387ff0045d620d60ed8250360d4196a4c962a13 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663008494; 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=ON7/m/ObqOvYO9z6zlDXQBNSqYeC1CDsFY42i5Oxlao=; b=Nq6ibeaUGBOAXzaiVS58Sv9Ue+nIIjEBrW5ThftD0/roWBlV0G7m+mP0Av63JTbCWYgiPI u3VwQyMRzlAtZYZyWlDv8b+HJS2tGeBpc9NZaRP4LNfDmIQ7ojCkjeTQCCrLHnGWKpIr+v s37AYeM0mwlKn6enlrb60uGGaK4jwQvTO6+mUsuWSTQ4WmmVAQvTTXWETxvlMcR8h1jkvb NZEJDPUVLW+qPpJg4Gjgd1UW5BmsBi+fnSSg/1K5I2UwnNhdZdQbPqA/VHZFG+cvPPdE5Y PW+sxNTOAcD6mX4yr5VP5HHpm7H+rD1tCUeY4Wxz+//TYqEox/B6yO1vSpbgUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1663008494; a=rsa-sha256; cv=none; b=KpepbJyaK3xMgvJ6fdrsygrLhl6fJAF98YSEB0dVZkvyTl5Je6nw6nBVQwSftS6jZdgqS8 LIWnLM7Yty2QkhA5R//VP5EyXosuRj+ZzCDx2JNTw2AZici11KSLC+52GBO6B8C1TsdK+l gz3QDK8O2U7CwWetOMR8pIsfZM2RDS5/5exjUlMYMXJsBYLzO2YsdPxwE3A7MD/BSRqJD2 5Jyi+8bxgx2xztjjZgPaKcTZ1UF1rl2dVBvf4muVDItz08U+Y6AuS3ZLKx3S7GTRfM1x+o cMZrwO4pFP4GyA0PChOm9/j7LjIkWELPIbgZgzM/3C/WvFvl48PJe+kqoxT6ng== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=c387ff0045d620d60ed8250360d4196a4c962a13 commit c387ff0045d620d60ed8250360d4196a4c962a13 Author: Navdeep Parhar AuthorDate: 2022-09-08 18:47:38 +0000 Commit: Navdeep Parhar CommitDate: 2022-09-12 18:40:25 +0000 cxgbe(4): Specify the ingress queue's type when creating it. The firmware takes the type into account when setting up the PCIe channel for the queue. MFC after: 1 week Sponsored by: Chelsio Communications --- sys/dev/cxgbe/adapter.h | 8 +++++++- sys/dev/cxgbe/t4_netmap.c | 1 + sys/dev/cxgbe/t4_sge.c | 16 ++++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index 66074749044a..41d8e2879b20 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -372,6 +372,11 @@ struct iq_desc { CTASSERT(sizeof(struct iq_desc) == IQ_ESIZE); enum { + /* iq type */ + IQ_OTHER = FW_IQ_IQTYPE_OTHER, + IQ_ETH = FW_IQ_IQTYPE_NIC, + IQ_OFLD = FW_IQ_IQTYPE_OFLD, + /* iq flags */ IQ_SW_ALLOCATED = (1 << 0), /* sw resources allocated */ IQ_HAS_FL = (1 << 1), /* iq associated with a freelist */ @@ -415,7 +420,8 @@ typedef int (*fw_msg_handler_t)(struct adapter *, const __be64 *); * Ingress Queue: T4 is producer, driver is consumer. */ struct sge_iq { - uint32_t flags; + uint16_t flags; + uint8_t qtype; volatile int state; struct adapter *adapter; struct iq_desc *desc; /* KVA of descriptor ring */ diff --git a/sys/dev/cxgbe/t4_netmap.c b/sys/dev/cxgbe/t4_netmap.c index 8c5b9f500661..a847dca3ddbd 100644 --- a/sys/dev/cxgbe/t4_netmap.c +++ b/sys/dev/cxgbe/t4_netmap.c @@ -326,6 +326,7 @@ alloc_nm_rxq_hwq(struct vi_info *vi, struct sge_nm_rxq *nm_rxq, int cong) } c.iqns_to_fl0congen |= htobe32(V_FW_IQ_CMD_FL0HOSTFCMODE(X_HOSTFCMODE_NONE) | + V_FW_IQ_CMD_IQTYPE(FW_IQ_IQTYPE_NIC) | F_FW_IQ_CMD_FL0FETCHRO | F_FW_IQ_CMD_FL0DATARO | (fl_pad ? F_FW_IQ_CMD_FL0PADEN : 0) | (black_hole == 2 ? F_FW_IQ_CMD_FL0PACKEN : 0)); diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index 8def1e6122cb..43bb7d9e559a 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -236,7 +236,7 @@ static struct mbuf *get_fl_payload(struct adapter *, struct sge_fl *, uint32_t); static int eth_rx(struct adapter *, struct sge_rxq *, const struct iq_desc *, u_int); static inline void init_iq(struct sge_iq *, struct adapter *, int, int, int, - int, int); + int, int, int); static inline void init_fl(struct adapter *, struct sge_fl *, int, int, char *); static inline void init_eq(struct adapter *, struct sge_eq *, int, int, uint8_t, struct sge_iq *, char *); @@ -3357,7 +3357,7 @@ send_txpkts: static inline void init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx, - int qsize, int intr_idx, int cong) + int qsize, int intr_idx, int cong, int qtype) { KASSERT(tmr_idx >= 0 && tmr_idx < SGE_NTIMERS, @@ -3366,10 +3366,13 @@ init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx, ("%s: bad pktc_idx %d", __func__, pktc_idx)); KASSERT(intr_idx >= -1 && intr_idx < sc->intr_count, ("%s: bad intr_idx %d", __func__, intr_idx)); + KASSERT(qtype == FW_IQ_IQTYPE_OTHER || qtype == FW_IQ_IQTYPE_NIC || + qtype == FW_IQ_IQTYPE_OFLD, ("%s: bad qtype %d", __func__, qtype)); iq->flags = 0; iq->state = IQS_DISABLED; iq->adapter = sc; + iq->qtype = qtype; iq->intr_params = V_QINTR_TIMER_IDX(tmr_idx); iq->intr_pktc_idx = SGE_NCOUNTERS - 1; if (pktc_idx >= 0) { @@ -3585,8 +3588,9 @@ alloc_iq_fl_hwq(struct vi_info *vi, struct sge_iq *iq, struct sge_fl *fl) V_FW_IQ_CMD_IQESIZE(ilog2(IQ_ESIZE) - 4)); c.iqsize = htobe16(iq->qsize); c.iqaddr = htobe64(iq->ba); + c.iqns_to_fl0congen = htobe32(V_FW_IQ_CMD_IQTYPE(iq->qtype)); if (iq->cong >= 0) - c.iqns_to_fl0congen = htobe32(F_FW_IQ_CMD_IQFLINTCONGEN); + c.iqns_to_fl0congen |= htobe32(F_FW_IQ_CMD_IQFLINTCONGEN); if (fl) { bzero(fl->desc, fl->sidx * EQ_ESIZE + sc->params.sge.spg_len); @@ -3802,7 +3806,7 @@ alloc_fwq(struct adapter *sc) intr_idx = 0; else intr_idx = sc->intr_count > 1 ? 1 : 0; - init_iq(fwq, sc, 0, 0, FW_IQ_QSIZE, intr_idx, -1); + init_iq(fwq, sc, 0, 0, FW_IQ_QSIZE, intr_idx, -1, IQ_OTHER); rc = alloc_iq_fl(vi, fwq, NULL, &sc->ctx, sc->fwq_oid); if (rc != 0) { CH_ERR(sc, "failed to allocate fwq: %d\n", rc); @@ -3956,7 +3960,7 @@ alloc_rxq(struct vi_info *vi, struct sge_rxq *rxq, int idx, int intr_idx, "rx queue"); init_iq(&rxq->iq, sc, vi->tmr_idx, vi->pktc_idx, vi->qsize_rxq, - intr_idx, tnl_cong(vi->pi, cong_drop)); + intr_idx, tnl_cong(vi->pi, cong_drop), IQ_ETH); #if defined(INET) || defined(INET6) if (ifp->if_capenable & IFCAP_LRO) rxq->iq.flags |= IQ_LRO_ENABLED; @@ -4079,7 +4083,7 @@ alloc_ofld_rxq(struct vi_info *vi, struct sge_ofld_rxq *ofld_rxq, int idx, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "offload rx queue"); init_iq(&ofld_rxq->iq, sc, vi->ofld_tmr_idx, vi->ofld_pktc_idx, - vi->qsize_rxq, intr_idx, 0); + vi->qsize_rxq, intr_idx, 0, IQ_OFLD); snprintf(name, sizeof(name), "%s ofld_rxq%d-fl", device_get_nameunit(vi->dev), idx); init_fl(sc, &ofld_rxq->fl, vi->qsize_rxq / 8, maxp, name);