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 BED6B4625C for ; Tue, 18 Feb 2025 13:39:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B707C402A0; Tue, 18 Feb 2025 13:39:02 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2070.outbound.protection.outlook.com [40.107.244.70]) by mails.dpdk.org (Postfix) with ESMTP id B6371402A0 for ; Tue, 18 Feb 2025 13:39:01 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LoQ5qcee4HQIaUz801LkTOhq9JOZVI7Wwophpo20wrLbGuVCPIUjN5KK8UiOz7an6Qw4gTW6xe/gjOj9P+t3I3QdnuLhdhwTVrfQCKlyWVYb1V5NF4FaYg7yobefTaTGUV85zEJjc1MHY5imr09m+Q/G/87CuTeJ0U7Vgv6dIv1az55YQ6cXybVTEetm5kZXsO7ZL/qm24TDz2joi29GYvC3dlNwhwSkHNaLD23rZZFt76ozdtbhsOIvUx/PLisMlGkjz4QfPiKUXPZeLhdHR01rpTkPw0W0BrpHJNL55SzArPxBgsxQVnc9pLLCj+qrpzTrp4EodWQ01HqHXGcOYA== 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=t3S9IsCI4+PLxE7g0oY8enx+3IscdtbfodgqmWSvQAQ=; b=s70J7pZ32/5qCKH6fMke8G5LrEYXVzpppwDiVhHNs6AZnfi6gS2HESqTabkr191OIBYRfPZfoRaIShWiCTExKG101LqO1Bq6+edzgk94NpPAMfwdMfiiLR/wlBAHsyIxQ3eYvJw0IIHZ/CI8kWtf1m0idkSnRoKKjAjV8Jnjcx1DyK+8/GWJUfZhk9Dan5FRNTfxWKmAnqS9CST2hfh2obOztugSsBFoO881LFmDQZnmwIYxlsBLJlMqZ2aO2S9/X+C8aMUGYt5pjyT10xFWO3Umvb/CfTOxc/AgMyNIFBJULe04tuxutVYjcwLdTwSoHs15sObBIwhPsksmG2U4Gg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=marvell.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t3S9IsCI4+PLxE7g0oY8enx+3IscdtbfodgqmWSvQAQ=; b=iw4kFJm1hDX6+V13z5ZibkpdSEd3R9FAJjDMsmRNHohjlH0MW7RP9rZjzZ3zOcuWWIWVt3Rknsq9JxSPIZpBCISyKw2gIWAcFTslILaQ0pgEYAwU8jsQrgW9sATGTr5BK3kl8JME3/44TNgSavk5w/rdpqjgYNkTKj8KApMYUPmkMripSWou4ZPmkrD6KmiVP62Wtiz1LmSM0stz+bqxVz/cu5qx0RrDLwiqErWx4T5Bbd1v2Fq4AOmeKKD/ngW7hJfuLQaKPnckAjCNtF5tuSOi7T6MXYYn2CKxfTzpx/UhVXVPLXewWuILivHvkjlNTb/ZRZFJEgwFmKGGRz98zA== Received: from BN0PR03CA0025.namprd03.prod.outlook.com (2603:10b6:408:e6::30) by CY8PR12MB8193.namprd12.prod.outlook.com (2603:10b6:930:71::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.19; Tue, 18 Feb 2025 12:38:57 +0000 Received: from BN3PEPF0000B06E.namprd21.prod.outlook.com (2603:10b6:408:e6:cafe::4) by BN0PR03CA0025.outlook.office365.com (2603:10b6:408:e6::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8445.19 via Frontend Transport; Tue, 18 Feb 2025 12:38:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN3PEPF0000B06E.mail.protection.outlook.com (10.167.243.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.2 via Frontend Transport; Tue, 18 Feb 2025 12:38:56 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 18 Feb 2025 04:38:47 -0800 Received: from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 18 Feb 2025 04:38:45 -0800 From: Xueming Li To: Rahul Bhansali CC: , dpdk stable Subject: patch 'net/cnxk: fix NIX send header L3 type' has been queued to stable release 23.11.4 Date: Tue, 18 Feb 2025 20:34:25 +0800 Message-ID: <20250218123523.36836-31-xuemingl@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250218123523.36836-1-xuemingl@nvidia.com> References: <20250218123523.36836-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06E:EE_|CY8PR12MB8193:EE_ X-MS-Office365-Filtering-Correlation-Id: 62061fcf-fc51-4571-99db-08dd501935eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|82310400026|376014|13003099007|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dN41TAbjK+Yle2SU16xOxSS+Ibto7mapTu+OPG8Vyhr4f3oNbkzybOeCFKKf?= =?us-ascii?Q?nGXRc8Rr9irosQT44fvnlQ4a2n/bbinCGP6rllzdq4TPyzp0vIubMcwv8A4J?= =?us-ascii?Q?oSJnxMx5uQRHqTUU1q+OOLkrIt+1QeOF/D8C//b3tEvm5FaCtWGXuv4F9Kji?= =?us-ascii?Q?OF96PNJW0RnGQFz8cw6cU57C0o5rrMSOuhRE1W6R5sTBSfnin1DI8wx/gczG?= =?us-ascii?Q?Ukd//MqfkJlXbdBZfFviqdf0dbjCNh5sHvCnSh7gMaAZiUjB7HiFvSYY5UZ3?= =?us-ascii?Q?ENASOaSEO4sX9hKQ9aLRpcWNmf3IWT12HY9FWRC46YZMNrWy9jcfabfle+Ih?= =?us-ascii?Q?ZPoFDaq1gxKMpaRaUl0rrrYgFH+ttlGGIzht+MBkhvl3eFwt25wkiP1kBkEV?= =?us-ascii?Q?NBp7dquhF0PhlJP++K5lHHXa8jg1FGjjjoJIzczPOFGHsbDRpFqPuz2lSGfm?= =?us-ascii?Q?r8JA+N40rtmJeBkfHGTbRoKikYFCkGFgD1rV32cWoIFFAnIyHtA87CSPKeGg?= =?us-ascii?Q?p6erT1UodVsbi3e7z6mrzp7QC94NA4dLSJpr3tWiVdnzg20DCPrVfgZGzkzF?= =?us-ascii?Q?vwr9a9QX9Tjbbjt4E01pwVb54oGqJoV8wqJjFv5KJAasgkTvEqQKVKxLpCoB?= =?us-ascii?Q?GiQF9aarvvEoHIALt4ES/0X9ymoMoxKO6i72rie7NPXbBBXWwX5HmXeIWyNH?= =?us-ascii?Q?Lu2tvWR8cVt3obVktLtT/HOTIgh66NYxMuBfge619Q3xrZrWqLHpqWJnDHKj?= =?us-ascii?Q?uSnbhAvv3xJ3t7Q1hgSsS8N1MJGC4SYIZJCiff5V1IcayMtDAX/n7F3L2Xh7?= =?us-ascii?Q?5WM9J1Cbs7aeMK+vzOIP/a80CMwFow/JR0r5wGyDUs1L/ot5o+go1z7p61/1?= =?us-ascii?Q?cciJAbR95zDqs61fXI901Rutohh99HbW17cd5+twwdyJ9qB4BzgdEW7bR9Py?= =?us-ascii?Q?DdeZj8/LbyScjNli2DbLZiZOXe7/+oIr8H2kQ9BNFJEVD60OVRPDiuAj+4sx?= =?us-ascii?Q?UCHUR6a/C9pHJRXD4E6X7mag3WJNiy9NfuZLqUs99Hh+eRDrhErqu174ojLj?= =?us-ascii?Q?PqtCsNUOM0QYoAZFmuGJF1OU5g1mVaqMJtEXNHMWLNX40nRK9bt1e47lx+AM?= =?us-ascii?Q?C/zu85KSTCg99LhhRItOutri0CeVUZxyr9EGlKKoRUzuBMqzQ7HINHFKMoJ/?= =?us-ascii?Q?KqtTwV+LSJc1IiPSjPfYbnB3hM/pQhGm9454zccj7mK4E7qkWX1FfRaeorYW?= =?us-ascii?Q?nQ2Vd8qoTTOYzGBTGuWeHaHYxx0r1UMEr/rmfbUAn4MSowBLTVEv0PDGzg3B?= =?us-ascii?Q?3K/jfOQi1iuJJJke0JxEQIMGzh1iNH9jVhRioy7NVC/gcC1q4UA9Vf8qQHzl?= =?us-ascii?Q?7A6xYsTC3UqBRdBnKw/LbjvCrB7HQO7sByasx0ebbza0S4U51ET+/XrmtgKB?= =?us-ascii?Q?TGQiQ0zPY+d2aBSoz1J4yA6OeSb18GLmE5Ck353AZYsR31lHhFZVln7SlV2c?= =?us-ascii?Q?ObNTvrSYX0LuRmw=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(82310400026)(376014)(13003099007)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2025 12:38:56.3484 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 62061fcf-fc51-4571-99db-08dd501935eb X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B06E.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8193 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 23.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. Please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://git.dpdk.org/dpdk-stable/log/?h=23.11-staging This queued commit can be viewed at: https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=0de3886c84a5fd5df323b2a8513f519fb37f3cc1 Thanks. Xueming Li --- >From 0de3886c84a5fd5df323b2a8513f519fb37f3cc1 Mon Sep 17 00:00:00 2001 From: Rahul Bhansali Date: Thu, 30 Jan 2025 17:25:26 +0530 Subject: [PATCH] net/cnxk: fix NIX send header L3 type Cc: Xueming Li [ upstream commit 32c18e7364e30a8e43cc7cc6709a7ce606fa285e ] For small packets less than 55 bytes, SQ error interrupts are observed. When checksum offload flag is enabled and mbuf ol_flags are not set, then default L3 type will be set to IPv6 in vector processing. Based on this, HW will still validate for minimum header size and generate send header error if mismatch. To address this, will set default L3 type to none. Mbuf ol_flags RTE_MBUF_F_TX_IPV6 will set with offload feature TSO or L4 checksum only, so handled in corresponding routine. Fixes: f71b7dbbf04b ("net/cnxk: add vector Tx for CN10K") Fixes: e829e60c6917 ("net/cnxk: support Tx burst vector for CN20K") Fixes: 862e28128707 ("net/cnxk: add vector Tx for CN9K") Signed-off-by: Rahul Bhansali --- drivers/net/cnxk/cn10k_tx.h | 7 +++++-- drivers/net/cnxk/cn9k_tx.h | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/cnxk/cn10k_tx.h b/drivers/net/cnxk/cn10k_tx.h index c84154ee84..fc82704d47 100644 --- a/drivers/net/cnxk/cn10k_tx.h +++ b/drivers/net/cnxk/cn10k_tx.h @@ -1824,6 +1824,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, w0->lso_mps = m->tso_segsz; w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6); w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM; + w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) + + ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) + + !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM); /* Handle tunnel tso */ if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) && @@ -2524,7 +2527,7 @@ again: */ const uint8x16_t tbl = { /* [0-15] = il4type:il3type */ - 0x04, /* none (IPv6 assumed) */ + 0x00, /* none */ 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */ 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */ 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */ @@ -2728,7 +2731,7 @@ again: const uint8x16x2_t tbl = {{ { /* [0-15] = il4type:il3type */ - 0x04, /* none (IPv6) */ + 0x00, /* none */ 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */ 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */ 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */ diff --git a/drivers/net/cnxk/cn9k_tx.h b/drivers/net/cnxk/cn9k_tx.h index 4715bf8a65..3d6af8a38f 100644 --- a/drivers/net/cnxk/cn9k_tx.h +++ b/drivers/net/cnxk/cn9k_tx.h @@ -889,6 +889,9 @@ cn9k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, w0->lso_mps = m->tso_segsz; w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6); w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM; + w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) + + ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) + + !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM); /* Handle tunnel tso */ if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) && @@ -1402,7 +1405,7 @@ cn9k_nix_xmit_pkts_vector(void *tx_queue, struct rte_mbuf **tx_pkts, */ const uint8x16_t tbl = { /* [0-15] = il4type:il3type */ - 0x04, /* none (IPv6 assumed) */ + 0x00, /* none */ 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */ 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */ 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */ @@ -1606,7 +1609,7 @@ cn9k_nix_xmit_pkts_vector(void *tx_queue, struct rte_mbuf **tx_pkts, const uint8x16x2_t tbl = {{ { /* [0-15] = il4type:il3type */ - 0x04, /* none (IPv6) */ + 0x00, /* none */ 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */ 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */ 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */ -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-02-18 19:39:01.805639945 +0800 +++ 0030-net-cnxk-fix-NIX-send-header-L3-type.patch 2025-02-18 19:39:00.518244067 +0800 @@ -1 +1 @@ -From 32c18e7364e30a8e43cc7cc6709a7ce606fa285e Mon Sep 17 00:00:00 2001 +From 0de3886c84a5fd5df323b2a8513f519fb37f3cc1 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Xueming Li + +[ upstream commit 32c18e7364e30a8e43cc7cc6709a7ce606fa285e ] @@ -20 +22,0 @@ -Cc: stable@dpdk.org @@ -25 +26,0 @@ - drivers/net/cnxk/cn20k_tx.h | 7 +++++-- @@ -27 +28 @@ - 3 files changed, 15 insertions(+), 6 deletions(-) + 2 files changed, 10 insertions(+), 4 deletions(-) @@ -30 +31 @@ -index 7d9b259a5f..77f4e54cd8 100644 +index c84154ee84..fc82704d47 100644 @@ -33 +34 @@ -@@ -1773,6 +1773,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, +@@ -1824,6 +1824,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, @@ -43,33 +44 @@ -@@ -2477,7 +2480,7 @@ again: - */ - const uint8x16_t tbl = { - /* [0-15] = il4type:il3type */ -- 0x04, /* none (IPv6 assumed) */ -+ 0x00, /* none */ - 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */ - 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */ - 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */ -@@ -2681,7 +2684,7 @@ again: - const uint8x16x2_t tbl = {{ - { - /* [0-15] = il4type:il3type */ -- 0x04, /* none (IPv6) */ -+ 0x00, /* none */ - 0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */ - 0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */ - 0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */ -diff --git a/drivers/net/cnxk/cn20k_tx.h b/drivers/net/cnxk/cn20k_tx.h -index c731406529..8c3ba8326d 100644 ---- a/drivers/net/cnxk/cn20k_tx.h -+++ b/drivers/net/cnxk/cn20k_tx.h -@@ -1733,6 +1733,9 @@ cn20k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, union nix - w0->lso_mps = m->tso_segsz; - w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6); - w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM; -+ w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) + -+ ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) + -+ !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM); - - /* Handle tunnel tso */ - if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) && (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK)) { -@@ -2395,7 +2398,7 @@ again: +@@ -2524,7 +2527,7 @@ again: @@ -84 +53 @@ -@@ -2595,7 +2598,7 @@ again: +@@ -2728,7 +2731,7 @@ again: @@ -94 +63 @@ -index 9370985864..902a17860c 100644 +index 4715bf8a65..3d6af8a38f 100644