From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id B0E7C19F5 for ; Fri, 26 Dec 2014 08:28:18 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP; 25 Dec 2014 23:26:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,646,1413270000"; d="scan'208,217";a="653351424" Received: from pgsmsx106.gar.corp.intel.com ([10.221.44.98]) by fmsmga002.fm.intel.com with ESMTP; 25 Dec 2014 23:28:15 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by PGSMSX106.gar.corp.intel.com (10.221.44.98) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 26 Dec 2014 15:26:29 +0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.216]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.67]) with mapi id 14.03.0195.001; Fri, 26 Dec 2014 15:26:28 +0800 From: "Ouyang, Changchun" To: Vladislav Zolotarov Thread-Topic: [dpdk-dev] [PATCH v3 5/6] ixgbe: Config VF RSS Thread-Index: AQHQHznC9fbr7m6mLEynsGIYrmMT5JyeB1MAgAGQNdCAAC7zAIABUPNQ///ULQCAAIqBQA== Date: Fri, 26 Dec 2014 07:26:27 +0000 Message-ID: References: <1419389808-9559-1-git-send-email-changchun.ouyang@intel.com> <1419398584-19520-1-git-send-email-changchun.ouyang@intel.com> <1419398584-19520-6-git-send-email-changchun.ouyang@intel.com> <549A97F6.30901@cloudius-systems.com> <549C0F10.8050402@cloudius-systems.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v3 5/6] ixgbe: Config VF RSS X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Dec 2014 07:28:19 -0000 SGkgVmxhZGlzbGF2LA0KDQpGcm9tOiBWbGFkaXNsYXYgWm9sb3Rhcm92IFttYWlsdG86dmxhZHpA Y2xvdWRpdXMtc3lzdGVtcy5jb21dDQpTZW50OiBGcmlkYXksIERlY2VtYmVyIDI2LCAyMDE0IDI6 NDkgUE0NClRvOiBPdXlhbmcsIENoYW5nY2h1bg0KQ2M6IGRldkBkcGRrLm9yZw0KU3ViamVjdDog UkU6IFtkcGRrLWRldl0gW1BBVENIIHYzIDUvNl0gaXhnYmU6IENvbmZpZyBWRiBSU1MNCg0KDQpP biBEZWMgMjYsIDIwMTQgMzo1MiBBTSwgIk91eWFuZywgQ2hhbmdjaHVuIiA8Y2hhbmdjaHVuLm91 eWFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW5nY2h1bi5vdXlhbmdAaW50ZWwuY29tPj4gd3JvdGU6 DQo+DQo+DQo+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBWbGFk IFpvbG90YXJvdiBbbWFpbHRvOnZsYWR6QGNsb3VkaXVzLXN5c3RlbXMuY29tPG1haWx0bzp2bGFk ekBjbG91ZGl1cy1zeXN0ZW1zLmNvbT5dDQo+ID4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDI1 LCAyMDE0IDk6MjAgUE0NCj4gPiBUbzogT3V5YW5nLCBDaGFuZ2NodW47IGRldkBkcGRrLm9yZzxt YWlsdG86ZGV2QGRwZGsub3JnPg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2 MyA1LzZdIGl4Z2JlOiBDb25maWcgVkYgUlNTDQo+ID4NCj4gPg0KPiA+IE9uIDEyLzI1LzE0IDA0 OjQzLCBPdXlhbmcsIENoYW5nY2h1biB3cm90ZToNCj4gPiA+IEhpLA0KPiA+ID4gU29ycnkgbWlz cyBzb21lIGNvbW1lbnRzLCBzbyBjb250aW51ZSBteSByZXNwb25zZSBiZWxvdywNCj4gPiA+DQo+ ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+PiBGcm9tOiBWbGFkIFpvbG90 YXJvdiBbbWFpbHRvOnZsYWR6QGNsb3VkaXVzLXN5c3RlbXMuY29tPG1haWx0bzp2bGFkekBjbG91 ZGl1cy1zeXN0ZW1zLmNvbT5dDQo+ID4gPj4gU2VudDogV2VkbmVzZGF5LCBEZWNlbWJlciAyNCwg MjAxNCA2OjQwIFBNDQo+ID4gPj4gVG86IE91eWFuZywgQ2hhbmdjaHVuOyBkZXZAZHBkay5vcmc8 bWFpbHRvOmRldkBkcGRrLm9yZz4NCj4gPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFU Q0ggdjMgNS82XSBpeGdiZTogQ29uZmlnIFZGIFJTUw0KPiA+ID4+DQo+ID4gPj4NCj4gPiA+PiBP biAxMi8yNC8xNCAwNzoyMywgT3V5YW5nIENoYW5nY2h1biB3cm90ZToNCj4gPiA+Pj4gSXQgbmVl ZHMgY29uZmlnIFJTUyBhbmQgSVhHQkVfTVJRQyBhbmQgSVhHQkVfVkZQU1JUWVBFIHRvIGVuYWJs ZQ0KPiA+IFZGDQo+ID4gPj4gUlNTLg0KPiA+ID4+PiBUaGUgcHNydHlwZSB3aWxsIGRldGVybWlu ZSBob3cgbWFueSBxdWV1ZXMgdGhlIHJlY2VpdmVkIHBhY2tldHMgd2lsbA0KPiA+ID4+PiBkaXN0 cmlidXRlIHRvLCBhbmQgdGhlIHZhbHVlIG9mIHBzcnR5cGUgc2hvdWxkIGRlcGVuZHMgb24gYm90 aCBmYWNldDoNCj4gPiA+Pj4gbWF4IFZGIHJ4cSBudW1iZXIgd2hpY2ggaGFzIGJlZW4gbmVnb3Rp YXRlZCB3aXRoIFBGLCBhbmQgdGhlIG51bWJlcg0KPiA+ID4+PiBvZg0KPiA+ID4+IHJ4cSBzcGVj aWZpZWQgaW4gY29uZmlnIG9uIGd1ZXN0Lg0KPiA+ID4+PiBTaWduZWQtb2ZmLWJ5OiBDaGFuZ2No dW4gT3V5YW5nIDxjaGFuZ2NodW4ub3V5YW5nQGludGVsLmNvbTxtYWlsdG86Y2hhbmdjaHVuLm91 eWFuZ0BpbnRlbC5jb20+Pg0KPiA+ID4+PiAtLS0NCj4gPiA+Pj4gICAgbGliL2xpYnJ0ZV9wbWRf aXhnYmUvaXhnYmVfcGYuYyAgIHwgMTUgKysrKysrKw0KPiA+ID4+PiAgICBsaWIvbGlicnRlX3Bt ZF9peGdiZS9peGdiZV9yeHR4LmMgfCA5Mg0KPiA+ID4+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQ0KPiA+ID4+PiAgICAyIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlv bnMoKyksIDEwIGRlbGV0aW9ucygtKQ0KPiA+ID4+Pg0KPiA+ID4+PiBkaWZmIC0tZ2l0IGEvbGli L2xpYnJ0ZV9wbWRfaXhnYmUvaXhnYmVfcGYuYw0KPiA+ID4+PiBiL2xpYi9saWJydGVfcG1kX2l4 Z2JlL2l4Z2JlX3BmLmMgaW5kZXggY2JiMDE0NS4uOWM5ZGFkOCAxMDA2NDQNCj4gPiA+Pj4gLS0t IGEvbGliL2xpYnJ0ZV9wbWRfaXhnYmUvaXhnYmVfcGYuYw0KPiA+ID4+PiArKysgYi9saWIvbGli cnRlX3BtZF9peGdiZS9peGdiZV9wZi5jDQo+ID4gPj4+IEBAIC0xODcsNiArMTg3LDIxIEBAIGlu dCBpeGdiZV9wZl9ob3N0X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiA+PiAqZXRo X2RldikNCj4gPiA+Pj4gICAgICAgICAgIElYR0JFX1dSSVRFX1JFRyhodywgSVhHQkVfTVBTQVJf TE8oaHctDQo+ID4gbWFjLm51bV9yYXJfZW50cmllcyksIDApOw0KPiA+ID4+PiAgICAgICAgICAg SVhHQkVfV1JJVEVfUkVHKGh3LCBJWEdCRV9NUFNBUl9ISShody0NCj4gPiBtYWMubnVtX3Jhcl9l bnRyaWVzKSwgMCk7DQo+ID4gPj4+DQo+ID4gPj4+ICsgLyoNCj4gPiA+Pj4gKyAgKiBWRiBSU1Mg Y2FuIHN1cHBvcnQgYXQgbW9zdCA0IHF1ZXVlcyBmb3IgZWFjaCBWRiwgZXZlbiBpZg0KPiA+ID4+ PiArICAqIDggcXVldWVzIGFyZSBhdmFpbGFibGUgZm9yIGVhY2ggVkYsIGl0IG5lZWQgcmVmaW5l IHRvIDQNCj4gPiA+Pj4gKyAgKiBxdWV1ZXMgaGVyZSBkdWUgdG8gdGhpcyBsaW1pdGF0aW9uLCBv dGhlcndpc2Ugbm8gcXVldWUNCj4gPiA+Pj4gKyAgKiB3aWxsIHJlY2VpdmUgYW55IHBhY2tldCBl dmVuIFJTUyBpcyBlbmFibGVkLg0KPiA+ID4+IEFjY29yZGluZyB0byBUYWJsZSA3LTMgaW4gdGhl IDgyNTk5IHNwZWMgUlNTIGlzIG5vdCBhdmFpbGFibGUgd2hlbg0KPiA+ID4+IHBvcnQgaXMgY29u ZmlndXJlZCB0byBoYXZlIDggcXVldWVzIHBlciBwb29sLiBUaGlzIG1lYW5zIHRoYXQgaWYgdQ0K PiA+ID4+IHNlZSB0aGlzIGNvbmZpZ3VyYXRpb24gdSBtYXkgaW1tZWRpYXRlbHkgZGlzYWJsZSBS U1MgZmxvdyBpbiB5b3VyIGNvZGUuDQo+ID4gPj4NCj4gPiA+Pj4gKyAgKi8NCj4gPiA+Pj4gKyBp ZiAoZXRoX2Rldi0+ZGF0YS0+ZGV2X2NvbmYucnhtb2RlLm1xX21vZGUgPT0NCj4gPiA+PiBFVEhf TVFfUlhfVk1EUV9SU1MpIHsNCj4gPiA+Pj4gKyAgICAgICAgIGlmIChSVEVfRVRIX0RFVl9TUklP VihldGhfZGV2KS5uYl9xX3Blcl9wb29sID09IDgpIHsNCj4gPiA+Pj4gKyAgICAgICAgICAgICAg ICAgUlRFX0VUSF9ERVZfU1JJT1YoZXRoX2RldikuYWN0aXZlID0NCj4gPiA+PiBFVEhfMzJfUE9P TFM7DQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgIFJURV9FVEhfREVWX1NSSU9WKGV0aF9kZXYp Lm5iX3FfcGVyX3Bvb2wgPSA0Ow0KPiA+ID4+PiArICAgICAgICAgICAgICAgICBSVEVfRVRIX0RF Vl9TUklPVihldGhfZGV2KS5kZWZfcG9vbF9xX2lkeCA9DQo+ID4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgZGV2X251bV92ZihldGhfZGV2KSAqIDQ7DQo+ID4gPj4gQWNjb3JkaW5nIHRv IDgyNTk5IHNwZWMgdSBjYW4ndCBkbyB0aGF0IHNpbmNlIFJTUyBpcyBub3QgYWxsb3dlZCB3aGVu DQo+ID4gPj4gcG9ydCBpcyBjb25maWd1cmVkIHRvIGhhdmUgOCBmdW5jdGlvbiBwZXItVkYuIEhh dmUgdSB2ZXJpZmllZCB0aGF0DQo+ID4gPj4gdGhpcyB3b3Jrcz8gSWYgeWVzLCB0aGVuIHNwZWMg c2hvdWxkIGJlIHVwZGF0ZWQuDQo+ID4gPj4NCj4gPiA+Pj4gKyAgICAgICAgIH0NCj4gPiA+Pj4g KyB9DQo+ID4gPj4+ICsNCj4gPiA+Pj4gICAgICAgICAgIC8qIHNldCBWTURxIG1hcCB0byBkZWZh dWx0IFBGIHBvb2wgKi8NCj4gPiA+Pj4gICAgICAgICAgIGh3LT5tYWMub3BzLnNldF92bWRxKGh3 LCAwLA0KPiA+ID4+PiBSVEVfRVRIX0RFVl9TUklPVihldGhfZGV2KS5kZWZfdm1kcV9pZHgpOw0K PiA+ID4+Pg0KPiA+ID4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9wbWRfaXhnYmUvaXhnYmVf cnh0eC5jDQo+ID4gPj4+IGIvbGliL2xpYnJ0ZV9wbWRfaXhnYmUvaXhnYmVfcnh0eC5jDQo+ID4g Pj4+IGluZGV4IGY2OWFiZGEuLmE3YzE3YTQgMTAwNjQ0DQo+ID4gPj4+IC0tLSBhL2xpYi9saWJy dGVfcG1kX2l4Z2JlL2l4Z2JlX3J4dHguYw0KPiA+ID4+PiArKysgYi9saWIvbGlicnRlX3BtZF9p eGdiZS9peGdiZV9yeHR4LmMNCj4gPiA+Pj4gQEAgLTMzMjcsNiArMzMyNywzOSBAQCBpeGdiZV9h bGxvY19yeF9xdWV1ZV9tYnVmcyhzdHJ1Y3QNCj4gPiA+PiBpZ2JfcnhfcXVldWUgKnJ4cSkNCj4g PiA+Pj4gICAgfQ0KPiA+ID4+Pg0KPiA+ID4+PiAgICBzdGF0aWMgaW50DQo+ID4gPj4+ICtpeGdi ZV9jb25maWdfdmZfcnNzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KSB7DQo+ID4gPj4+ICsgc3Ry dWN0IGl4Z2JlX2h3ICpodzsNCj4gPiA+Pj4gKyB1aW50MzJfdCBtcnFjOw0KPiA+ID4+PiArDQo+ ID4gPj4+ICsgaXhnYmVfcnNzX2NvbmZpZ3VyZShkZXYpOw0KPiA+ID4+PiArDQo+ID4gPj4+ICsg aHcgPSBJWEdCRV9ERVZfUFJJVkFURV9UT19IVyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsNCj4g PiA+Pj4gKw0KPiA+ID4+PiArIC8qIE1SUUM6IGVuYWJsZSBWRiBSU1MgKi8NCj4gPiA+Pj4gKyBt cnFjID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX01SUUMpOw0KPiA+ID4+PiArIG1ycWMgJj0g fklYR0JFX01SUUNfTVJRRV9NQVNLOw0KPiA+ID4+PiArIHN3aXRjaCAoUlRFX0VUSF9ERVZfU1JJ T1YoZGV2KS5hY3RpdmUpIHsNCj4gPiA+Pj4gKyBjYXNlIEVUSF82NF9QT09MUzoNCj4gPiA+Pj4g KyAgICAgICAgIG1ycWMgfD0gSVhHQkVfTVJRQ19WTURRUlNTNjRFTjsNCj4gPiA+Pj4gKyAgICAg ICAgIGJyZWFrOw0KPiA+ID4+PiArDQo+ID4gPj4+ICsgY2FzZSBFVEhfMzJfUE9PTFM6DQo+ID4g Pj4+ICsgY2FzZSBFVEhfMTZfUE9PTFM6DQo+ID4gPj4+ICsgICAgICAgICBtcnFjIHw9IElYR0JF X01SUUNfVk1EUVJTUzMyRU47DQo+ID4gPj4gQWdhaW4sIHRoaXMgY29udHJhZGljdHMgd2l0aCB0 aGUgc3BlYy4NCj4gPiA+IFllcywgdGhlIHNwZWMgc2F5IHRoZSBodyBjYW4ndCBzdXBwb3J0IHZm IHJzcyBhdCBhbGwsIGJ1dCBleHBlcmltZW50IGZpbmQgdGhhdA0KPiA+IGNvdWxkIGJlIGRvbmUu DQo+ID4NCj4gPiBUaGUgc3BlYyBleHBsaWNpdGx5IHNheSB0aGF0IFZGIFJTUyAqaXMqIHN1cHBv cnRlZCBpbiBwYXJ0aWN1bGFyIGluIHRoZSB0YWJsZQ0KPiA+IG1lbnRpb25lZCBhYm92ZS4NCj4g QnV0IHRoZSBzcGVjKEphbnVhcnkgMjAxNCByZXZpc2lvbiAyLjkpIG9uIG15IGhhbmQgc2F5czog ImluIElPViBtb2RlLCBWTURxK1JTUyBtb2RlIGlzIG5vdCBhdmFpbGFibGUiICBpbiBub3RlIG9m IHNlY3Rpb24gNC42LjEwLjIuMQ0KDQo+QW5kIHN0aWxsIHRoZXJlIGlzIHRoZSB3aG9sZSBzZWN0 aW9uIGFib3V0IGNvbmZpZ3VyaW5nIHBhY2tldCBmaWx0ZXJpbmcgaW5jbHVkaW5nIFJ4IGluIHRo ZSBWRiBtb2RlIChpbmNsdWRpbmcgdGhlIHRhYmxlIGkndmUgcmVmZXJyZWQpIC4gSXQncyBxdWl0 ZSBjb25mdXNpbmcgaSBtdXN0IHNheS4uLg0KDQpDaGFuZ2NodW46IGRvIHlvdSBtaW5kIHRlbGwg bWUgd2hpY2ggdGFibGUgeW91IGFyZSByZWZlcnJpbmcgdG8sIEkgd2lsbCB0cnkgdG8gaGF2ZSBh IGxvb2sgYW5kIG1heSBzaGFyZSBteSB0aG91Z2h0IGlmIEkgY2FuLg0KDQo+ID4gV2hhdCB5b3Vy IGNvZGUgaXMgZG9pbmcgaXMgdGhhdCBpbiBjYXNlIG9mIDE2IFZGcyB1IHNldHVwIGEgMzIgcG9v bHMNCj4gPiBjb25maWd1cmF0aW9uIGFuZCB1c2Ugb25seSAxNiBvdXQgb2YgdGhlbS4NCj4gQnV0 IEkgZG9uJ3Qgc2VlIGFueSBiaWcgaXNzdWUgaGVyZSwgaW4gdGhpcyBjYXNlLCBlYWNoIHZmIENP VUxEIGhhdmUgOCBxdWV1ZXMsIGxpa2UgSSBzYWlkIGJlZm9yZSwgYnV0IHRoaXMgaXMgZXN0aW1h dGlvbiB2YWx1ZSwgYWN0dWFsbHkgb25seSA0IHF1ZXVlcw0KPiBBcmUgcmVhbGx5IGF2YWlsYWJs ZSBmb3Igb25lIHZmLCB5b3UgY2FuIHJlZmVyIHRvIHNwZWMgZm9yIHRoZSBjb3JyZWN0bmVzcyBo ZXJlLg0KDQo+Tm8gaXNzdWVzLCBpIGp1c3Qgd2FudGVkIHRvIGNsYXJpZnkgdGhhdCBpdCBzZWVt cyBsaWtlIHlvdSBhcmUgZG9pbmcgaXQgcXVpdGUgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLg0KDQo+ ID4NCj4gPiA+IFdlIGNhbiBmb2N1cyBvbiBkaXNjdXNzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBm aXJzdGx5Lg0KDQo+UmlnaHQuIFNvLCBhZnRlciB3ZSBjbGFyaWZpZWQgdGhhdCB0aGVyZSBpcyBu b3RoaW5nIHUgY2FuIGRvIGF0IHRoZSBtb21lbnQgYWJvdXQgdGhlIHJzcyBxdWVyeSBmbG93LCB0 aGVyZSBpcyAgb25lIG1vcmUgb3BlbiBpc3N1ZSBoZXJlLg0KPkluIGdlbmVyYWwgd2UgbmVlZCBh IHdheSB0byBrbm93IGhvdyBtYW55ICBxdWV1ZXMgZnJvbSB0aG9zZSB0aGF0IGFyZSBhdmFpbGFi bGUgbWF5IGJlIGNvbmZpZ3VyZWQgYXMgUlNTLiBXaGlsZSB0aGUgc2FtZSBpc3N1ZSBpcyBwcmVz ZW50IHdpdGggdGhlIFBGIGFzIHdlbGwgKGl0J3MgMTYgZm9yIDgyNTk5IGJ1dCBpdCBtYXkgYmUg YSBkaWZmZXJlbnQgbnVtYmVyIGZvciBhIGRpZmZlcmVudCBkZXZpY2UpIGZvciBWRiBpdCdzIG1v cmUgcHJvbm91bmNlZCBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSBQRiBjb25maWd1cmF0aW9uLg0K DQo+RG9uJ3QgdSB0aGluayBpdCB3b3VsZCBiZSBsb2dpY2FsIHRvIGFkZCBhIHNwZWNpZmljIGZp bGVkIGZvciBpdCBpbiB0aGUgZGV2X2luZm8gc3RydWN0Pw0KDQpDaGFuZ2NodW46IHlvdSBhcmUg cmlnaHQsIGFuZCB3ZSBoYXZlIGFscmVhZHkgdGhlIG1heF9yeF9xdWV1ZXMgaW4gZGV2X2luZm8s DQoNCndoaWxlIG5lZ290aWF0aW5nIGJldHdlZW4gcGYgYW5kIHZmLCB0aGUgbmVnb3RpYXRlZCBt YXggcnggcXVldWUgbnVtYmVyIHdpbGwgYmUgc2V0IGludG8gaHctPm1hYy5tYXhfcnhfcXVldWVz LA0KDQpBbmQgYWZ0ZXIgdGhhdCB3aGVuIHlvdSBjYWxsIGl4Z2JlX2Rldl9pbmZvX2dldCwgdGhh dCB2YWx1ZSB3aWxsIGJlIHNldCBpbnRvIGRldl9pbmZvLT5tYXhfcnhfcXVldWVzLg0KDQpUaGVu IHlvdSBjb3VsZCBnZXQgdGhlIG51bWJlciBvZiBxdWV1ZSBhbGwgcGFja2V0cyB3aWxsIGRpc3Ry aWJ1dGUgdG8gYnkgZ2V0dGluZyBkZXZfaW5mby0+bWF4X3J4X3F1ZXVlcy4NCg0KVGhhbmtzDQoN CkNoYW5nY2h1bg0K