From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D1E3C433F5 for ; Tue, 9 Nov 2021 10:43:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0716A61151 for ; Tue, 9 Nov 2021 10:43:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241986AbhKIKqO (ORCPT ); Tue, 9 Nov 2021 05:46:14 -0500 Received: from mga07.intel.com ([134.134.136.100]:62760 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240516AbhKIKqN (ORCPT ); Tue, 9 Nov 2021 05:46:13 -0500 X-IronPort-AV: E=McAfee;i="6200,9189,10162"; a="295858769" X-IronPort-AV: E=Sophos;i="5.87,220,1631602800"; d="scan'208";a="295858769" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2021 02:43:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,220,1631602800"; d="scan'208";a="469935724" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga002.jf.intel.com with ESMTP; 09 Nov 2021 02:43:27 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 9 Nov 2021 02:43:27 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 9 Nov 2021 02:43:26 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 9 Nov 2021 02:43:26 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.47) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 9 Nov 2021 02:43:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ggPilo7G53eEvpUxivGZIQeKDZ38r4/d3Rdd/cLmpuCUibtZi2cL9gLnP3fkxdCJSID3HfqF/yQYlROXq6KDhMeAtdrN3LDopAOSoJzTBZ8eoDy0ooUw8/2niVrGkHY+8duzFVOvlS2CckgLQ/Xic9PwC5UuVJ0KYFsAzf3jqSwoYL/6P33h9T/iSNQf+XxZDbLqichKNyMhM34M1tedIhEk+OXREf+yPPEi0nPo+96fgzADcw3cx+eFXK67TQY+qYB6aE/XxZ7NulbFcPHf6MEuzKMeUhOA3IN3NbA1zaQVrGzVxDS1T8845FHp1pKC+iJb3WosWfOZu0h1GJBdUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=siN5xF1ATQtMaaArOAV/0Q3uUXse+57vFr5fxnMkaFM=; b=AsGbp8fSvuX+eScykO2FhLgFNO+ShzFaX9d9bEnKm2b+G+xfYVmQ5YJ/Gnkj1dY9wGLdISwzbn8OcqWQQ+9mI9fwTIqssARTERhk25AnVf/+pjOkeY4F+pemEOCf5dp7ewurGAbnu8prIKkUum5JNpODMipbs1qe+mGh+cFRdRzAWRETrOSBgm4wjx0yTkBXkZGN7BG14xZ/317wIgaPNXom4cFiii4dUFZZ52UjCM7KMVGoeXDnU/Mh9PXyBziDRCnpNcRR0VtwB7g+lD6M+I68w+Hs4dr8e3KFl2IRlmZQ3YZ4NvbHYtAzzvGnbk9KTZRYJiqH6NJ33UgUVBHGnw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=siN5xF1ATQtMaaArOAV/0Q3uUXse+57vFr5fxnMkaFM=; b=lpI+Fsbi9m5Z+/W8BZ1lr12zcg5P1RZMwTWUI8t4/9eMVj9DzI4m2hC3VxldSa+lJaFom65g+O4HH04PrVLBjHCUJk7VMeO1+eIwEpA6+sJYN+6ztkD62KwWP61PHYb5cUNorRlP3Abk9ejiSVjTzk3g/8NbakyabakXsbeX4fw= Received: from MW5PR11MB5812.namprd11.prod.outlook.com (2603:10b6:303:193::14) by MWHPR11MB0064.namprd11.prod.outlook.com (2603:10b6:301:64::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.20; Tue, 9 Nov 2021 10:43:20 +0000 Received: from MW5PR11MB5812.namprd11.prod.outlook.com ([fe80::b137:7318:a259:699e]) by MW5PR11MB5812.namprd11.prod.outlook.com ([fe80::b137:7318:a259:699e%9]) with mapi id 15.20.4649.019; Tue, 9 Nov 2021 10:43:20 +0000 From: "Machnikowski, Maciej" To: Petr Machata CC: "netdev@vger.kernel.org" , "intel-wired-lan@lists.osuosl.org" , "richardcochran@gmail.com" , "abyagowi@fb.com" , "Nguyen, Anthony L" , "davem@davemloft.net" , "kuba@kernel.org" , "linux-kselftest@vger.kernel.org" , "idosch@idosch.org" , "mkubecek@suse.cz" , "saeed@kernel.org" , "michael.chan@broadcom.com" Subject: RE: [PATCH v2 net-next 6/6] docs: net: Add description of SyncE interfaces Thread-Topic: [PATCH v2 net-next 6/6] docs: net: Add description of SyncE interfaces Thread-Index: AQHX0oli6labJUcox0OLXoT9uSo8Gqv57+iAgAEU4LA= Date: Tue, 9 Nov 2021 10:43:20 +0000 Message-ID: References: <20211105205331.2024623-1-maciej.machnikowski@intel.com> <20211105205331.2024623-7-maciej.machnikowski@intel.com> <87r1bqcyto.fsf@nvidia.com> In-Reply-To: <87r1bqcyto.fsf@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d8b08a3-77ea-4384-4d0d-08d9a36dbf5f x-ms-traffictypediagnostic: MWHPR11MB0064: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: G7hMS1qF9K32nSlbn6zacl+j9iPlRnWiFqJrIR+eo8cTGMwfUr/9qr3K/J2ixukgitZXk9Mvlm5GAiq4BH/WxUa/5AspKsLB1gs+O3I5vpqfbNA7EIjZ6/hFtgsRYtbeMUjcpvXOA2LeKynlcuJ9w5htIGLNtnZS61C7OF4rFNu/Xth5TcXwAraNNDApEsM64eJip6oUrhsjS4WUgtLBkDnu3xjjYMXmq+CxLeFARXVT1/cHZwu4uu5u0gWlbceRaHgGFCOpoaprXgwBXCu/8SO6+2YXVNkxMTSHUsexVdklS4CN4qPuRTNDNgydq/1BJekPADwEqmcXAgxXSckga1ukSHk7mzuODYokg6VQR8z5fLMS+nTRVo+kmA0plZSyfZ/UcUvZZLsK8Au+6XLw7yRtCrx9ATAiXZ1RCJkRicNYq5Zqmia6ZaO8bbBT3xvgDD8M0gt/pJoqG9Jq21XP9ybrJSYiR+aBRmqdgddfJVahQ0J5/1U8wLxuVq7xHPWlTePRQ+JrDMhsTozxpYnRLit8kuuqxPvut+L8P2Yn1Bewp/sniRDCVom26NEc+mcBQ/F2uXyosVQjMRppTrFaYEFf2aEj3QgkWJKKlYXY8xMxJIhtGh15+PN4PXTfsiaYBNsg7fTPeH9oZFuWMRsZE3rTecVzVx2+t6q4U1ZYnvjHAKmUQNtbhtYPouC+dxZVqaBa6zq7yDmLwwt43RP4mg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5812.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(54906003)(53546011)(5660300002)(66946007)(66446008)(6506007)(83380400001)(7696005)(64756008)(2906002)(6916009)(38100700002)(76116006)(52536014)(7416002)(4326008)(316002)(508600001)(66556008)(122000001)(66476007)(82960400001)(33656002)(71200400001)(8936002)(186003)(38070700005)(86362001)(26005)(8676002)(9686003)(30864003)(55016002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZlB3L256ckx6Y1FBQXlvbHNFb08xVjZBNzlZcU9hemwwcnRNMW1lT0dYNTlJ?= =?utf-8?B?UjFpd1VNQjdXdzlwV0hlNnZ1VTk2NTRWZzAzTEt2MGQrVWxOUXBUSC9GcUZu?= =?utf-8?B?RXludXAvVGo2MVZBSEw2QVM2K0MvUytPNnkxcUFyVTBWTkVSZUVkdTZIU1BT?= =?utf-8?B?T0hKdzRBb0YwVlN1SXNXUFArUXdwT2ZoZ3Qyd1pPOUw1bTZVYklMNFFWV1ZG?= =?utf-8?B?M0VhVjVjY2lzTTk0VkRlNlUzdVF2QTNGRHk4aExYSjJUU2NkbklIRmt2SFdq?= =?utf-8?B?TzNXbStXaW9jaVZ2Qm85TFFYVlpzVTV0a0R2SFQrOWdVdi9TbmlOTllMc2Ft?= =?utf-8?B?VnhUY3dvZEtXYnBJZlFUQm84VUpIZDJNYWNmNkRnMEVELzFRSytGc2xoeFlN?= =?utf-8?B?bEEwaHlrZ0xaamI4RlVRUzI3RWJOeERFTE9nUHhrRGlacGpLQUxnSld5MEha?= =?utf-8?B?UlBRRHc0ZnpBd0w3TVJYSzRsc05QYjlBZ2EvV1ZveC9Yb1dBQkU3QVpMQ0F2?= =?utf-8?B?bW9GYW93VTY0dnZaUzd0L2RSV204dGFOWUt0VEphTXJUU0pKa3VCcVQzenhH?= =?utf-8?B?UnljVDVQdjV2aWp5L0VsWEkvZWxvTnlHNlZaM0hydWgxRk1CeVZraUlidzBR?= =?utf-8?B?L08zN0FWNlo0dlZ2elI5THpKN2Q5ZjB5SExRNyszYVlBc3BCZEZ2QzRZYkFC?= =?utf-8?B?YWVPcEExcFIveGdXTGF2WHVtTWVwQXNZWlE5RVcrWkVkTGdBTmpja2hqNkky?= =?utf-8?B?cmU2UjQ1NHZoZEVvT1FNNlU5dkNhYzE0SGFHRkdwNy9ROUliNG9BOEprZXl0?= =?utf-8?B?ZVRFOW9hN0RwNHl5RDZqeFFwNFYzSU9qSU90Tjd2SnErZkxKL2NLRVpjVlFr?= =?utf-8?B?WmxtSThpQzVsdjRqVzRHQWRyb2FublpmOE1na1B3MGd1a3NBVWdrRDM1NkZV?= =?utf-8?B?MGJNWTVKVC92QXBON0dFK3A1STBFWXJIUjBhTEp4WGx4WlN6THNGT1pBL0Fs?= =?utf-8?B?OHBtZjIyZEZ0WnNVQUdkV2trNzNla2pWYTFDSjF3V3hpbjNiQlY3NEN6K1A1?= =?utf-8?B?SEdOM29pY1licXg4OXVYR0hPMUU4K3ZnZkRkQ0QrekJVY2pxcjZMUGNNYmRE?= =?utf-8?B?b1hsYy93NjBXL3ozVzNycmIrQ2pjWlJzSlE1NTdCR3hTRSsyVDc1aHVVSkg4?= =?utf-8?B?MDBHc1JKTjdyQ3QwSDVyWFVtQjRsY25TMk5LNDVaTWswbzlZcUNOeDZVaGlh?= =?utf-8?B?YzhNcFNJdVcxRzY3Uy9GM1JFd1dXQ0FQWktoemE1QUZaNXgyTTRDMytVMVkz?= =?utf-8?B?eE9QRit2TXY1UFFmR2o0QURqL0phTnBxT1BBZjBVdUVGVGZveUZIT3RCeTJ3?= =?utf-8?B?WjUzRmQ3ZmxJQnB5MmFFZXNwcHZCVFlTMlk2cE02QU10TEl5NEwxTXJJS2M1?= =?utf-8?B?RWhzNHdTbmxFNkFGYmhoWkRseUlXUXA0RzFFK09PaDZLbFRHa1lFZHdEVXpv?= =?utf-8?B?SUhOUUZyZSs5UFg2bS93Z3Y0Vno2RHBEd2VEMk03VVo2anM1bU5HcE1USWYw?= =?utf-8?B?WjBmbVIxaTZHd0VxMzhrQjdsN3hiTVNPSVV6eFpXL2RteEdxN2xuK3hlZEdZ?= =?utf-8?B?UFA3YUJicjcwTEZyaXRVeFJLUHR1M2J1dk9PQml0em05M1B1aThSRUUwY3l5?= =?utf-8?B?WXFKS285VEFzVThwQUNwOG1tU2RERXdoanJLUWFsSVNOT1FMVkNzVGh0cFpi?= =?utf-8?B?bytxbWZDdTU0YmJMdjVyZDlGR0VqUTJ1WnNRWFN5UitCMUVCTUlXTkhLTXV1?= =?utf-8?B?NmxvLzk4VFpQQW02Wm5MSnhHN2lBbG1rQ01sUWNiQzcvNWU3ZjFpUW1BZStE?= =?utf-8?B?Z3J6N0Q0VUR5UmhiZHVHazVGZjlJeXdpWi9rR2s4VmhrYWM2M2gzSEhScVNZ?= =?utf-8?B?TjZUR05vSy8ybmpFUW9ZQzduUWJEMEpieEYzd1FjQ1dwUDNTZnZFRFM4UTVJ?= =?utf-8?B?eCthMWNHQXc2TFR3MENFdm1Ga05BRC9mQXloNmpzM2ZHV3hrNVNzam1Iakpv?= =?utf-8?B?RmFrMHN0a0VadmZTLzgrQkRCcVNiL0dwaFMzYUpGakViMnNNcWgwSmhFSXBv?= =?utf-8?B?VGlvYzVRZm1IWHRhVE9VNDZJMFFxM2NHM2JUekNDVDZpRnR1bm5DemRaVTFY?= =?utf-8?B?VEV0aXFESTl1TmNHQXBvY0wzUTEvYUxycnIwaTZraVZqQTZ0bnRmSFZCU24y?= =?utf-8?B?NmtZSFJEeXg3K0FVb2YvdXJ0ZzBBPT0=?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5812.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d8b08a3-77ea-4384-4d0d-08d9a36dbf5f X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2021 10:43:20.4981 (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: biBNKTrOPJbTfvE9M0Gr6ZmciWDIpvKrnQApIDtldcfpsAOh227eSLoGuDu/Qf25Lcg6Q8WckBnagRKg13wSv4jcFqTPYEJK4kvfT8JLs3M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB0064 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGV0ciBNYWNoYXRhIDxw ZXRybUBudmlkaWEuY29tPg0KPiBTZW50OiBNb25kYXksIE5vdmVtYmVyIDgsIDIwMjEgNzowMCBQ TQ0KPiBUbzogTWFjaG5pa293c2tpLCBNYWNpZWogPG1hY2llai5tYWNobmlrb3dza2lAaW50ZWwu Y29tPg0KPiBDYzogbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsgaW50ZWwtd2lyZWQtbGFuQGxpc3Rz Lm9zdW9zbC5vcmc7DQo+IHJpY2hhcmRjb2NocmFuQGdtYWlsLmNvbTsgYWJ5YWdvd2lAZmIuY29t OyBOZ3V5ZW4sIEFudGhvbnkgTA0KPiA8YW50aG9ueS5sLm5ndXllbkBpbnRlbC5jb20+OyBkYXZl bUBkYXZlbWxvZnQubmV0OyBrdWJhQGtlcm5lbC5vcmc7DQo+IGxpbnV4LWtzZWxmdGVzdEB2Z2Vy Lmtlcm5lbC5vcmc7IGlkb3NjaEBpZG9zY2gub3JnOyBta3ViZWNla0BzdXNlLmN6Ow0KPiBzYWVl ZEBrZXJuZWwub3JnOyBtaWNoYWVsLmNoYW5AYnJvYWRjb20uY29tDQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjIgbmV0LW5leHQgNi82XSBkb2NzOiBuZXQ6IEFkZCBkZXNjcmlwdGlvbiBvZiBTeW5j RQ0KPiBpbnRlcmZhY2VzDQo+IA0KPiANCj4gTWFjaWVqIE1hY2huaWtvd3NraSA8bWFjaWVqLm1h Y2huaWtvd3NraUBpbnRlbC5jb20+IHdyaXRlczoNCj4gDQo+ID4gQWRkIERvY3VtZW50YXRpb24v bmV0d29ya2luZy9zeW5jZS5yc3QgZGVzY3JpYmluZyBuZXcgUlROTCBtZXNzYWdlcw0KPiA+IGFu ZCByZXNwZWN0aXZlIE5ETyBvcHMgc3VwcG9ydGluZyBTeW5jRSAoU3luY2hyb25vdXMgRXRoZXJu ZXQpLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWFjaWVqIE1hY2huaWtvd3NraSA8bWFjaWVq Lm1hY2huaWtvd3NraUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIERvY3VtZW50YXRpb24vbmV0 d29ya2luZy9zeW5jZS5yc3QgfCAxMTcNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN Cj4gPiAgMSBmaWxlIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3luY2UucnN0DQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3N5bmNlLnJzdA0KPiBiL0RvY3VtZW50 YXRpb24vbmV0d29ya2luZy9zeW5jZS5yc3QNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNGNhNDFmYjlhNDgxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zeW5jZS5yc3QNCj4gPiBAQCAtMCwwICsx LDExNyBAQA0KPiA+ICsuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsN Cj4gPiArPT09PT09PT09PT09PT09PT09PT0NCj4gPiArU3luY2hyb25vdXMgRXRoZXJuZXQNCj4g PiArPT09PT09PT09PT09PT09PT09PT0NCj4gPiArDQo+ID4gK1N5bmNocm9ub3VzIEV0aGVybmV0 IG5ldHdvcmtzIHVzZSBhIHBoeXNpY2FsIGxheWVyIGNsb2NrIHRvIHN5bnRvbml6ZQ0KPiA+ICt0 aGUgZnJlcXVlbmN5IGFjcm9zcyBkaWZmZXJlbnQgbmV0d29yayBlbGVtZW50cy4NCj4gPiArDQo+ ID4gK0Jhc2ljIFN5bmNFIG5vZGUgZGVmaW5lZCBpbiB0aGUgSVRVLVQgRy44MjY0IGNvbnNpc3Qg b2YgYW4gRXRoZXJuZXQNCj4gPiArRXF1aXBtZW50IENsb2NrIChFRUMpIGFuZCBhIFBIWSB0aGF0 IGhhcyBkZWRpY2F0ZWQgb3V0cHV0cyBvZiByZWNvdmVyZWQNCj4gY2xvY2tzDQo+ID4gK2FuZCBh IGRlZGljYXRlZCBUWCBjbG9jayBpbnB1dCB0aGF0IGlzIHVzZWQgYXMgdG8gdHJhbnNtaXQgZGF0 YSB0byBvdGhlcg0KPiBub2Rlcy4NCj4gPiArDQo+ID4gK1RoZSBTeW5jRSBjYXBhYmxlIFBIWSBp cyBhYmxlIHRvIHJlY292ZXIgdGhlIGluY29tbmluZyBmcmVxdWVuY3kgb2YgdGhlDQo+IGRhdGEN Cj4gPiArc3RyZWFtIG9uIFJYIGxhbmVzIGFuZCByZWRpcmVjdCBpdCAoc29tZXRpbWVzIGRpdmlk aW5nIGl0KSB0byByZWNvdmVyZWQNCj4gPiArY2xvY2sgb3V0cHV0cy4gSW4gU3luY0UgUEhZIHRo ZSBUWCBmcmVxdWVuY3kgaXMgZGlyZWN0bHkgZGVwZW5kZW50IG9uIHRoZQ0KPiA+ICtpbnB1dCBm cmVxdWVuY3kgLSBlaXRoZXIgb24gdGhlIFBIWSBDTEsgaW5wdXQsIG9yIG9uIGEgZGVkaWNhdGVk DQo+ID4gK1RYIGNsb2NrIGlucHV0Lg0KPiA+ICsNCj4gPiArICAgICAg4pSM4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQ DQo+ID4gKyAgICAgIOKUgiBSWCAgICAgICAg4pSCIFRYICAgICAgIOKUgg0KPiA+ICsgIDEgICDi lIIgbGFuZXMgICAgIOKUgiBsYW5lcyAgICDilIIgMQ0KPiA+ICsgIOKUgOKUgOKUgOKWuuKUnOKU gOKUgOKUgOKUgOKUgOKUgOKUkCAgICDilIIgICAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pa6 DQo+ID4gKyAgMiAgIOKUgiAgICAgIOKUgiAgICDilIIgICAgICAgICAg4pSCIDINCj4gPiArICDi lIDilIDilIDilrrilJzilIDilIDilJAgICDilIIgICAg4pSCICAgICAgICAgIOKUnOKUgOKUgOKU gOKUgOKUgOKWug0KPiA+ICsgIDMgICDilIIgIOKUgiAgIOKUgiAgICDilIIgICAgICAgICAg4pSC IDMNCj4gPiArICDilIDilIDilIDilrrilJzilIDilrzilrwgICDilrwgICAg4pSCICAgICAgICAg IOKUnOKUgOKUgOKUgOKUgOKUgOKWug0KPiA+ICsgICAgICDilIIg4pSA4pSA4pSA4pSA4pSA4pSA ICAgIOKUgiAgICAgICAgICDilIINCj4gPiArICAgICAg4pSCIFxfX19fLyAgICDilIIgICAgICAg ICAg4pSCDQo+ID4gKyAgICAgIOKUlOKUgOKUgOKUvOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKU tOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KPiA+ICsgICAgICAgIDHilIIgMuKU giAgICAgICAg4payDQo+ID4gKyBSQ0xLIG91dOKUgiAg4pSCICAgICAgICDilIIgVFggQ0xLIGlu DQo+ID4gKyAgICAgICAgIOKWvCAg4pa8ICAgICAgICDilIINCj4gPiArICAgICAgIOKUjOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUkA0KPiA+ICsg ICAgICAg4pSCICAgICAgICAgICAgICAgICDilIINCj4gPiArICAgICAgIOKUgiAgICAgICBFRUMg ICAgICAg4pSCDQo+ID4gKyAgICAgICDilIIgICAgICAgICAgICAgICAgIOKUgg0KPiA+ICsgICAg ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSYDQo+ID4gKw0KPiA+ICtUaGUgRUVDIGNhbiBzeW5jaHJvbml6ZSBpdHMgZnJlcXVlbmN5IHRv IG9uZSBvZiB0aGUgc3luY2hyb25pemF0aW9uDQo+IGlucHV0cw0KPiA+ICtlaXRoZXIgY2xvY2tz IHJlY292ZXJlZCBvbiB0cmFmZmljIGludGVyZmFjZXMgb3IgKGluIGFkdmFuY2VkIGRlcGxveW1l bnRzKQ0KPiA+ICtleHRlcm5hbCBmcmVxdWVuY3kgc291cmNlcy4NCj4gPiArDQo+ID4gK1NvbWUg RUVDIGltcGxlbWVudGF0aW9ucyBjYW4gc2VsZWN0IHN5bmNocm9uaXphdGlvbiBzb3VyY2UgdGhy b3VnaA0KPiA+ICtwcmlvcml0eSB0YWJsZXMgYW5kIHN5bmNocm9uaXphdGlvbiBzdGF0dXMgbWVz c2FnaW5nIGFuZCBwcm92aWRlDQo+IG5lY2Vzc2FyeQ0KPiA+ICtmaWx0ZXJpbmcgYW5kIGhvbGRv dmVyIGNhcGFiaWxpdGllcy4NCj4gPiArDQo+ID4gK1RoZSBmb2xsb3dpbmcgaW50ZXJmYWNlIGNh biBiZSBhcHBsaWNhYmxlIHRvIGRpZmZmZXJlbnQgcGFja2V0IG5ldHdvcmsNCj4gdHlwZXMNCj4g PiArZm9sbG93aW5nIElUVS1UIEcuODI2MS9HLjgyNjIgcmVjb21tZW5kYXRpb25zLg0KPiA+ICsN Cj4gPiArSW50ZXJmYWNlDQo+ID4gKz09PT09PT09PQ0KPiA+ICsNCj4gPiArVGhlIGZvbGxvd2lu ZyBSVE5MIG1lc3NhZ2VzIGFyZSB1c2VkIHRvIHJlYWQvY29uZmlndXJlIFN5bmNFIHJlY292ZXJl ZA0KPiA+ICtjbG9ja3MuDQo+ID4gKw0KPiA+ICtSVE1fR0VUUkNMS1JBTkdFDQo+ID4gKy0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gK1JlYWRzIHRoZSBhbGxvd2VkIHBpbiBpbmRleCByYW5nZSBmb3Ig dGhlIHJlY292ZXJlZCBjbG9jayBvdXRwdXRzLg0KPiA+ICtUaGlzIGNhbiBiZSBhbGlnbmVkIHRv IFBIWSBvdXRwdXRzIG9yIHRvIEVFQyBpbnB1dHMsIHdoaWNoZXZlciBpcw0KPiA+ICtiZXR0ZXIg Zm9yIGEgZ2l2ZW4gYXBwbGljYXRpb24uDQo+ID4gK1dpbGwgY2FsbCB0aGUgbmRvX2dldF9yY2xr X3JhbmdlIGZ1bmN0aW9uIHRvIHJlYWQgdGhlIGFsbG93ZWQgcmFuZ2UNCj4gPiArb2Ygb3V0cHV0 IHBpbiBpbmRleGVzLg0KPiA+ICtXaWxsIGNhbGwgbmRvX2dldF9yY2xrX3JhbmdlIHRvIGRldGVy bWluZSB0aGUgYWxsb3dlZCByZWNvdmVyZWQgY2xvY2sNCj4gPiArcmFuZ2UgYW5kIHJldHVybiB0 aGVtIGluIHRoZSBJRkxBX1JDTEtfUkFOR0VfTUlOX1BJTiBhbmQgdGhlDQo+ID4gK0lGTEFfUkNM S19SQU5HRV9NQVhfUElOIGF0dHJpYnV0ZXMNCj4gPiArDQo+ID4gK1JUTV9HRVRSQ0xLU1RBVEUN Cj4gPiArLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArUmVhZCB0aGUgc3RhdGUgb2YgcmVjb3ZlcmVk IHBpbnMgdGhhdCBvdXRwdXQgcmVjb3ZlcmVkIGNsb2NrIGZyb20NCj4gPiArYSBnaXZlbiBwb3J0 LiBUaGUgbWVzc2FnZSB3aWxsIGNvbnRhaW4gdGhlIG51bWJlciBvZiBhc3NpZ25lZCBjbG9ja3MN Cj4gPiArKElGTEFfUkNMS19TVEFURV9DT1VOVCkgYW5kIGFuIE4gcGluIGluZGV4ZXMgaW4NCj4g SUZMQV9SQ0xLX1NUQVRFX09VVF9JRFgNCj4gPiArVG8gc3VwcG9ydCBtdWx0aXBsZSByZWNvdmVy ZWQgY2xvY2sgb3V0cHV0cyBmcm9tIHRoZSBzYW1lIHBvcnQsIHRoaXMNCj4gbWVzc2FnZQ0KPiA+ ICt3aWxsIHJldHVybiB0aGUgSUZMQV9SQ0xLX1NUQVRFX0NPVU5UIGF0dHJpYnV0ZSBjb250YWlu aW5nIHRoZSBudW1iZXINCj4gb2YNCj4gPiArYWN0aXZlIHJlY292ZXJlZCBjbG9jayBvdXRwdXRz IChOKSBhbmQgTiBJRkxBX1JDTEtfU1RBVEVfT1VUX0lEWA0KPiBhdHRyaWJ1dGVzDQo+ID4gK2xp c3RpbmcgdGhlIGFjdGl2ZSBvdXRwdXQgaW5kZXhlcy4NCj4gPiArVGhpcyBtZXNzYWdlIHdpbGwg Y2FsbCB0aGUgbmRvX2dldF9yY2xrX3JhbmdlIHRvIGRldGVybWluZSB0aGUgYWxsb3dlZA0KPiA+ ICtyZWNvdmVyZWQgY2xvY2sgaW5kZXhlcyBhbmQgdGhlbiB3aWxsIGxvb3AgdGhyb3VnaCB0aGVt LCBjYWxsaW5nDQo+ID4gK3RoZSBuZG9fZ2V0X3JjbGtfc3RhdGUgZm9yIGVhY2ggb2YgdGhlbS4N Cj4gDQo+IExldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBtb2RlbCB0aGF0IHlvdSBw cm9wb3NlLiBTcGVjaWZpY2FsbHkNCj4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBhIG11bHRp LXBvcnQgZGV2aWNlLCBiZWNhdXNlIHRoYXQncyBteQ0KPiBpbW1lZGlhdGUgdXNlIGNhc2UuDQo+ IA0KPiBSVE1fR0VUUkNMS1JBTkdFIHdvdWxkIHJlcG9ydCBudW1iZXIgb2YgInBpbnMiIHRoYXQg bWF0Y2hlcyB0aGUNCj4gbnVtYmVyDQo+IG9mIGxhbmVzIGluIHRoZSBzeXN0ZW0uIFNvIGUuZy4g YSAzMi1wb3J0IHN3aXRjaCwgd2hlcmUgZWFjaCBwb3J0IGhhcyA0DQo+IGxhbmVzLCB3b3VsZCBn aXZlIGEgcmFuZ2Ugb2YgWzE7IDEyOF0sIGluY2x1c2l2ZS4gKE9yIG1heWJlIFswOyAxMjgpIG9y DQo+IHdoYXRldmVyLikNCj4gDQo+IFJUTV9HRVRSQ0xLU1RBVEUgd291bGQgdGhlbiByZXR1cm4g c29tZSBzdWJzZXQgb2YgdGhvc2UgcGlucywNCj4gZGVwZW5kaW5nDQo+IG9uIHdoaWNoIGxhbmVz IGFjdHVhbGx5IG1hbmFnZWQgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiBhbmQgY2FycnkgYQ0K PiB2YWxpZCBjbG9jayBzaWduYWwuIFNvLCBzYXksIFsxLCAyLCAzLCA0XSBpZiB0aGUgZmlyc3Qg cG9ydCBoYXMgZS5nLiBhDQo+IDEwMEdicHMgZXN0YWJsaXNoZWQuDQo+IA0KDQpUaG9zZSAyIHdp bGwgYmUgbWVyZ2VkIGludG8gYSBzaW5nbGUgUlRNX0dFVFJDTEtTVEFURSB0aGF0IHdpbGwgcmVw b3J0DQp0aGUgc3RhdGUgb2YgYWxsIGF2YWlsYWJsZSBwaW5zIGZvciBhIGdpdmVuIHBvcnQuDQoN CkFsc28gbGFuZXMgaGVyZSBzaG91bGQgcmVhbGx5IGJlIHBvcnRzIC0gd2lsbCBmaXggaW4gbmV4 dCByZXZpc2lvbi4NCg0KQnV0IHRoZSBsb2dpYyB3aWxsIGJlOiANCkNhbGwgdGhlIFJUTV9HRVRS Q0xLU1RBVEUuIEl0IHdpbGwgcmV0dXJuIHRoZSBsaXN0IG9mIHBpbnMgYW5kIHRoZWlyIHN0YXRl DQpmb3IgYSBnaXZlbiBwb3J0LiBPbmNlIHlvdSByZWFkIHRoZSByYW5nZSB5b3Ugd2lsbCBzZW5k IHRoZSBSVE1fU0VUUkNMS1NUQVRFDQp0byBlbmFibGUgdGhlIHJlZGlyZWN0aW9uIHRvIGEgZ2l2 ZW4gUkNMSyBvdXRwdXQgZnJvbSB0aGUgUEhZLiBJZiB5b3VyIERQTEwvRUVDDQppcyBjb25maWd1 cmVkIHRvIGFjY2VwdCBpdCBhdXRvbWF0aWNhbGx5IC0gaXQncyBhbGwgeW91IG5lZWQgdG8gZG8g YW5kIHlvdSBuZWVkIHRvDQp3YWl0IGZvciB0aGUgcmlnaHQgc3RhdGUgb2YgdGhlIEVFQyAobG9j a2VkL2xvY2tlZCB3aXRoIEhPKS4NCg0KPiA+ICsNCj4gPiArUlRNX1NFVFJDTEtTVEFURQ0KPiA+ ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICtTZXRzIHRoZSByZWRpcmVjdGlvbiBvZiB0aGUgcmVj b3ZlcmVkIGNsb2NrIGZvciBhIGdpdmVuIHBpbi4gVGhpcyBtZXNzYWdlDQo+ID4gK2V4cGVjdHMg b25lIGF0dHJpYnV0ZToNCj4gPiArc3RydWN0IGlmX3NldF9yY2xrX21zZyB7DQo+ID4gKwlfX3Uz MiBpZmluZGV4OyAvKiBpbnRlcmZhY2UgaW5kZXggKi8NCj4gPiArCV9fdTMyIG91dF9pZHg7IC8q IG91dHB1dCBpbmRleCAoZnJvbSBhIHZhbGlkIHJhbmdlKQ0KPiA+ICsJX191MzIgZmxhZ3M7IC8q IGNvbmZpZ3VyYXRpb24gZmxhZ3MgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gK1N1cHBvcnRlZCBm bGFncyBhcmU6DQo+ID4gK1NFVF9SQ0xLX0ZMQUdTX0VOQSAtIGlmIHNldCBpbiBmbGFncyAtIHRo ZSBnaXZlbiBvdXRwdXQgd2lsbCBiZSBlbmFibGVkLA0KPiA+ICsJCSAgICAgaWYgY2xlYXIgLSB0 aGUgb3V0cHV0IHdpbGwgYmUgZGlzYWJsZWQuDQo+IA0KPiBPSywgc28gaGVyZSBJIHNldCB1cCB0 aGUgdHJhY2tpbmcuIGlmaW5kZXggdGVsbHMgbWUgd2hpY2ggRUVDIHRvDQo+IGNvbmZpZ3VyZSwg b3V0X2lkeCBpcyB0aGUgcGluIHRvIHRyYWNrLCBmbGFncyB0ZWxsIG1lIHdoZXRoZXIgdG8gc2V0 IHVwDQo+IHRoZSB0cmFja2luZyBvciB0ZWFyIGl0IGRvd24uIFRodXMgZS5nLiBvbiBwb3J0IDIs IHRyYWNrIHBpbiAyLCBiZWNhdXNlDQo+IEkgc29tZWhvdyBrbm93IHRoYXQgbGFuZSAyIGhhcyB0 aGUgYmVzdCBjbG9jay4NCg0KSXQncyBib3VuZCB0byBpZmluZGV4IHRvIGtub3cgd2hpY2ggUEhZ IHBvcnQgeW91IGludGVyYWN0IHdpdGguIEl0IGhhcyBub3RoaW5nIHRvDQpkbyB3aXRoIHRoZSBF RUMgeWV0Lg0KIA0KPiBJZiB0aGUgYWJvdmUgaXMgYnJvYWRseSBjb3JyZWN0LCBJJ3ZlIGdvdCBz b21lIHF1ZXN0aW9ucy4NCj4gDQo+IEZpcnN0LCB3aGF0IGlmIG1vcmUgdGhhbiBvbmUgb3V0X2lk eCBpcyBzZXQ/IFdoYXQgYXJlIGRyaXZlcnMgLyBIVyBtZWFudA0KPiB0byBkbyB3aXRoIHRoaXM/ IFdoYXQgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yPw0KDQpFeHBlY3RlZCBiZWhhdmlvciBpcyBk ZXBsb3ltZW50IHNwZWNpZmljLiBZb3UgY2FuIHVzZSBkaWZmZXJlbnQgcGh5IHJlY292ZXJlZA0K Y2xvY2sgb3V0cHV0cyB0byBpbXBsZW1lbnQgYWN0aXZlL3Bhc3NpdmUgbW9kZSBvZiBjbG9jayBm YWlsb3Zlci4NCg0KPiBBbHNvIEdFVFJDTEtTVEFURSBhbmQgU0VUUkNMS1NUQVRFIGhhdmUgYSBz b21ld2hhdCBkaWZmZXJlbnQgc2NvcGU6DQo+IG9uZQ0KPiByZXBvcnRzIHdoaWNoIHBpbnMgY2Fy cnkgYSBjbG9jayBzaWduYWwsIHRoZSBvdGhlciBpbmZsdWVuY2VzIHRyYWNraW5nLg0KPiBUaGF0 IHNlZW1zIHdyb25nLiBUaGVyZSBhbHNvIGRvZXMgbm90IHNlZW1zIHRvIGJlIGFuIFVBUEkgdG8g cmV0cmlldmUNCj4gdGhlIHRyYWNraW5nIHNldHRpbmdzLg0KDQpUaGV5IGRvbid0LiBHZXQgcmVh ZHMgdGhlIHJlZGlyZWN0aW9uIHN0YXRlIGFuZCBTRVQgc2V0cyBpdCAtIG5vdGhpbmcgbW9yZSwN Cm5vdGhpbmcgbGVzcy4gSW4gSUNFIHdlIHVzZSBFRUMgcGluIGluZGV4ZXMgc28gdGhhdCB0aGUg bW9kZWwgdHJhbnNsYXRlcyBlYXNpZXINCnRvIHRoZSBvbmUgd2hlbiB3ZSBzdXBwb3J0IERQTEwg c3Vic3lzdGVtLg0KDQo+IFNlY29uZCwgYXMgYSB1c2VyLXNwYWNlIGNsaWVudCwgaG93IGRvIEkg a25vdyB0aGF0IGlmIHBvcnRzIDEgYW5kIDIgYm90aA0KPiByZXBvcnQgcGluIHJhbmdlIFtBOyBC XSwgdGhhdCB0aGV5IGJvdGggYWN0dWFsbHkgc2hhcmUgdGhlIHNhbWUNCj4gdW5kZXJseWluZyBF RUM/IElzIHRoZXJlIHNvbWUgc29ydCBvZiBjb29yZGluYXRpb24gYW1vbmcgdGhlIGRyaXZlcnMs DQo+IHN1Y2ggdGhhdCBlYWNoIHBpbiBpbiB0aGUgc3lzdGVtIGhhcyBhIHVuaXF1ZSBJRD8NCg0K Rm9yIG5vdyB3ZSBkb24ndCwgYXMgd2UgZG9uJ3QgaGF2ZSBFRUMgc3Vic3lzdGVtLiBCdXQgdGhh dCBjYW4gYmUgc29sdmVkDQpieSBhIGNvbmZpZyBmaWxlIHRlbXBvcmFyaWx5Lg0KDQo+IEZ1cnRo ZXIsIGhvdyBkbyBJIGFjdHVhbGx5IGtub3cgdGhlIG1hcHBpbmcgZnJvbSBwb3J0cyB0byBwaW5z PyBFLmcuIGFzDQo+IGEgdXNlciwgSSBtaWdodCBrbm93IG15IG1hc3RlciBpcyBiZWhpbmQgc3dw MS4gSG93IGRvIEkga25vdyB3aGF0IHBpbnMNCj4gY29ycmVzcG9uZCB0byB0aGF0IHBvcnQ/IEFz IGEgdXNlci1zcGFjZSB0b29sIGF1dGhvciwgaG93IGRvIEkgaGVscA0KPiB1c2VycyB0byBkbyBz b21ldGhpbmcgbGlrZSAiZWVjIHNldCBjbG9jayBlZWMwIHRyYWNrIHN3cDEiPw0KDQpUaGF0J3Mg d2h5IGRyaXZlciBuZWVkcyB0byBiZSBzbWFydCB0aGVyZSBhbmQgcmV0dXJuIGluZGV4ZXMgcHJv cGVybHkuDQoNCj4gQWRkaXRpb25hbGx5LCBob3cgd291bGQgdGhpbmdzIGxpa2UgZXh0ZXJuYWwg R1BTcyBvciAxcHBzIGJlIG1vZGVsZWQ/IEkNCj4gZ3Vlc3MgdGhlIGRyaXZlciB3b3VsZCBrbm93 IGFib3V0IHN1Y2ggaW50ZXJmYWNlLCBhbmQgd291bGQgZXhwb3NlIGl0IGFzDQo+IGEgInBpbiIu IFdoZW4gdGhlIEdQUyBzaWduYWwgbG9ja3MsIHRoZSBkcml2ZXIgc3RhcnRzIHJlcG9ydGluZyB0 aGUgcGluDQo+IGluIHRoZSBSQ0xLIHNldC4gVGhlbiBpdCBpcyBwb3NzaWJsZSB0byBzZXQgdXAg dHJhY2tpbmcgb2YgdGhhdCBwaW4uDQoNClRoYXQgd29uJ3QgYmUgZW5hYmxlZCBiZWZvcmUgd2Ug Z2V0IHRoZSBEUExMIHN1YnN5c3RlbSByZWFkeS4NCiANCj4gSXQgc2VlbXMgdG8gbWUgaXQgd291 bGQgYmUgZWFzaWVyIHRvIHVuZGVyc3RhbmQsIGFuZCB0byB3cml0ZSB1c2VyLXNwYWNlDQo+IHRv b2xzIGFuZCBkcml2ZXJzIGZvciwgYSBtb2RlbCB0aGF0IGhhcyBFRUMgYXMgYW4gZXhwbGljaXQg Zmlyc3QtY2xhc3MNCj4gb2JqZWN0LiBUaGF0J3Mgd2hlcmUgdGhlIEVFQyBzdGF0ZSBuYXR1cmFs bHkgYmVsb25ncywgdGhhdCdzIHdoZXJlIHRoZQ0KPiBwaW4gcmFuZ2UgbmF0dXJhbGx5IGJlbG9u Z3MuIE5ldGRldnMgc2hvdWxkIGhhdmUgYSByZWZlcmVuY2UgdG8gRUVDIGFuZA0KPiBwaW5zLCBu b3QgcHJlc2VudCB0aGlzIGluZm9ybWF0aW9uIGFzIGlmIHRoZXkgb3duIGl0LiBBIGZpcnN0LWNs YXNzIEVFQw0KPiB3b3VsZCBhbHNvIGFsbG93IHRvIGxhdGVyIGZpZ3VyZSBvdXQgaG93IHRvIGhv b2sgdXAgUEhDIGFuZCBFRUMuDQoNCldlIGhhdmUgdGhlIHVzZXJzcGFjZSB0b29sLCBidXQgY2Fu 4oCZdCB1cHN0cmVhbSBpdCB1bnRpbCB3ZSBkZWZpbmUga2VybmVsIA0KSW50ZXJmYWNlcy4gSXQn cyBwYXJhZ3JhcGggMjIgOigNCg0KUmVnYXJkcw0KTWFjaWVrDQoNCj4gPiArDQo+ID4gK1JUTV9H RVRFRUNTVEFURQ0KPiA+ICstLS0tLS0tLS0tLS0tLS0tDQo+ID4gK1JlYWRzIHRoZSBzdGF0ZSBv ZiB0aGUgRUVDIG9yIGVxdWl2YWxlbnQgcGh5c2ljYWwgY2xvY2sgc3luY2hyb25pemVyLg0KPiA+ ICtUaGlzIG1lc3NhZ2UgcmV0dXJucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6DQo+ID4gK0lG TEFfRUVDX1NUQVRFIC0gY3VycmVudCBzdGF0ZSBvZiB0aGUgRUVDIG9yIGVxdWl2YWxlbnQgY2xv Y2sgZ2VuZXJhdG9yLg0KPiA+ICsJCSBUaGUgc3RhdGVzIHJldHVybmVkIGluIHRoaXMgYXR0cmli dXRlIGFyZSBhbGlnbmVkIHRvIHRoZQ0KPiA+ICsJCSBJVFUtVCBHLjc4MSBhbmQgYXJlOg0KPiA+ ICsJCSAgSUZfRUVDX1NUQVRFX0lOVkFMSUQgLSBzdGF0ZSBpcyBub3QgdmFsaWQNCj4gPiArCQkg IElGX0VFQ19TVEFURV9GUkVFUlVOIC0gY2xvY2sgaXMgZnJlZS1ydW5uaW5nDQo+ID4gKwkJICBJ Rl9FRUNfU1RBVEVfTE9DS0VEIC0gY2xvY2sgaXMgbG9ja2VkIHRvIHRoZSByZWZlcmVuY2UsDQo+ ID4gKwkJICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRoZSBob2xkb3ZlciBtZW1vcnkgaXMg bm90IHZhbGlkDQo+ID4gKwkJICBJRl9FRUNfU1RBVEVfTE9DS0VEX0hPX0FDUSAtIGNsb2NrIGlz IGxvY2tlZCB0byB0aGUNCj4gcmVmZXJlbmNlDQo+ID4gKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFuZCBob2xkb3ZlciBtZW1vcnkgaXMgdmFsaWQNCj4gPiArCQkgIElGX0VFQ19T VEFURV9IT0xET1ZFUiAtIGNsb2NrIGlzIGluIGhvbGRvdmVyIG1vZGUNCj4gPiArU3RhdGUgaXMg cmVhZCBmcm9tIHRoZSBuZXRkZXYgY2FsbGluZyB0aGU6DQo+ID4gK2ludCAoKm5kb19nZXRfZWVj X3N0YXRlKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIGlmX2VlY19zdGF0ZQ0KPiAqc3Rh dGUsDQo+ID4gKwkJCSB1MzIgKnNyY19pZHgsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFj ayk7DQo+ID4gKw0KPiA+ICtJRkxBX0VFQ19TUkNfSURYIC0gb3B0aW9uYWwgYXR0cmlidXRlIHJl dHVybmluZyB0aGUgaW5kZXggb2YgdGhlDQo+IHJlZmVyZW5jZSB0aGF0DQo+ID4gKwkJICAgaXMg dXNlZCBmb3IgdGhlIGN1cnJlbnQgSUZMQV9FRUNfU1RBVEUsIGkuZS4sIHRoZSBpbmRleCBvZg0K PiA+ICsJCSAgIHRoZSBwaW4gdGhhdCB0aGUgRUVDIGlzIGxvY2tlZCB0by4NCj4gPiArDQo+ID4g K1dpbGwgYmUgcmV0dXJuZWQgb25seSBpZiB0aGUgbmRvX2dldF9lZWNfc3JjIGlzIGltcGxlbWVu dGVkLg0K From mboxrd@z Thu Jan 1 00:00:00 1970 From: Machnikowski, Maciej Date: Tue, 9 Nov 2021 10:43:20 +0000 Subject: [Intel-wired-lan] [PATCH v2 net-next 6/6] docs: net: Add description of SyncE interfaces In-Reply-To: <87r1bqcyto.fsf@nvidia.com> References: <20211105205331.2024623-1-maciej.machnikowski@intel.com> <20211105205331.2024623-7-maciej.machnikowski@intel.com> <87r1bqcyto.fsf@nvidia.com> Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: > -----Original Message----- > From: Petr Machata > Sent: Monday, November 8, 2021 7:00 PM > To: Machnikowski, Maciej > Cc: netdev at vger.kernel.org; intel-wired-lan at lists.osuosl.org; > richardcochran at gmail.com; abyagowi at fb.com; Nguyen, Anthony L > ; davem at davemloft.net; kuba at kernel.org; > linux-kselftest at vger.kernel.org; idosch at idosch.org; mkubecek at suse.cz; > saeed at kernel.org; michael.chan at broadcom.com > Subject: Re: [PATCH v2 net-next 6/6] docs: net: Add description of SyncE > interfaces > > > Maciej Machnikowski writes: > > > Add Documentation/networking/synce.rst describing new RTNL messages > > and respective NDO ops supporting SyncE (Synchronous Ethernet). > > > > Signed-off-by: Maciej Machnikowski > > --- > > Documentation/networking/synce.rst | 117 > +++++++++++++++++++++++++++++ > > 1 file changed, 117 insertions(+) > > create mode 100644 Documentation/networking/synce.rst > > > > diff --git a/Documentation/networking/synce.rst > b/Documentation/networking/synce.rst > > new file mode 100644 > > index 000000000000..4ca41fb9a481 > > --- /dev/null > > +++ b/Documentation/networking/synce.rst > > @@ -0,0 +1,117 @@ > > +.. SPDX-License-Identifier: GPL-2.0 > > + > > +==================== > > +Synchronous Ethernet > > +==================== > > + > > +Synchronous Ethernet networks use a physical layer clock to syntonize > > +the frequency across different network elements. > > + > > +Basic SyncE node defined in the ITU-T G.8264 consist of an Ethernet > > +Equipment Clock (EEC) and a PHY that has dedicated outputs of recovered > clocks > > +and a dedicated TX clock input that is used as to transmit data to other > nodes. > > + > > +The SyncE capable PHY is able to recover the incomning frequency of the > data > > +stream on RX lanes and redirect it (sometimes dividing it) to recovered > > +clock outputs. In SyncE PHY the TX frequency is directly dependent on the > > +input frequency - either on the PHY CLK input, or on a dedicated > > +TX clock input. > > + > > + ???????????????????????? > > + ? RX ? TX ? > > + 1 ? lanes ? lanes ? 1 > > + ???????????? ? ??????? > > + 2 ? ? ? ? 2 > > + ???????? ? ? ??????? > > + 3 ? ? ? ? ? 3 > > + ???????? ? ? ??????? > > + ? ?????? ? ? > > + ? \____/ ? ? > > + ???????????????????????? > > + 1? 2? ? > > + RCLK out? ? ? TX CLK in > > + ? ? ? > > + ??????????????????? > > + ? ? > > + ? EEC ? > > + ? ? > > + ??????????????????? > > + > > +The EEC can synchronize its frequency to one of the synchronization > inputs > > +either clocks recovered on traffic interfaces or (in advanced deployments) > > +external frequency sources. > > + > > +Some EEC implementations can select synchronization source through > > +priority tables and synchronization status messaging and provide > necessary > > +filtering and holdover capabilities. > > + > > +The following interface can be applicable to diffferent packet network > types > > +following ITU-T G.8261/G.8262 recommendations. > > + > > +Interface > > +========= > > + > > +The following RTNL messages are used to read/configure SyncE recovered > > +clocks. > > + > > +RTM_GETRCLKRANGE > > +----------------- > > +Reads the allowed pin index range for the recovered clock outputs. > > +This can be aligned to PHY outputs or to EEC inputs, whichever is > > +better for a given application. > > +Will call the ndo_get_rclk_range function to read the allowed range > > +of output pin indexes. > > +Will call ndo_get_rclk_range to determine the allowed recovered clock > > +range and return them in the IFLA_RCLK_RANGE_MIN_PIN and the > > +IFLA_RCLK_RANGE_MAX_PIN attributes > > + > > +RTM_GETRCLKSTATE > > +----------------- > > +Read the state of recovered pins that output recovered clock from > > +a given port. The message will contain the number of assigned clocks > > +(IFLA_RCLK_STATE_COUNT) and an N pin indexes in > IFLA_RCLK_STATE_OUT_IDX > > +To support multiple recovered clock outputs from the same port, this > message > > +will return the IFLA_RCLK_STATE_COUNT attribute containing the number > of > > +active recovered clock outputs (N) and N IFLA_RCLK_STATE_OUT_IDX > attributes > > +listing the active output indexes. > > +This message will call the ndo_get_rclk_range to determine the allowed > > +recovered clock indexes and then will loop through them, calling > > +the ndo_get_rclk_state for each of them. > > Let me make sure I understand the model that you propose. Specifically > from the point of view of a multi-port device, because that's my > immediate use case. > > RTM_GETRCLKRANGE would report number of "pins" that matches the > number > of lanes in the system. So e.g. a 32-port switch, where each port has 4 > lanes, would give a range of [1; 128], inclusive. (Or maybe [0; 128) or > whatever.) > > RTM_GETRCLKSTATE would then return some subset of those pins, > depending > on which lanes actually managed to establish a connection and carry a > valid clock signal. So, say, [1, 2, 3, 4] if the first port has e.g. a > 100Gbps established. > Those 2 will be merged into a single RTM_GETRCLKSTATE that will report the state of all available pins for a given port. Also lanes here should really be ports - will fix in next revision. But the logic will be: Call the RTM_GETRCLKSTATE. It will return the list of pins and their state for a given port. Once you read the range you will send the RTM_SETRCLKSTATE to enable the redirection to a given RCLK output from the PHY. If your DPLL/EEC is configured to accept it automatically - it's all you need to do and you need to wait for the right state of the EEC (locked/locked with HO). > > + > > +RTM_SETRCLKSTATE > > +----------------- > > +Sets the redirection of the recovered clock for a given pin. This message > > +expects one attribute: > > +struct if_set_rclk_msg { > > + __u32 ifindex; /* interface index */ > > + __u32 out_idx; /* output index (from a valid range) > > + __u32 flags; /* configuration flags */ > > +}; > > + > > +Supported flags are: > > +SET_RCLK_FLAGS_ENA - if set in flags - the given output will be enabled, > > + if clear - the output will be disabled. > > OK, so here I set up the tracking. ifindex tells me which EEC to > configure, out_idx is the pin to track, flags tell me whether to set up > the tracking or tear it down. Thus e.g. on port 2, track pin 2, because > I somehow know that lane 2 has the best clock. It's bound to ifindex to know which PHY port you interact with. It has nothing to do with the EEC yet. > If the above is broadly correct, I've got some questions. > > First, what if more than one out_idx is set? What are drivers / HW meant > to do with this? What is the expected behavior? Expected behavior is deployment specific. You can use different phy recovered clock outputs to implement active/passive mode of clock failover. > Also GETRCLKSTATE and SETRCLKSTATE have a somewhat different scope: > one > reports which pins carry a clock signal, the other influences tracking. > That seems wrong. There also does not seems to be an UAPI to retrieve > the tracking settings. They don't. Get reads the redirection state and SET sets it - nothing more, nothing less. In ICE we use EEC pin indexes so that the model translates easier to the one when we support DPLL subsystem. > Second, as a user-space client, how do I know that if ports 1 and 2 both > report pin range [A; B], that they both actually share the same > underlying EEC? Is there some sort of coordination among the drivers, > such that each pin in the system has a unique ID? For now we don't, as we don't have EEC subsystem. But that can be solved by a config file temporarily. > Further, how do I actually know the mapping from ports to pins? E.g. as > a user, I might know my master is behind swp1. How do I know what pins > correspond to that port? As a user-space tool author, how do I help > users to do something like "eec set clock eec0 track swp1"? That's why driver needs to be smart there and return indexes properly. > Additionally, how would things like external GPSs or 1pps be modeled? I > guess the driver would know about such interface, and would expose it as > a "pin". When the GPS signal locks, the driver starts reporting the pin > in the RCLK set. Then it is possible to set up tracking of that pin. That won't be enabled before we get the DPLL subsystem ready. > It seems to me it would be easier to understand, and to write user-space > tools and drivers for, a model that has EEC as an explicit first-class > object. That's where the EEC state naturally belongs, that's where the > pin range naturally belongs. Netdevs should have a reference to EEC and > pins, not present this information as if they own it. A first-class EEC > would also allow to later figure out how to hook up PHC and EEC. We have the userspace tool, but can?t upstream it until we define kernel Interfaces. It's paragraph 22 :( Regards Maciek > > + > > +RTM_GETEECSTATE > > +---------------- > > +Reads the state of the EEC or equivalent physical clock synchronizer. > > +This message returns the following attributes: > > +IFLA_EEC_STATE - current state of the EEC or equivalent clock generator. > > + The states returned in this attribute are aligned to the > > + ITU-T G.781 and are: > > + IF_EEC_STATE_INVALID - state is not valid > > + IF_EEC_STATE_FREERUN - clock is free-running > > + IF_EEC_STATE_LOCKED - clock is locked to the reference, > > + but the holdover memory is not valid > > + IF_EEC_STATE_LOCKED_HO_ACQ - clock is locked to the > reference > > + and holdover memory is valid > > + IF_EEC_STATE_HOLDOVER - clock is in holdover mode > > +State is read from the netdev calling the: > > +int (*ndo_get_eec_state)(struct net_device *dev, enum if_eec_state > *state, > > + u32 *src_idx, struct netlink_ext_ack *extack); > > + > > +IFLA_EEC_SRC_IDX - optional attribute returning the index of the > reference that > > + is used for the current IFLA_EEC_STATE, i.e., the index of > > + the pin that the EEC is locked to. > > + > > +Will be returned only if the ndo_get_eec_src is implemented.