From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1118345BA3; Tue, 22 Oct 2024 19:30:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E2EE940A84; Tue, 22 Oct 2024 19:30:13 +0200 (CEST) Received: from egress-ip42b.ess.de.barracuda.com (egress-ip42b.ess.de.barracuda.com [18.185.115.246]) by mails.dpdk.org (Postfix) with ESMTP id 6B32A406BB for ; Tue, 22 Oct 2024 19:30:12 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2172.outbound.protection.outlook.com [104.47.17.172]) by mx-outbound19-119.eu-central-1b.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 22 Oct 2024 17:30:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ya7AmKc/6EQEAUnM4i5CR4pkNPUeVNYMJqTCok+kM5Y1um3lG9JfPQQT7aLM/0RzDThKuwmQ75RW+vnOgzlOnLhyMqLo5lNPWKXVf5SAIiSvNpPStpbs2SuL/+yezmdFhEze8/xUsFpyaPIyLz4/oX1+FdkviaZsoHApWToJo7AF/jDJeJWc3Z4u1Tvs0D7HrUSBw9bISi31D2gColXmaKh2SMXF9SbjHN5oih/hJX4eNi0QCv08u2J2rgAlZK92pwLKijAi5uDGslnaBbP9J/J/OQLH3jIuXXpeLIfGfMPtRK1Xf+uCFJ5IDylfmjHAisDTl/V82SC8s01Mt06DnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hZ/tH9hjW6WabsdVHEBmHz8cGd6wyfL7QFB3EiQ9N+0=; b=HOIUuZLAZVcguvZ1XeKMTo2mtDX8TRIb+beUf7OoqNXL+PgIiz/t+pmrtW8m5ARPZ4GqrtF7JqwKrT72iNbbPLjn6rAe4if8C/zUNPEzaZh+fK0co1LRka7QAdAfC/WRJs/0iay2jeKhHuWDxwlrbJlnL6Ev2JAYIOiOvERiaFM+MW79MwMXdBV8fttcdgwhilI8m8qFBJw1QnHc7WRRpzquGaQbE21TrraW2pq+M3T159FhHdG7ihX3e5Bj8tfGe7JMTWC66FhwuroNmnYgLaZWcgNekiUeUV9SpWqsBDUWcC/dbVtEaiWv/ErabkyLOc9O3dtLdMof2SmRmSk2jQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 178.72.21.4) smtp.rcpttodomain=dpdk.org smtp.mailfrom=napatech.com; dmarc=fail (p=reject sp=reject pct=100) action=oreject header.from=napatech.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=napatech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hZ/tH9hjW6WabsdVHEBmHz8cGd6wyfL7QFB3EiQ9N+0=; b=CGIiJRVybMhJ3lyE68hcSJqUd7xFzL4xsmmPRubdZ0E0npdr4YOWj71ACPLyo/nt3jyNvCFNBro1P/zgO3628XfT82/l1Nqb3e+OvokoO4ln7cNharCME4cWQybZVkbryQf48hDpPMHM0eR+siwP9ecualtWwGlQ/6MvwngLCoc= Received: from DB9PR06CA0012.eurprd06.prod.outlook.com (2603:10a6:10:1db::17) by PRAP190MB1787.EURP190.PROD.OUTLOOK.COM (2603:10a6:102:290::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Tue, 22 Oct 2024 16:56:48 +0000 Received: from DU2PEPF0001E9C2.eurprd03.prod.outlook.com (2603:10a6:10:1db:cafe::4c) by DB9PR06CA0012.outlook.office365.com (2603:10a6:10:1db::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Tue, 22 Oct 2024 16:56:48 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 178.72.21.4) smtp.mailfrom=napatech.com; dkim=none (message not signed) header.d=none;dmarc=fail action=oreject header.from=napatech.com; Received-SPF: Fail (protection.outlook.com: domain of napatech.com does not designate 178.72.21.4 as permitted sender) receiver=protection.outlook.com; client-ip=178.72.21.4; helo=localhost.localdomain; Received: from localhost.localdomain (178.72.21.4) by DU2PEPF0001E9C2.mail.protection.outlook.com (10.167.8.71) with Microsoft SMTP Server id 15.20.8093.14 via Frontend Transport; Tue, 22 Oct 2024 16:56:48 +0000 From: Serhii Iliushyk To: dev@dpdk.org Cc: mko-plv@napatech.com, sil-plv@napatech.com, ckm@napatech.com, andrew.rybchenko@oktetlabs.ru, ferruh.yigit@amd.com, stephen@networkplumber.org, Oleksandr Kolomeiets Subject: [PATCH v2 46/73] net/ntnic: add MAC Tx module Date: Tue, 22 Oct 2024 18:55:03 +0200 Message-ID: <20241022165541.3186140-47-sil-plv@napatech.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20241022165541.3186140-1-sil-plv@napatech.com> References: <20241021210527.2075431-1-sil-plv@napatech.com> <20241022165541.3186140-1-sil-plv@napatech.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PEPF0001E9C2:EE_|PRAP190MB1787:EE_ Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: f7a401f3-a3d5-4f57-70de-08dcf2ba84eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VmHjPHW4Hu8UpHsw7S9EbkBZIxvYg6Hyjk2XUY10HcRn1VnwlOR8n/RHwt5m?= =?us-ascii?Q?bMfdUwgNNai9QGCJ7JqKclbylrqssX1Yv4vOxVz7ATBvzVioU+0naoj0qWQZ?= =?us-ascii?Q?A3JCkSBHi/ZR2vR5rUssWGHpaM6h2Mc5nqQA/zpcDI9PGMMnXCWbJ91CXSUp?= =?us-ascii?Q?xdRGUQC3rvvYYtjRGxkipDBzi7nVKn9GyaK3RFoJvYXHwL/AWl41bhWXhmrA?= =?us-ascii?Q?JIcmCqG3luQAoJR9tn3p7DYGQu+qz+7kLDs8yv+sGS9kYuXdkc7WyhFO64Uw?= =?us-ascii?Q?enB/yVYPvc1LS/+9cnDhTUxZ65zwB5U0/8Qz94cUpE1X+L/9gbfQjZA5B17E?= =?us-ascii?Q?oOJbS4mmQTP10Xg2B52YOzYqHP+XnE6t8Ave87dhu0b6xdAOo6Ox1BGwAfBj?= =?us-ascii?Q?cwKu5/REFxPq3UjqJk9z+02vfx+WeRJG5uHuJkESOm9YrLp1ohrEfSez7+xc?= =?us-ascii?Q?g7yhkVmUIFlUYuFbMnX2q85hdfVvRq2FjSSdQzWQHSU9Ydo1H0Qi/qn/rWZY?= =?us-ascii?Q?0LT9FZrUhLl4NAsS1RGJneDHOmoUUs2AZOAR3Rf40dUIyuaUkbhH0e/sWPa7?= =?us-ascii?Q?Suz59vc6qPb2hM/cbpbMnBkb7kJozsLeMFcqJx0fSHjbOGySWy/T4ENBD3vH?= =?us-ascii?Q?4ho0upJOD+61TdEua1ccQf1YTivPcybit+KFtqErre73VOun3ek9BOimkshC?= =?us-ascii?Q?9OLjBxuPXv5MyaA70mkXNS5XVTDlBrvhxTPiplXR+Gy7se+6l4w2dUApG08r?= =?us-ascii?Q?EfJWa86wMZaSSCeWsFRY30DE6qQ5RIz23ZnotsFIsDSKEEyB5IP2vxVRIAHV?= =?us-ascii?Q?mLIQWoZ/e/7ZT6MPHN8Hwu6dbPEP05wi+6m7oCibgfgnMMGbkzyxz5C7hJCH?= =?us-ascii?Q?/0apxbEGJO1CLrGh7rgqRH3dtUpEJat7p3WSA+1Ndj8Qh1I7TemDb+OzofFI?= =?us-ascii?Q?UpsfdBW+afBvzjKR432KyXBJGjjbWITTJoRSs2SJVmNoWAacPAeVRHfdmHc+?= =?us-ascii?Q?OtZ1IwNdj6TCnSlF70fjK6EUDC9eJbiRa1+rMxY5aOgAk7RUp8HzxsRTzbVP?= =?us-ascii?Q?Qj6NvgwfoJCzkAM8SMXQgIW92r5AuqlYlPpD13V6Dqoiz7FdqaFNHFr6yEk9?= =?us-ascii?Q?JbAXxsHsBXqkkDXWk4ifTlrk73GjNAueWP2ZK/2ZcOLeBisPel6ZHnDpUQ5N?= =?us-ascii?Q?GqmzsHKcxb6qXSUKlO9tpurWDv46mEPqc/A/lL8FIXJvW3ifQ/lVgxoTqdae?= =?us-ascii?Q?NvH1ReegygOzL9Vgnb2KqtAp/hZIUDvFuVYjnUMEkBbwfD2urbpHKr8D3IEN?= =?us-ascii?Q?grufyM0RFBQb1y1eOkHUTXGH3ZgFd40ejbxaLgb3lwCNLncNp4gyvM1HIepN?= =?us-ascii?Q?k8Ju1q27/blZThZkNvygH949AY76rZHAZMbr5cZPkBdd4LTP7Q=3D=3D?= X-Forefront-Antispam-Report: CIP:178.72.21.4; CTRY:DK; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:localhost.localdomain; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: f5V3Uvk6XrDBt+LaGSiAOk838X9FWypg2071ZBI2lL8zyh6LxKf+l6sFQ9JFFkCLDK/7S99w8eqoWmUi6zjnGFO4Ha3ausOzI/nD4+2fjsGN2EGzNq0cEnnSWUyOC0nS/p0LOA5YLUUgtanBWCy0Vs5f0hmVgHQzHCCWINmr5jdU4wIq96lBVhZQTML+i9HyJo6KERWHf6k2nGVDWrznFWcvOj1kZELxRIob3afufYCiP/NF3VZWdvVG3QP74w6718f0+vkLHgXHYLo2m0Mjkah0LiRwRTrGonBJMtJjryjl6Bhap0tdRHTA/uG7SGA066VB7Sa/R9Conz6I+MA0yoBByXxzNbCirT7WAfJGcOWIHlqJdOQrr4WMym5W+Lhuxqn3yzjHcMdou1BR0e5NEh8vFfunntibQU3yjUulnv7xRNOkRTuXT/Odv76cHryHagsIpbUtxeLJFLD25DKruJ3PUsHjExGFzkJsnLQelooM8ufKpt3SYydT0nuhprPYWJcbzZaYWqQfCFeFmakiO4rHuzzgLll4M9FpeTDWRQtWEOBYijRx2SzamYbUe9o+4O7Swk4Rc7PibaEAnWHi3azV3pNKxWl1O7zRHeX7yhtOFsM5mCQgomoVdxO67Oy4uX11U/YivEejZdCbtZ4oBERkBxcYFqrUUg/VQIpl47k= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2024 16:56:48.4503 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f7a401f3-a3d5-4f57-70de-08dcf2ba84eb X-MS-Exchange-CrossTenant-Id: c4540d0b-728a-4233-9da5-9ea30c7ec3ed X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c4540d0b-728a-4233-9da5-9ea30c7ec3ed; Ip=[178.72.21.4]; Helo=[localhost.localdomain] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF0001E9C2.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PRAP190MB1787 X-OriginatorOrg: napatech.com X-BESS-ID: 1729618211-304983-12653-15974-1 X-BESS-VER: 2019.1_20241018.1852 X-BESS-Apparent-Source-IP: 104.47.17.172 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVqZmBoZAVgZQ0NAgzSzR1DLVIM XcwCTRItUgNSnZzMjEMjEp0dzSzCxVqTYWADbDt0pBAAAA X-BESS-Outbound-Spam-Score: 0.00 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.259902 [from cloudscan23-115.eu-central-1b.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.00 BSF_BESS_OUTBOUND META: BESS Outbound X-BESS-Outbound-Spam-Status: SCORE=0.00 using account:ESS113687 scores of KILL_LEVEL=7.0 tests=BSF_BESS_OUTBOUND X-BESS-BRTS-Status: 1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Oleksandr Kolomeiets The Media Access Control Transmit module contains counters that keep track on transmitted packets. Signed-off-by: Oleksandr Kolomeiets --- .../supported/nthw_fpga_9563_055_049_0000.c | 38 ++++++++++++++++++- .../ntnic/nthw/supported/nthw_fpga_mod_defs.h | 3 +- .../ntnic/nthw/supported/nthw_fpga_reg_defs.h | 1 + .../supported/nthw_fpga_reg_defs_mac_tx.h | 21 ++++++++++ 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_tx.h diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_9563_055_049_0000.c b/drivers/net/ntnic/nthw/supported/nthw_fpga_9563_055_049_0000.c index eecd6342c0..7a2f5aec32 100644 --- a/drivers/net/ntnic/nthw/supported/nthw_fpga_9563_055_049_0000.c +++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_9563_055_049_0000.c @@ -1831,6 +1831,40 @@ static nthw_fpga_register_init_s mac_rx_registers[] = { { MAC_RX_UNDERSIZE, 8, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, mac_rx_undersize_fields }, }; +static nthw_fpga_field_init_s mac_tx_packet_small_fields[] = { + { MAC_TX_PACKET_SMALL_COUNT, 32, 0, 0x0000 }, +}; + +static nthw_fpga_field_init_s mac_tx_total_bytes_fields[] = { + { MAC_TX_TOTAL_BYTES_COUNT, 32, 0, 0x0000 }, +}; + +static nthw_fpga_field_init_s mac_tx_total_good_bytes_fields[] = { + { MAC_TX_TOTAL_GOOD_BYTES_COUNT, 32, 0, 0x0000 }, +}; + +static nthw_fpga_field_init_s mac_tx_total_good_packets_fields[] = { + { MAC_TX_TOTAL_GOOD_PACKETS_COUNT, 32, 0, 0x0000 }, +}; + +static nthw_fpga_field_init_s mac_tx_total_packets_fields[] = { + { MAC_TX_TOTAL_PACKETS_COUNT, 32, 0, 0x0000 }, +}; + +static nthw_fpga_register_init_s mac_tx_registers[] = { + { MAC_TX_PACKET_SMALL, 2, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, mac_tx_packet_small_fields }, + { MAC_TX_TOTAL_BYTES, 3, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, mac_tx_total_bytes_fields }, + { + MAC_TX_TOTAL_GOOD_BYTES, 4, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, + mac_tx_total_good_bytes_fields + }, + { + MAC_TX_TOTAL_GOOD_PACKETS, 1, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, + mac_tx_total_good_packets_fields + }, + { MAC_TX_TOTAL_PACKETS, 0, 32, NTHW_FPGA_REG_TYPE_RO, 0, 1, mac_tx_total_packets_fields }, +}; + static nthw_fpga_field_init_s pci_rd_tg_tg_ctrl_fields[] = { { PCI_RD_TG_TG_CTRL_TG_RD_RDY, 1, 0, 0 }, }; @@ -2182,6 +2216,8 @@ static nthw_fpga_module_init_s fpga_modules[] = { }, { MOD_MAC_RX, 0, MOD_MAC_RX, 0, 0, NTHW_FPGA_BUS_TYPE_RAB2, 10752, 9, mac_rx_registers }, { MOD_MAC_RX, 1, MOD_MAC_RX, 0, 0, NTHW_FPGA_BUS_TYPE_RAB2, 12288, 9, mac_rx_registers }, + { MOD_MAC_TX, 0, MOD_MAC_TX, 0, 0, NTHW_FPGA_BUS_TYPE_RAB2, 11264, 5, mac_tx_registers }, + { MOD_MAC_TX, 1, MOD_MAC_TX, 0, 0, NTHW_FPGA_BUS_TYPE_RAB2, 12800, 5, mac_tx_registers }, { MOD_PCI_RD_TG, 0, MOD_PCI_RD_TG, 0, 1, NTHW_FPGA_BUS_TYPE_RAB0, 2320, 6, pci_rd_tg_registers @@ -2353,5 +2389,5 @@ static nthw_fpga_prod_param_s product_parameters[] = { }; nthw_fpga_prod_init_s nthw_fpga_9563_055_049_0000 = { - 200, 9563, 55, 49, 0, 0, 1726740521, 152, product_parameters, 28, fpga_modules, + 200, 9563, 55, 49, 0, 0, 1726740521, 152, product_parameters, 30, fpga_modules, }; diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h index 5983ba7095..f4a913f3d2 100644 --- a/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h +++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h @@ -30,6 +30,7 @@ #define MOD_KM (0xcfbd9dbeUL) #define MOD_MAC_PCS (0x7abe24c7UL) #define MOD_MAC_RX (0x6347b490UL) +#define MOD_MAC_TX (0x351d1316UL) #define MOD_PCIE3 (0xfbc48c18UL) #define MOD_PCI_RD_TG (0x9ad9eed2UL) #define MOD_PCI_WR_TG (0x274b69e1UL) @@ -44,7 +45,7 @@ #define MOD_TX_CPY (0x60acf217UL) #define MOD_TX_INS (0x59afa100UL) #define MOD_TX_RPL (0x1095dfbbUL) -#define MOD_IDX_COUNT (31) +#define MOD_IDX_COUNT (32) /* aliases - only aliases go below this point */ #endif /* _NTHW_FPGA_MOD_DEFS_H_ */ diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h index 5ebbec6c7e..7741aa563f 100644 --- a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h +++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h @@ -31,6 +31,7 @@ #include "nthw_fpga_reg_defs_km.h" #include "nthw_fpga_reg_defs_mac_pcs.h" #include "nthw_fpga_reg_defs_mac_rx.h" +#include "nthw_fpga_reg_defs_mac_tx.h" #include "nthw_fpga_reg_defs_pcie3.h" #include "nthw_fpga_reg_defs_pci_rd_tg.h" #include "nthw_fpga_reg_defs_pci_wr_tg.h" diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_tx.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_tx.h new file mode 100644 index 0000000000..6a77d449ae --- /dev/null +++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_tx.h @@ -0,0 +1,21 @@ +/* + * SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2024 Napatech A/S + */ + +#ifndef _NTHW_FPGA_REG_DEFS_MAC_TX_ +#define _NTHW_FPGA_REG_DEFS_MAC_TX_ + +/* MAC_TX */ +#define MAC_TX_PACKET_SMALL (0xcfcb5e97UL) +#define MAC_TX_PACKET_SMALL_COUNT (0x84345b01UL) +#define MAC_TX_TOTAL_BYTES (0x7bd15854UL) +#define MAC_TX_TOTAL_BYTES_COUNT (0x61fb238cUL) +#define MAC_TX_TOTAL_GOOD_BYTES (0xcf0260fUL) +#define MAC_TX_TOTAL_GOOD_BYTES_COUNT (0x8603398UL) +#define MAC_TX_TOTAL_GOOD_PACKETS (0xd89f151UL) +#define MAC_TX_TOTAL_GOOD_PACKETS_COUNT (0x12c47c77UL) +#define MAC_TX_TOTAL_PACKETS (0xe37b5ed4UL) +#define MAC_TX_TOTAL_PACKETS_COUNT (0x21ddd2ddUL) + +#endif /* _NTHW_FPGA_REG_DEFS_MAC_TX_ */ -- 2.45.0