From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-0016ce01.pphosted.com (mx0b-0016ce01.pphosted.com [67.231.156.153]) by dpdk.org (Postfix) with ESMTP id 306D8374E for ; Wed, 6 Apr 2016 02:37:37 +0200 (CEST) Received: from pps.filterd (m0085408.ppops.net [127.0.0.1]) by mx0b-0016ce01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u360bY1O016100; Tue, 5 Apr 2016 17:37:34 -0700 Received: from avcashub1.qlogic.com ([198.186.0.116]) by mx0b-0016ce01.pphosted.com with ESMTP id 222xg44aa5-1 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NOT); Tue, 05 Apr 2016 17:37:34 -0700 Received: from avluser05.qlc.com (10.1.113.115) by qlc.com (10.1.4.191) with Microsoft SMTP Server id 14.3.235.1; Tue, 5 Apr 2016 17:37:33 -0700 Received: (from rmody@localhost) by avluser05.qlc.com (8.14.4/8.14.4/Submit) id u360bXei003397; Tue, 5 Apr 2016 17:37:33 -0700 X-Authentication-Warning: avluser05.qlc.com: rmody set sender to rasesh.mody@qlogic.com using -f From: Rasesh Mody To: CC: , , , Rasesh Mody Date: Tue, 5 Apr 2016 17:37:07 -0700 Message-ID: <1459903028-3329-3-git-send-email-rasesh.mody@qlogic.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1459903028-3329-1-git-send-email-rasesh.mody@qlogic.com> References: <1459903028-3329-1-git-send-email-rasesh.mody@qlogic.com> MIME-Version: 1.0 Content-Type: text/plain disclaimer: bypass X-Proofpoint-Virus-Version: vendor=nai engine=5800 definitions=8126 signatures=670708 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1603180000 definitions=main-1604060007 Subject: [dpdk-dev] [PATCH v3 3/4] bnx2x: Enhance stats get X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Apr 2016 00:37:37 -0000 Enhance the stats_get() routine to display drop counters under imissed counter. Added extended stats get support to provide additional info. Signed-off-by: Rasesh Mody --- drivers/net/bnx2x/bnx2x_ethdev.c | 72 ++++++++++++++++++++++++++++++++++++++ drivers/net/bnx2x/bnx2x_rxtx.c | 2 ++ 2 files changed, 74 insertions(+) diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index 071b44f..1f38f6d 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -276,6 +276,9 @@ static void bnx2x_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) { struct bnx2x_softc *sc = dev->data->dev_private; + uint32_t brb_truncate_discard; + uint64_t brb_drops; + uint64_t brb_truncates; PMD_INIT_FUNC_TRACE(); @@ -316,6 +319,73 @@ bnx2x_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) stats->rx_nombuf = HILO_U64(sc->eth_stats.no_buff_discard_hi, sc->eth_stats.no_buff_discard_lo); + + brb_drops = + HILO_U64(sc->eth_stats.brb_drop_hi, + sc->eth_stats.brb_drop_lo); + + brb_truncates = + HILO_U64(sc->eth_stats.brb_truncate_hi, + sc->eth_stats.brb_truncate_lo); + + brb_truncate_discard = sc->eth_stats.brb_truncate_discard; + + stats->imissed = brb_drops + brb_truncates + + brb_truncate_discard + stats->rx_nombuf; +} + +#define BNX2X_EXTENDED_STATS 9 + +static int +bnx2x_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstats *xstats, + unsigned n) +{ + struct bnx2x_softc *sc = dev->data->dev_private; + unsigned num = BNX2X_EXTENDED_STATS; + + if (n < num) + return num; + + num = 0; + + bnx2x_stats_handle(sc, STATS_EVENT_UPDATE); + + snprintf(xstats[num].name, sizeof(xstats[num].name), "brb_drops"); + xstats[num++].value = HILO_U64(sc->eth_stats.brb_drop_hi, + sc->eth_stats.brb_drop_lo); + + snprintf(xstats[num].name, sizeof(xstats[num].name), "brb_truncates"); + xstats[num++].value = HILO_U64(sc->eth_stats.brb_truncate_hi, + sc->eth_stats.brb_truncate_lo); + + snprintf(xstats[num].name, sizeof(xstats[num].name), + "brb_truncate_discard"); + xstats[num++].value = sc->eth_stats.brb_truncate_discard; + + snprintf(xstats[num].name, sizeof(xstats[num].name), + "mac_filter_discard"); + xstats[num++].value = sc->eth_stats.mac_filter_discard; + + snprintf(xstats[num].name, sizeof(xstats[num].name), "mf_tag_discard"); + xstats[num++].value = sc->eth_stats.mf_tag_discard; + + snprintf(xstats[num].name, sizeof(xstats[num].name), "tx_pause"); + xstats[num++].value = HILO_U64(sc->eth_stats.pause_frames_sent_hi, + sc->eth_stats.pause_frames_sent_lo); + + snprintf(xstats[num].name, sizeof(xstats[num].name), "rx_pause"); + xstats[num++].value = HILO_U64(sc->eth_stats.pause_frames_received_hi, + sc->eth_stats.pause_frames_received_lo); + + snprintf(xstats[num].name, sizeof(xstats[num].name), "tx_pfc"); + xstats[num++].value = HILO_U64(sc->eth_stats.pfc_frames_sent_hi, + sc->eth_stats.pfc_frames_sent_lo); + + snprintf(xstats[num].name, sizeof(xstats[num].name), "rx_pfc"); + xstats[num++].value = HILO_U64(sc->eth_stats.pfc_frames_received_hi, + sc->eth_stats.pfc_frames_received_lo); + + return num; } static void @@ -360,6 +430,7 @@ static const struct eth_dev_ops bnx2x_eth_dev_ops = { .allmulticast_disable = bnx2x_dev_allmulticast_disable, .link_update = bnx2x_dev_link_update, .stats_get = bnx2x_dev_stats_get, + .xstats_get = bnx2x_dev_xstats_get, .dev_infos_get = bnx2x_dev_infos_get, .rx_queue_setup = bnx2x_dev_rx_queue_setup, .rx_queue_release = bnx2x_dev_rx_queue_release, @@ -383,6 +454,7 @@ static const struct eth_dev_ops bnx2xvf_eth_dev_ops = { .allmulticast_disable = bnx2x_dev_allmulticast_disable, .link_update = bnx2xvf_dev_link_update, .stats_get = bnx2x_dev_stats_get, + .xstats_get = bnx2x_dev_xstats_get, .dev_infos_get = bnx2x_dev_infos_get, .rx_queue_setup = bnx2x_dev_rx_queue_setup, .rx_queue_release = bnx2x_dev_rx_queue_release, diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c index 8b047d4..60bd08b 100644 --- a/drivers/net/bnx2x/bnx2x_rxtx.c +++ b/drivers/net/bnx2x/bnx2x_rxtx.c @@ -405,6 +405,8 @@ bnx2x_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) new_mb = bnx2x_rxmbuf_alloc(rxq->mb_pool); if (unlikely(!new_mb)) { PMD_RX_LOG(ERR, "mbuf alloc fail fp[%02d]", fp->index); + rte_eth_devices[rxq->port_id].data-> + rx_mbuf_alloc_failed++; goto next_rx; } -- 1.7.10.3