From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0081.outbound.protection.outlook.com [104.47.32.81]) by dpdk.org (Postfix) with ESMTP id 7BB869B6B for ; Thu, 13 Sep 2018 13:36:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/PKq6GVihzds82oKqFVpXBSxdgrfoEcpcGA7PJi1uG0=; b=fiXxh4qEzVF2OvoPG2/JbVUPw2xyIoIG2AJNqVRBOQYE7dtDF8fl4I6UQRrjIO4sIO6Yo+Xke4lYKE+AbqxmCRUC0q0qI82pgTOHimRm1TJfDwm9pF0HmDGveN71v+FlYJhRSzprxrkcpVbJQ0qAL864UbYNuuK0zXlJuNRBCB0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; Received: from ubuntubox.rdc.aquantia.com (95.79.108.179) by BLUPR0701MB1650.namprd07.prod.outlook.com (2a01:111:e400:58c6::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.15; Thu, 13 Sep 2018 11:36:09 +0000 From: Igor Russkikh To: dev@dpdk.org Cc: pavel.belous@aquantia.com, igor.russkikh@aquantia.com Date: Thu, 13 Sep 2018 14:35:24 +0300 Message-Id: <1536838528-11800-17-git-send-email-igor.russkikh@aquantia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com> References: <1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.79.108.179] X-ClientProxiedBy: VI1PR0202CA0026.eurprd02.prod.outlook.com (2603:10a6:803:14::39) To BLUPR0701MB1650.namprd07.prod.outlook.com (2a01:111:e400:58c6::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7ff73a53-57cd-4be8-071b-08d6196d1a27 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BLUPR0701MB1650; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1650; 3:beepcLGkUDz4K7lL7pn9tL8b5M6W16dDHQr3qQHRcrGsOTcF2/sXDXCMP7ldXZwwWZSLaIVIRTchE4WTcQ305QWylzC6r01j1xGw0doPMzsclWNV2nJf5qDxupTvqGH8gjnj4HaE/418vYkpPnGgyJUcSCZyWECXEWws2iZocO+MvXj7kKWaBTxIJNn10E5/xsF0OkF0rDjWgvHpl4ayJir+A7YSnha96gLiVVvxT8tGqCiYAWv42bzLI19hInOF; 25:9BDWjfs9Z8k7OwEYAcbgNnE1N3CbUcr/BKeBIfpADfK/ANwxggkx0SpbUpzPJbsrkod8Z4rEZGrqi/WAc6FBxpTU9uBDb+7yOQzyXZdmCUEEqDZXwx15GzZksAYKvU2Wo8h9t7Q0Qb3ZUJmsCjGowRyNU/m811wCwsMTtWFFkAEBIRf2rPCvH8XO/5i36UaAkpsnFJNAh2FXPTHSmKvK8DC9TW36g+z4jVu3qA+ffWKZJ7keo4FDJHfhrBlw1c/jVB+QdzgS67l2tFkisFTQcuUNcX+C6VCFtEumPY40CZlpNzNrrGRHHl72mJcmgkAzcSJLxwmgeqvtN4wPMev5FE7q3xXBfclcEC34qmFedPU=; 31:ab03YMyNQKZ0gfgMza6coqzDDlQSHLY6mN9cLWpEn7cTWqQbtg1meQAWIwEl5xXZZm2A/6ebGZDi++Ej4U0t1g/T8hY0gYlRJHY7fwfI3uFhxG1PvKz1GSe/+NynPRvXyTd+41C8wiheeIjCE/edWkH0+dtpD9r1lZqhPkTPhz/viQBkw3FD9QEEcuNV7nfvP8+1tM4E7bbVCm2fydAr2/ONlhYccl86DSeT9Wtaur4= X-MS-TrafficTypeDiagnostic: BLUPR0701MB1650: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1650; 20:3DzREE3tn7IzZZpmAjtH9P8g1tPiaveE3f0ughPDQv5eB8LuOJAk+u3DIzE8H1WF7xpZvs+uGWvHwqHjEmKWMtarZ5LRf74aVuw+RG613ovdvgQ5JOxFqfY4iKRwnrXNo+lUVJZSR1o0Z3GXMOqVUY1mndlAEhHTN5aI8IjXAmMoP3Obsr4L2Mlp/DlcQF4tD2Ovdvto9Xf3mNjcxT0GoTCe5mh6Vl1nMZWVAYmagZiif3Lzn8xJLk/qCRRl7GwXkg9ASKtM1D3BfYEV6fuPSe/vE/yOEFzACPJDD+hRcr9/LsB1Iuq2/3xr16h+3xNfMfzRL/rQwlOsjDVD+znaIb1AklOEoDzDcQibRF3XA9hCy36lptfX2czdZ0kzUXWwcQuzI2nCgnYecUGe4fxxvOxmBY1RRyC43CO3ZTJRoY1OhwRSFGxuJxKzIr00b7sfQcsZXN0d3AmawuZc9Flytm0fC75gzHZTpCGJWNrxzmnX0VTiT9KnfmpyLX9R5dyd; 4:FpdMKVZ2XCPr/xyCYjiVw/VXEgnbU+7GfnmTTuowsBtTSBJXVbnTaxb7VtT6HMzaxvvkevMmNokNONnfRv2QH3WJ1QopQAkEof8Ja2o+Lv5OZQwVdramsWLDOPoQNU3HsOg0eiVYIeCj516MDY3LnpapBCntA1KG4m6BhdgH01+e2Q9kdyy4Q4Xkbzw7E4kFgV49CmNN9c8k/WW57qcPs5HzrbenlU3uMTRGOuH/gzrsrtlycbQ0chObE4YYdzLFtOV9oxVLvLt3MD3++HVpSQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699050); SRVR:BLUPR0701MB1650; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1650; X-Forefront-PRVS: 07943272E1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39840400004)(366004)(396003)(376002)(136003)(346002)(199004)(189003)(6666003)(6916009)(97736004)(8936002)(68736007)(25786009)(50226002)(81166006)(81156014)(4326008)(107886003)(6486002)(51416003)(2906002)(53936002)(5660300001)(36756003)(86362001)(316002)(52116002)(8676002)(16586007)(7736002)(305945005)(11346002)(446003)(476003)(956004)(47776003)(72206003)(66066001)(44832011)(478600001)(486006)(186003)(26005)(16526019)(14444005)(386003)(48376002)(2351001)(106356001)(2361001)(2616005)(3846002)(105586002)(50466002)(7696005)(6116002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1650; H:ubuntubox.rdc.aquantia.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1650; 23:N75fvu0StTIPxFvq+FD10OAKFuMGYN1u4GRDlBs?= =?us-ascii?Q?If71Ya3ctDuSxArdq1Oq/FGRvowWAbKvnKmyZy89nwVphUisSGvMdpsWShtW?= =?us-ascii?Q?LptjfhVMIBXLIee+XxyrQ46l/p7JnlvOkEjwXhLe/CHUUtqtF6yCEDF9D0yJ?= =?us-ascii?Q?SqFDCvzo2pU1U1Hptb+Jl/1vj6XGokldS8/OHcdGbOH2Ww1xMnDVJuoaTyqA?= =?us-ascii?Q?0sCHTVqfPLQ3WwU2/O+zmWjdLMo8sgIuHEKPO+jUcPb1hizcX8G+LsVrZWep?= =?us-ascii?Q?PwDCIaVt/8XjqDWjzSkK5uxNRvJ6eXtylufgNoR82LTO+5OUrcj1j+NbISAw?= =?us-ascii?Q?AFK2HAdEovY+AEYWPWsd1q053S5AO0ygUNEZtWyw98flS66xeMkuKzhiR7Gp?= =?us-ascii?Q?ukF0gyjf4RY5ka73Dlehz/x5F43UMgoOaN6sYlwrfFCmjTe1Oxhc6xJQU/oA?= =?us-ascii?Q?9cVePlabtPjqgz7F3ouLGIlSZgqWWlqe5dTduLb8ZR9S0kreiSKLRfg0OjiA?= =?us-ascii?Q?Is938Sx6rZb99zBxV1In2GVzLvS0Q8/2PKyA5ml5Be2rmWBxdOeDH3m7ITVg?= =?us-ascii?Q?BfUk7NbTo7E76MkvuBtpdD+/AY6wGDbdt2nY5Chg6uqsHK7ihSkKSvxJeJ1U?= =?us-ascii?Q?aoQeQIlxTkpPYRE2yxdwmKjjnoOj4c13cb2U2BPNyJFdWZtCvhv0697HDnmZ?= =?us-ascii?Q?Ha5cM+YTqUAyIea9jgOGjRRkIOV7/FiKVON14qwNH+RoF3r+atoCTN/t7DC4?= =?us-ascii?Q?uZAz7I9WWZkU95h6WX3JeWT8iqfYe9GGY26O+iex3+FJdvF9F9JaLD4O+vl2?= =?us-ascii?Q?AFFspuIrtlQRE0IvGYvKwfg8wzq/xMEmLk42lsTxY8FDI9aoslNVc8FoyAn6?= =?us-ascii?Q?6ZCzAVyZDJH8bHJIG9dFqiDSab//uDUYjArB96/lN7s8AkNbNGs8cE9wYoza?= =?us-ascii?Q?gFtk99ab0Q4fIABBhwILFsnoIWsEs0t6G48OkQuvp+a9tE0D9LNA47Iz2BVh?= =?us-ascii?Q?lyccBHgeXWF2aBOak4rLM8W7x6xqc3JqvwEG1rGb90zN+i0UFaR0LlN3gOyQ?= =?us-ascii?Q?VTckVtBTziCfrIYH62lyWtRHLWi93hsmg+HPTTHJ+I6LDHv+l49DlMhvi8rB?= =?us-ascii?Q?yzYkIxTP9GrLdhDgxjnOcub8l1D3U034ffAltTd5bw9UH2P5F1TqLV/AtpWd?= =?us-ascii?Q?54PXNRdZ99ZsD35U+b7eLvoC+M+bzK/fxK3/92ERuz6lQjhgqaTreEmfLQqn?= =?us-ascii?Q?QAxpSkBGO8Fz6sricqPDGTtrcRiiiWLgECMcKzOxo?= X-Microsoft-Antispam-Message-Info: xcNb1d/k4seA67xpAxmhaGYeVtLLZ/PYEJ6CMNzYKVUJPVzCKgj0kJfLDQLc2U1xmrnc/TTPJHx+YHvqsXoZMAfULpqEVzWhzRRwkWKzOV9KnMf6agEmX2q1H3Q0WMWRPNzig875hmGKldP7UeAII+e3WuATXFJAKgV+tM7rr0WCqydf9oyqOUeE1hVlByDZTTNZByA29cmSCVGn1fu+VlsYrS7y0eR5X4XiFV9TsDaW6qjE9yxtpxflB0m49ii9qg1Rsd2d+DC0LPt0/0JDi+mFxP4pcXH2abpjUAaRugLbhzR5sVl8c37YapoWhDGU/0Dl3DVcdHQmkiJEg6mBQfijpngC30PjEMZWVf+fuJ8= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1650; 6:X0ki236tWFQEXxwstbKryPvw4LnE55i7E1x7Iy7QhWDgOuTNW37mLblxv3PjTcsVUH3LdpObczmfU1eeAQXpTuJHAJiZVT2BjnT18JCJFfhjSf7eMFmCf2k7+on8LHjykqhAkAqD8P6vL2Dh/CxD2D6GEBTyYq8tWSZmbpalfz5MR/RerbK41+CSenpHvPdaPFs9vCebwSV+vfJ/7l2NeRdgQDtYhjMgTGWt4kuloiKLNiRXpkwg2KEipDd4ASjtxnYDUjGEbJ09HEeECZ6wcNua7+4Gm4I36iWZqgXKT4+hhPc6diShOEZ24dQ/U2XD+7Z9duaiDJ6fligyr1Ewj3UWniHE3iWYiNmEMoqtaqdlNbA1dLAok8s2BweNFEkYZ4akw9xjF6v1ecHxEO3YkubXZKKvOAqGrAdiHbZHunDf/x0hhgYUM3EwsTArsQn4+ORjaLhetKUzt3jf5DJGmA==; 5:yziqUj3FVYwhrGUtA1t15Tu/HIKXpsE/jnLw2lXpYu3WRwxp5SjgdQ4dAOTLon2D66XprexOvMyhjofbSg+/QlbzemUIKFzqbV+pz0+DZAbfjR2Zn07biTlLE1h7M6PCTGcj5o1PSu+lipHfdp20rB7jdKEn6T2WvTdwK4gVstU=; 7:jv0PFZGUA83XehAAZLVgCrHRJNojlp23aiIIJ3BqdGQCkkUM7GMc6+vgrEPpN0a9sAarMNX3d+9NuLZUelb48Z9cAvducsSt9gOP0gh4qnlXNL+C76g90vPA3Hj+nB8su5BwjPIAIkdQaBiEhp+sWmQRJkPKTLF3IAo3xBa8PNrt0nBZLVOTi+KmjG6BNgImm6LNDPQ2SMePMhZthGVi1CfEd8DkHk6t+wTrD+R6AL3c2CMsKZSq13HvRh4TMZ/F SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2018 11:36:09.1471 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7ff73a53-57cd-4be8-071b-08d6196d1a27 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1650 Subject: [dpdk-dev] [PATCH v2 17/21] net/atlantic: device statistics, xstats X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Sep 2018 11:36:12 -0000 Signed-off-by: Igor Russkikh --- drivers/net/atlantic/atl_ethdev.c | 136 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 44bdbcbb3..37f32c421 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -59,6 +59,19 @@ static void atl_dev_allmulticast_enable(struct rte_eth_dev *dev); static void atl_dev_allmulticast_disable(struct rte_eth_dev *dev); static int atl_dev_link_update(struct rte_eth_dev *dev, int wait); +static int atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused, + struct rte_eth_xstat_name *xstats_names, + unsigned int size); + +static int atl_dev_stats_get(struct rte_eth_dev *dev, + struct rte_eth_stats *stats); + +static int atl_dev_xstats_get(struct rte_eth_dev *dev, + struct rte_eth_xstat *stats, unsigned int n); + +static void atl_dev_stats_reset(struct rte_eth_dev *dev); +static void atl_dev_xstats_reset(struct rte_eth_dev *dev); + static int atl_dev_queue_stats_mapping_set(struct rte_eth_dev *eth_dev, uint16_t queue_id, uint8_t stat_idx, @@ -184,6 +197,34 @@ static const struct rte_eth_desc_lim tx_desc_lim = { .nb_mtu_seg_max = ATL_TX_MAX_SEG, }; +#define ATL_XSTATS_FIELD(name) { \ + #name, \ + offsetof(struct aq_stats_s, name) \ +} + +struct atl_xstats_tbl_s { + const char *name; + unsigned int offset; +}; + +static struct atl_xstats_tbl_s atl_xstats_tbl[] = { + ATL_XSTATS_FIELD(uprc), + ATL_XSTATS_FIELD(mprc), + ATL_XSTATS_FIELD(bprc), + ATL_XSTATS_FIELD(erpt), + ATL_XSTATS_FIELD(uptc), + ATL_XSTATS_FIELD(mptc), + ATL_XSTATS_FIELD(bptc), + ATL_XSTATS_FIELD(erpr), + ATL_XSTATS_FIELD(ubrc), + ATL_XSTATS_FIELD(ubtc), + ATL_XSTATS_FIELD(mbrc), + ATL_XSTATS_FIELD(mbtc), + ATL_XSTATS_FIELD(bbrc), + ATL_XSTATS_FIELD(bbtc), +}; + + static const struct eth_dev_ops atl_eth_dev_ops = { .dev_configure = atl_dev_configure, .dev_start = atl_dev_start, @@ -204,6 +245,12 @@ static const struct eth_dev_ops atl_eth_dev_ops = { .get_reg = atl_dev_get_regs, + /* Stats */ + .stats_get = atl_dev_stats_get, + .xstats_get = atl_dev_xstats_get, + .xstats_get_names = atl_dev_xstats_get_names, + .stats_reset = atl_dev_stats_reset, + .xstats_reset = atl_dev_xstats_reset, /* LEDs */ .dev_led_on = atl_dev_led_on, @@ -390,6 +437,9 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev) (u8 *)ð_dev->data->mac_addrs[0]) != 0) return -EINVAL; + /* Reset the hw statistics */ + atl_dev_stats_reset(eth_dev); + rte_intr_callback_register(intr_handle, atl_dev_interrupt_handler, eth_dev); @@ -699,6 +749,92 @@ atl_dev_reset(struct rte_eth_dev *dev) } +static int +atl_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) +{ + struct atl_adapter *adapter = + (struct atl_adapter *)dev->data->dev_private; + struct aq_hw_s *hw = &adapter->hw; + struct atl_sw_stats *swstats = &adapter->sw_stats; + unsigned int i; + + hw->aq_fw_ops->update_stats(hw); + + /* Fill out the rte_eth_stats statistics structure */ + stats->ipackets = hw->curr_stats.dma_pkt_rc; + stats->ibytes = hw->curr_stats.dma_oct_rc; + stats->imissed = hw->curr_stats.dpc; + stats->ierrors = hw->curr_stats.erpt; + + stats->opackets = hw->curr_stats.dma_pkt_tc; + stats->obytes = hw->curr_stats.dma_oct_tc; + stats->oerrors = 0; + + stats->rx_nombuf = swstats->rx_nombuf; + + for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) { + stats->q_ipackets[i] = swstats->q_ipackets[i]; + stats->q_opackets[i] = swstats->q_opackets[i]; + stats->q_ibytes[i] = swstats->q_ibytes[i]; + stats->q_obytes[i] = swstats->q_obytes[i]; + stats->q_errors[i] = swstats->q_errors[i]; + } + return 0; +} + +static void +atl_dev_stats_reset(struct rte_eth_dev *dev) +{ + struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); + + hw->aq_fw_ops->update_stats(hw); + + /* Reset software totals */ + memset(&hw->curr_stats, 0, sizeof(hw->curr_stats)); +} + +static int +atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused, + struct rte_eth_xstat_name *xstats_names, + unsigned int size) +{ + unsigned int i; + + if (!xstats_names) + return RTE_DIM(atl_xstats_tbl); + + for (i = 0; i < size && i < RTE_DIM(atl_xstats_tbl); i++) + snprintf(xstats_names[i].name, RTE_ETH_XSTATS_NAME_SIZE, "%s", + atl_xstats_tbl[i].name); + + return size; +} + +static int +atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, + unsigned int n) +{ + struct atl_adapter *adapter = + (struct atl_adapter *)dev->data->dev_private; + struct aq_hw_s *hw = &adapter->hw; + unsigned int i; + + if (!stats) + return 0; + + for (i = 0; i < n && i < RTE_DIM(atl_xstats_tbl); i++) { + stats[i].id = i; + stats[i].value = *(u64 *)((uint8_t *)&hw->curr_stats + + atl_xstats_tbl[i].offset); + } + + return n; +} + +static void +atl_dev_xstats_reset(struct rte_eth_dev *dev __rte_unused) +{ +} /* return 0 means link status changed, -1 means not changed */ static int atl_dev_link_update(struct rte_eth_dev *dev, int wait __rte_unused) -- 2.13.3.windows.1