From owner-svn-src-head@freebsd.org Fri Sep 23 20:03:29 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 62FD9BE8658; Fri, 23 Sep 2016 20:03:29 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3CD8F1239; Fri, 23 Sep 2016 20:03:29 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8NK3Sg6009796; Fri, 23 Sep 2016 20:03:28 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8NK3SsU009795; Fri, 23 Sep 2016 20:03:28 GMT (envelope-from np@FreeBSD.org) Message-Id: <201609232003.u8NK3SsU009795@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Fri, 23 Sep 2016 20:03:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r306277 - head/sys/dev/cxgbe X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Sep 2016 20:03:29 -0000 Author: np Date: Fri Sep 23 20:03:28 2016 New Revision: 306277 URL: https://svnweb.freebsd.org/changeset/base/306277 Log: cxgbe(4): Make the location/length of all descriptor rings available in the sysctl MIB. Modified: head/sys/dev/cxgbe/t4_sge.c Modified: head/sys/dev/cxgbe/t4_sge.c ============================================================================== --- head/sys/dev/cxgbe/t4_sge.c Fri Sep 23 19:05:07 2016 (r306276) +++ head/sys/dev/cxgbe/t4_sge.c Fri Sep 23 20:03:28 2016 (r306277) @@ -177,8 +177,8 @@ static int free_ring(struct adapter *, b static int alloc_iq_fl(struct vi_info *, struct sge_iq *, struct sge_fl *, int, int); static int free_iq_fl(struct vi_info *, struct sge_iq *, struct sge_fl *); -static void add_fl_sysctls(struct sysctl_ctx_list *, struct sysctl_oid *, - struct sge_fl *); +static void add_fl_sysctls(struct adapter *, struct sysctl_ctx_list *, + struct sysctl_oid *, struct sge_fl *); static int alloc_fwq(struct adapter *); static int free_fwq(struct adapter *); static int alloc_mgmtq(struct adapter *); @@ -2878,8 +2878,8 @@ free_iq_fl(struct vi_info *vi, struct sg } static void -add_fl_sysctls(struct sysctl_ctx_list *ctx, struct sysctl_oid *oid, - struct sge_fl *fl) +add_fl_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, + struct sysctl_oid *oid, struct sge_fl *fl) { struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); @@ -2887,6 +2887,11 @@ add_fl_sysctls(struct sysctl_ctx_list *c "freelist"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &fl->ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + fl->sidx * EQ_ESIZE + sc->params.sge.spg_len, + "desc ring size in bytes"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cntxt_id", CTLTYPE_INT | CTLFLAG_RD, &fl->cntxt_id, 0, sysctl_uint16, "I", "SGE context id of the freelist"); @@ -2942,6 +2947,10 @@ alloc_fwq(struct adapter *sc) NULL, "firmware event queue"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UAUTO(&sc->ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &fwq->ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(&sc->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + fwq->qsize * IQ_ESIZE, "descriptor ring size in bytes"); SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "abs_id", CTLTYPE_INT | CTLFLAG_RD, &fwq->abs_id, 0, sysctl_uint16, "I", "absolute id of the queue"); @@ -3053,6 +3062,10 @@ alloc_rxq(struct vi_info *vi, struct sge NULL, "rx queue"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UAUTO(&vi->ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &rxq->iq.ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + rxq->iq.qsize * IQ_ESIZE, "descriptor ring size in bytes"); SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "abs_id", CTLTYPE_INT | CTLFLAG_RD, &rxq->iq.abs_id, 0, sysctl_uint16, "I", "absolute id of the queue"); @@ -3074,7 +3087,7 @@ alloc_rxq(struct vi_info *vi, struct sge CTLFLAG_RD, &rxq->vlan_extraction, "# of times hardware extracted 802.1Q tag"); - add_fl_sysctls(&vi->ctx, oid, &rxq->fl); + add_fl_sysctls(sc, &vi->ctx, oid, &rxq->fl); return (rc); } @@ -3103,12 +3116,13 @@ static int alloc_ofld_rxq(struct vi_info *vi, struct sge_ofld_rxq *ofld_rxq, int intr_idx, int idx, struct sysctl_oid *oid) { + struct port_info *pi = vi->pi; int rc; struct sysctl_oid_list *children; char name[16]; rc = alloc_iq_fl(vi, &ofld_rxq->iq, &ofld_rxq->fl, intr_idx, - vi->pi->rx_chan_map); + pi->rx_chan_map); if (rc != 0) return (rc); @@ -3119,6 +3133,10 @@ alloc_ofld_rxq(struct vi_info *vi, struc NULL, "rx queue"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UAUTO(&vi->ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &ofld_rxq->iq.ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + ofld_rxq->iq.qsize * IQ_ESIZE, "descriptor ring size in bytes"); SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "abs_id", CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->iq.abs_id, 0, sysctl_uint16, "I", "absolute id of the queue"); @@ -3129,7 +3147,7 @@ alloc_ofld_rxq(struct vi_info *vi, struc CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->iq.cidx, 0, sysctl_uint16, "I", "consumer index"); - add_fl_sysctls(&vi->ctx, oid, &ofld_rxq->fl); + add_fl_sysctls(pi->adapter, &vi->ctx, oid, &ofld_rxq->fl); return (rc); } @@ -3550,6 +3568,11 @@ alloc_wrq(struct adapter *sc, struct vi_ wrq->nwr_pending = 0; wrq->ndesc_needed = 0; + SYSCTL_ADD_UAUTO(ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &wrq->eq.ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + wrq->eq.sidx * EQ_ESIZE + sc->params.sge.spg_len, + "desc ring size in bytes"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, &wrq->eq.cntxt_id, 0, "SGE context id of the queue"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx", @@ -3558,6 +3581,8 @@ alloc_wrq(struct adapter *sc, struct vi_ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pidx", CTLTYPE_INT | CTLFLAG_RD, &wrq->eq.pidx, 0, sysctl_uint16, "I", "producer index"); + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, + wrq->eq.sidx, "status page index"); SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_direct", CTLFLAG_RD, &wrq->tx_wrs_direct, "# of work requests (direct)"); SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs_copied", CTLFLAG_RD, @@ -3637,6 +3662,11 @@ alloc_txq(struct vi_info *vi, struct sge NULL, "tx queue"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UAUTO(&vi->ctx, children, OID_AUTO, "ba", CTLFLAG_RD, + &eq->ba, "bus address of descriptor ring"); + SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "dmalen", CTLFLAG_RD, NULL, + eq->sidx * EQ_ESIZE + sc->params.sge.spg_len, + "desc ring size in bytes"); SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "abs_id", CTLFLAG_RD, &eq->abs_id, 0, "absolute id of the queue"); SYSCTL_ADD_UINT(&vi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, @@ -3647,6 +3677,8 @@ alloc_txq(struct vi_info *vi, struct sge SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "pidx", CTLTYPE_INT | CTLFLAG_RD, &eq->pidx, 0, sysctl_uint16, "I", "producer index"); + SYSCTL_ADD_INT(&vi->ctx, children, OID_AUTO, "sidx", CTLFLAG_RD, NULL, + eq->sidx, "status page index"); SYSCTL_ADD_PROC(&vi->ctx, children, OID_AUTO, "tc", CTLTYPE_INT | CTLFLAG_RW, vi, idx, sysctl_tc, "I",