From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 674EA1E3DED for ; Mon, 1 Dec 2025 21:39:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.11 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764625184; cv=fail; b=SV1PC3f18eTsGVrROqMKQLBtShSSq2gO6KxL8IVndW8b0zs97Vy8OCAaMOlcl7yqRXeA+Ju6krOGZ0D7zwwPzETaJne11c4+CkVGECmXRvuiJDGQ/mE0VAZbbhXFlUFJa4POYFYR28V0quTC3RJWN7jFtAuENVJoZ3RSyP0QOKk= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764625184; c=relaxed/simple; bh=c/t3FrvLmiTDPWsgEuPz4pXf88+nDAWvaJXHhBAE+7Y=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=mlVfvFJjqOyz7679f2jMvNai41fTVfBq42jHqOJK/Ou3p3WxzxKw7fPx1Gg5dgamQ826NEmkGhh/eCyNkoC1dYDa956hfM73aw0v3Lw4GBEb/7pgvQSnyz/QyaF3/OoRXVFctxa+aMqdMNnFFKj+zBL4WaYpQpPPS7PgD+Uuh+8= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=MSwF3g4/; arc=fail smtp.client-ip=198.175.65.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="MSwF3g4/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1764625183; x=1796161183; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=c/t3FrvLmiTDPWsgEuPz4pXf88+nDAWvaJXHhBAE+7Y=; b=MSwF3g4/5pjGzraOU4QLBhnAmsf+c44goQ7DuMOpuy4tqnNBgNxV4EZA g0QjiFZMEE9beTxxZECm0sMGwNwYMEAO4tweRFaG+kGGsf4A4b4xfUHo1 GcGBvpXkT6plHpdXC2J8mpKjgSLg0ZO/Zj99NPmOnWlGTBkLXyGGRL1s1 zbLH9+TsscRqdb0NbfaC/LpFg8tWptUmgAUsvSAAfvyRI7GgLSzIrOS61 F/Ky6acpclLJjjTS2i888qhrPge4sCMr/WLRWv+yahvmRcpukUb1Zbe9h 1gN0TJAEUlrGxpjofn34BEDbqvfuXoo5gDgleayY/eQkfKlF4+A+QKLhe w==; X-CSE-ConnectionGUID: lQ90U+kCS4mtu7HrIx9VzA== X-CSE-MsgGUID: jcJuQz9TS5a1CsYLYNWvAQ== X-IronPort-AV: E=McAfee;i="6800,10657,11630"; a="76899879" X-IronPort-AV: E=Sophos;i="6.20,241,1758610800"; d="scan'208";a="76899879" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2025 13:39:42 -0800 X-CSE-ConnectionGUID: vn7bSzyIQYuvakSpelQs8A== X-CSE-MsgGUID: J4igTbxYSFm6A2jBHWVYoA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.20,241,1758610800"; d="scan'208";a="194059180" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2025 13:39:42 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Mon, 1 Dec 2025 13:39:41 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Mon, 1 Dec 2025 13:39:41 -0800 Received: from CH1PR05CU001.outbound.protection.outlook.com (52.101.193.11) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Mon, 1 Dec 2025 13:39:40 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R69t6X1Py4lJVPGkyIlXzn5kqDAVvocSw4FHeFrxJAQBsDrQYhFBDhpf01X2yAXt5FWDPu9zhleQp8btorXA1dit+09HYxa84BP/lqCSZTyBf2IbFUVomcfzlQyFv6fyX6P8UZXGWOSfxuoj/bcGvYYlw3xa3NqZOnuiBZrqaFZPkKEtBrEFPXV0DgrAC/gDBuPr5CKIJV7aaWp+Zz2WB7vmO2ttEwubp/rCYMpqA5M3h0Rx7uW1utzRcM+39CN2pRRRmoST6QcXeDSZIqWN4YmDjnHCfhSvWIinmD1t6k2k2LCcWpMQxCeaoglwRpTrUAomsExm43B+4vycdEHYzA== 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=Okxcis6Z34Zi3kbBFZy3OWgHSGIjzXqOkRdaAqsNmZE=; b=mHzyR9xLDhqgIeDNJ/Hvab1dmNrlSIh0gikBzvzJXbTCANa04MmRLLusWLxD47vOju3yNmww/8ie2ue8P5MMSV73UjxR+elrwbUG+B+mEdXAiC6Qig7V8TtO68ZwI22YtTBx50MaceeVQC8HbW1rfE7JVsqmWpc9x0vjFhDvRT03p9C2jkw6Q5Vm8Y4zk3xsSl3aq4R1EuSiGEoljmdD43a17oBYCCCTuwuHd3//riA2OtfeUdvEVWTjCZKBal5h0wy++1nf+D5YmSTODnbZKkxVCNqCNNDRR2jD6+M/Gat+8PDqdsgQUb0S7OmhU54ku6+tdIpZU1S9EdvmNKMP7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7925.namprd11.prod.outlook.com (2603:10b6:8:f8::18) by LV2PR11MB5998.namprd11.prod.outlook.com (2603:10b6:408:17e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Mon, 1 Dec 2025 21:39:34 +0000 Received: from DS0PR11MB7925.namprd11.prod.outlook.com ([fe80::b1ef:c95b:554d:19c9]) by DS0PR11MB7925.namprd11.prod.outlook.com ([fe80::b1ef:c95b:554d:19c9%7]) with mapi id 15.20.9366.012; Mon, 1 Dec 2025 21:39:34 +0000 Message-ID: <0fef00d6-b7f9-47aa-8f4d-1b4c6c4ebb3f@intel.com> Date: Mon, 1 Dec 2025 13:39:31 -0800 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 3/3] x86/lib: Use EGPRs in 64-bit checksum copy loop To: david laight CC: , , , , , References: <20251124213227.123779-1-chang.seok.bae@intel.com> <20251124213227.123779-4-chang.seok.bae@intel.com> <20251125103750.2d2d7bbd@pumpkin> Content-Language: en-US From: "Chang S. Bae" In-Reply-To: <20251125103750.2d2d7bbd@pumpkin> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0P220CA0009.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:41b::25) To DS0PR11MB7925.namprd11.prod.outlook.com (2603:10b6:8:f8::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7925:EE_|LV2PR11MB5998:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c05b180-905d-44d6-597c-08de31221e40 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SkIvWjZmbGZNakRweTJRRnBvTFJzcFJMT0lIWGpHSmhoK0kyYkxMQVZpTnlz?= =?utf-8?B?YlZhK0hwY0Q4djRpTVdTYURzdy9NTFEwUUE3blZ4TVFVbFNXcHI5YTJjVlJy?= =?utf-8?B?a1V3RWRyWHpBNmcwbzVwSWxaSXFiVXc5NE02N204V3VwQkh3WUJPTE5mTlE1?= =?utf-8?B?a2xzL3lPbGErclhHNUhJNjBYdGYwQnQ2U05lTWRTanRhQzdxRklsanZJdFBa?= =?utf-8?B?QWtwdzNhT0lIVmZoclVsaWpweVZXZ05yVi9UYmgvZ2lrY3J2R0dyMjYzVzh3?= =?utf-8?B?aExJdGRuQkxNOVlTRjF2OGgyakdtbHFNeFFDZ1J0U2JHaGlPeVhvY1RpZmJn?= =?utf-8?B?WWZYNzVGR1k1UFR2TlEwRmZYNG95TlFJamw0V1BMWE93emRLcDE1cjZZVWI1?= =?utf-8?B?YU9aWWVYREo3UlByTGZrOW42d2FIN1dUcDdnSjFONEZEWGlSWVM5bjVHdUxo?= =?utf-8?B?TkxTaWdTRE9VUnNSZ1NDemVJNlZhc244aGFzNEtuZUNLTFBGQjRWSFlmL2FC?= =?utf-8?B?VVZPVGhmcVhlUEpuSzI5dzZ4RHNiY1MrOVdDRmxoQ1lGOVBqNTJ0ZDhSOWY4?= =?utf-8?B?cjU4OVljUG5LbzJDRkYwWndhaVlQOGRuZE9DYXNqa2g3blNNbFJraENUZDNy?= =?utf-8?B?RUU5dWtYYkg5NEtSbUFJbW1QWjZ5MUd5Tm9rQVhNRlBLSEw0K25xYi8vYXRF?= =?utf-8?B?TmNJTWFCMDFUSUlqOEtROXM1MG5YdzFWaW94ZkVhejRyZ3V0ekh4NW5Ub1RS?= =?utf-8?B?dGtRWDBMTW9scDVUdFhkc01CUUhTU2RsVmJtTWRJbnlrcHdDY21MTWpscUdh?= =?utf-8?B?MnhTM1JPTURFRDNybjhRMWg0TjNXT3dYdWVLUWtmWjRVT3dUVkZXZ0Q1NU9w?= =?utf-8?B?bjZFTlZBUUN5cTFjZ2t4QmEwL0FJN0NvNEdJYnhZUm5kUlVVWm5JWEZtcXhF?= =?utf-8?B?T2t1NEJYOUczTWpMRGlpcGdjSE1ab21uWkduTnZkUlFBc1RGYk1QV2JVZjA5?= =?utf-8?B?YUxZc0lnQnR0QXN5RFlsa3RRVTl4alY4MXJ1WkVEY000ZlR5dUhYbmxYbjlp?= =?utf-8?B?VUpxTFRNWDF2aDdGYm9NeEFnaHZrNW1VWWtFNXVCd0hWdnNzQnhQMnIvZi91?= =?utf-8?B?andTTzlUQWV2K1h1OEdHNFNCbENHWFY4UTlZczJJcU1oUzBjZDc3T0haMnRI?= =?utf-8?B?TWtXb1o5a016QzVHRjk0b1pyV3V1NDRiN1BWcG1FM0l3QTdoYWRrdjJuM21W?= =?utf-8?B?U0trODRxYnZ0elB6MGZvaEdvTmUwWFJsd3RLbXNRazR3OXdySE4yb1Y2QmVr?= =?utf-8?B?M3JPdE9VT2M0UURpK0I4VmZ5N09nVTh5QTVBczBaTHFDQ0xJczYzVnNnVHVF?= =?utf-8?B?ZHI2N0ZTNE9Yb1VVMVF4VlcvL2VLeTZRZFpDRU9QUlp5NnJBczJaWmxqTlNv?= =?utf-8?B?OVJVQUljS0I4NngxYmNRQUJEb3VET0twWDNuR1gzTEYvNFBieVVGc2kvbFlW?= =?utf-8?B?NjRIRnplakRuUXExM0ZKbHJoaEdFK0ZURmxwcmY0U2czQ1RnVDJac1V2Z2RD?= =?utf-8?B?QmM0TnVPZk1vTzJHZWdwMHVnQ3Z2ZW9DVFJJVXB4Vjk0NGNRMVhJWGZMMVBW?= =?utf-8?B?R2FEZHRBd25qZmZsa252dDJtTjV3dlNXSGFYek5nbEFpempjZ3kxZU5IL2lR?= =?utf-8?B?dmtJSWxlSHp2emVKVjlMTTJQeGtTOGkra0VBTTJHR2IxT3FjVC9NMUJCNE5o?= =?utf-8?B?cmtEVmxwcGZ0cWNDYS9adGswczJObllvVkpicXp1WHVJcE1jcUhHeHRaRVlN?= =?utf-8?B?VTRTY2FhNkg4OTdUeStieHI5UTB6VzgyOC9zdVlyV0Zhd1FUNGVxS0c4QkVw?= =?utf-8?B?K1psbG1PTTFPbkJKN0x5Q1VrTjJ2YkhJY1hXL0lkNVBjV0hMcXoxcThQVVRx?= =?utf-8?Q?Gzi1AcWy5h4bO/ish1Rosr8MAFwxyqD9?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB7925.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UWc4enMxOFdyRmh3MHhxY2NERVBNbWoxa2dxSDRiWkZ2YVlLN29JTDl3a2Qw?= =?utf-8?B?OTZtVHBIY0lKOEtyaStWdGtXS0UvQ2NpRkNIeUZXZi8xZTc5amwxN2FJNmQ2?= =?utf-8?B?NjRNeFltRjZZcjFWOVpDVUEyakh6OUhYb0RRaTROU1NPdktocTY1SGpxTGph?= =?utf-8?B?VGxjcGg0ZWI2U3dLNEg0djI3R2t1WDNaZlprSlZreVhOWFdvN2oyQVcxOWRl?= =?utf-8?B?bkNQTTg5TkljWU1LRnpnYndkTlBsNEhoZVJrUkx6R0FtVGVDNnNlbnJOQ0Ux?= =?utf-8?B?TjhXWHMxTkJGSHNXalFwNjBEQlMyWU1VZWhodkU0QVVxL2ltV09uZUFCT2dy?= =?utf-8?B?SUtmYlFnZFg1WnJIYzZ0RElzUHFyaTVnT3B5eEt1bjQ2dnZQZktlTm5YYTEz?= =?utf-8?B?SytQUjNJRFBNczk1QWwxZEpuN3R1dTUyM2dJZWs0MndWQk90cmpJaytUMDRx?= =?utf-8?B?MHVLQ01weFQxMUplaWE0a2pTb0RBNjFNcDVMNlRrWldMSStEZDdER25iNEZq?= =?utf-8?B?UEVpcGZNemtHcm5rcnVSdytLUmdyU3Z3RzhXMVJNQlVsZ2NNODJCNzByeGVt?= =?utf-8?B?VjFJakVGalViazRibE5rckkvdWNxSWtYUmpnNDEzWlpRRUx2ZFNwRWo1NG1U?= =?utf-8?B?Y3ZsWFBRTHQ2L05zNzdZenZvTHRITzVFVVRCTDJCRXlqdzhDU1JtVk5JYzVs?= =?utf-8?B?R3B2b0kxY09LOHFVL2c5MWw5TTY4cThsTzA4Z3llWjBHSHZJRU44TTJEb0hk?= =?utf-8?B?QjN4Z1dOTFg2RGh3NWI4VjZNUm0xekdRQW8wUFUrc1JWZStNYnUwQkVYTklw?= =?utf-8?B?bjBOSlhnN1Nwc0IrS2lsZExGc3VuM0hvNjVFczZZUW9vb0duZXU1d0RrUWNw?= =?utf-8?B?NnRya3BOMm44c3ljbTVTRHBWQ1hHTHZJcUdsM1ZqUjhLT0dLMTg3eFdCNFUw?= =?utf-8?B?cFphZFEwbVVkUDRFVlBPakZ2bTNTZ1cwU0FqcklNQkdYVzNqcHFEUWpDcXE5?= =?utf-8?B?YkhWREZnWHpaekovRUZ1TmxFU3RBbDh1ZnJYa2prSFJMbm4yS3RXVUVKM2Rp?= =?utf-8?B?aWVEditvVEYyZURqVmVZejFUTU5oNlBYVk1ELzRrcjRlSmV5bm1BeFQyYUtu?= =?utf-8?B?b3U0Mm1ValRWN1RSU3cwU044MWxXY25YdnltTnNlSWcybG5vOFBaT2VZSjF4?= =?utf-8?B?eWpKMnkxdWJuK09SZ2luK0ZGMnk5dWY4dWR6NGRKNWlFUzB6V2Nmc2d5K3Ri?= =?utf-8?B?aTFmR01GcDlkcU9XL1QvRy8yU1k0eml4VGJRbS8rZ24xdGdTV1dLY3I4MEhV?= =?utf-8?B?RFJtOXdSdk03bmJrVUFyR1JEWEg4Yytsb1VBN3pmUVZqWFpKSFAvZWlZdzJ4?= =?utf-8?B?NW5tSldGbGo2TDAxZkd1ckhmSnJiVFoyMlBncTNnN3pmUHNzcm1XaGdUa2hH?= =?utf-8?B?eTJQcEhqenZ4NCtTelhYaWRMTXQ0VmswSkM3a1A2K0Z2L1NLMU1ySTNDejB0?= =?utf-8?B?bE9zT3NMRGNUOW85c2tGZnRLQ3h0UTdVR25UaVIxSDVTNy9ad1Y0eTFXbVY3?= =?utf-8?B?RU1vVHFUbVRHU0wvMEljSzkxMVJlMzgwY3FUcVpSUGlhU21ZampsdjMzQkgr?= =?utf-8?B?Z2VMWWZIVTZYSnRUc3kxcDVMTGFTN0JSK0MxZDAwWUR1M1RTK0IwaEdCdEZy?= =?utf-8?B?TUl4VmJxeDRkQnZETWRMWGNkb1prZ3ZlY1ZRNERjblZSTG4yQ1k0em4rSHVl?= =?utf-8?B?b3lnR1g3bzFVcTZXNS9yNzRLQ0lsbU1oOHp1MTc2K1FVUFlCOXBWS0dOVE1x?= =?utf-8?B?eXRucDMxaCtLdUhwQ0orNVFCYlg1VVU3am9QWmhkUmdVN29wNTZVRStITFc4?= =?utf-8?B?eHRhUlQ1ek1JQlB4MlI1dnpZM2ZzMzBlajZiYkRreGFqQmRxNEt6eXJvV2Ur?= =?utf-8?B?VDJZQVhrS3o2TnRxYzZQa1N4ZGJrSEVwRFRIQlJ2MkYyWGdqR1JmaW1WcVN1?= =?utf-8?B?WU5LUDZFSXJ3SDNUY0Rtb0J2U3pRNElLVGJEbXJZdE9wbTlHOXJER1RYZG5w?= =?utf-8?B?VVM0Z0FGMzNOaWNIMXZpSUlQL2Q2T2JpNk13cDB1NkhVZlY0L1F5YnE2bjBs?= =?utf-8?B?REhmZkRPbll1UlRQbk85N1VUVTVhRlpwbjJIbDQ1NHdXcEc1OGxEbitXMWNS?= =?utf-8?B?ZWc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3c05b180-905d-44d6-597c-08de31221e40 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7925.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2025 21:39:34.1356 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9tIvwbujfzQ7HBiho0gkTYad3685A5lJbsl5VtL8vIH15SQfKO7cvl/ZhQ7gQKLjuJjgdtF0AAqnmJdwaeADrYpVUkIjJcWHRMcnO9AK7LI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR11MB5998 X-OriginatorOrg: intel.com On 11/25/2025 2:37 AM, david laight wrote: > > This code (or something very similar) gets used to checksum data > during copy_to/from_user for sockets. > This goes back a long way and I suspect the 'killer ap' was nfsd > running over UDP (with 8k+ UDP datagrams). > Modern NICs all (well all anyone cares about) to IP checksum offload. > So you don't need to checksum on send() - I'm sure that is still > enabled even though you pretty much never want it. > The checksum on recv() can only happen for UDP, but massively > complicates the code paths and will normally not be needed. It sounds like this optimization wouldn't provide practical benefit. I don't see a strong case for pursuing this further either, so I'd drop this. Thanks, Chang