From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.7272.1672981778356266369 for ; Thu, 05 Jan 2023 21:09:38 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Yq3I/IqF; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: jiaxin.wu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672981778; x=1704517778; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=h3Rom022VUSuvxi7gkBs2ZydJkciG65wp/0eKmGBybs=; b=Yq3I/IqFteoPPj9iO1bT0EER/Wpa2ZAZ3pWfyrWtuRIllte21LMxMDMb ogCLDBdhU0MLRAWndXO7xDj1S+suFdYg+SB1LLtUtVixYGNgLlVxFbxRj qi6Tg+/30PtFD2S2Xef1yhVZ3mrCFyfZjbux8srY2BHNuVZWNiBQiGh1L 8quNhV26d435flMpp7TuDWukVrMVMDJQbkqEhMIQAVclI16uws8BFcM8A q1nYFGHxN0Ra/ri0jh8yEh+vPusVz2sK8clk8uyfea+sbhc0aca0lgBeC iepupmiQDjNux/d0koQN64LrHm771oY3nbqgFEVD5aFsEApUp2Dohhy2H Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10581"; a="320110599" X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="320110599" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jan 2023 21:09:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10581"; a="724327666" X-IronPort-AV: E=Sophos;i="5.96,304,1665471600"; d="scan'208";a="724327666" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga004.fm.intel.com with ESMTP; 05 Jan 2023 21:09:37 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 5 Jan 2023 21:09:37 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 5 Jan 2023 21:09:36 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Thu, 5 Jan 2023 21:09:36 -0800 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.43) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Thu, 5 Jan 2023 21:09:36 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bgtYBGqSa+qFVvNshXM+Vj7HNXwmQp07J8uOeJ5c93JyLXbLmtByVmWVXudBr3eSiUvmRIKjqi3NPoxKjSaRq4aJt4WkTOLdzVyzIV7Eh7M1E8/U6PCLFhv09jgBjYVLfeDwU+CuMeeBmWbU+ohAoCjohBPijfCLDg0iFAwlHAG4QfapZ4CPD3uSCnfAWNM91HaL3ZdyQHl/xZSEuO2t/2l9/csmqhJcZwxIHlTqKoNc1Qq8Mu92P4OtnHJ0L726km6l7p9U8FSHWTxrzoWcrUFk8hW4N+gE0mVHcYHFHXxh9aMTYgES70hfjCDgVfXzBgdy5kzy0HTZYcKji0WCFQ== 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=wserJtFybpB8fG0et5Z93saeFfuGgOFpApiBRk0Jz3I=; b=nLbe+ExXXBbcVdDGUV10Ci2koPulV1JE8iqnqFr+rnxJkxTSRx3fpQiHwefU7WvaXIRJ8AIB0WN8CrSLBwPhEwRkHNdwsT1djcwWo1TP5c7/6nwRzB1myecRstpXvNEDuA+axpky3gjPIdPD6nidQ2uvC91XaE1NvFlGIClzj//sRFBJTXdDUS3+r3D+C3pZpReRPjFQvCmJ8plOV1EcQW1S6mGdn24mO0JvUdUBN5BShZs+pRy7OYP45e59B2CFXt3/3hhZAQkX1T7oHkD/B1n22O9MS5KfcS6zMiB4oW7vlpi0UZ45gK4NInEGWMKVL5ydHVMIvRaraR4nPoYccA== 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 Received: from MN0PR11MB6158.namprd11.prod.outlook.com (2603:10b6:208:3ca::18) by BL1PR11MB5335.namprd11.prod.outlook.com (2603:10b6:208:31b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Fri, 6 Jan 2023 05:09:28 +0000 Received: from MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::8997:923d:c193:8e31]) by MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::8997:923d:c193:8e31%2]) with mapi id 15.20.5944.019; Fri, 6 Jan 2023 05:09:28 +0000 From: "Wu, Jiaxin" To: "Clark-williams, Zachary" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Zachary Clark-Williams , Maciej Rabeda , "Otcheretianski, Andrei" , "Zeng, Star" Subject: Re: [PATCH] NetworkPkg: Add WiFi profile sync protocol support Thread-Topic: [PATCH] NetworkPkg: Add WiFi profile sync protocol support Thread-Index: AQHY+FSjBtXcv29bnk6H0XghbDpcwq6RF9bA Date: Fri, 6 Jan 2023 05:09:28 +0000 Message-ID: References: <20221114181152.2540-1-zachary.clark-williams@intel.com> In-Reply-To: <20221114181152.2540-1-zachary.clark-williams@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR11MB6158:EE_|BL1PR11MB5335:EE_ x-ms-office365-filtering-correlation-id: 2907876a-138f-43ff-b322-08daefa43002 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uPwg4lF0z86PaqehryQWa4LTCAZEoPjFt6udGfxYW8KhFx910gXjyutr6Hy2r1+EOFPG6NnbI6lMLxW1GO/I1koaq0eu/IiCBD0Zg9FJpgRuIl9M+p1IAjrr6sj68DjP/XeS3LCeoZHS5xHOB3t0lIylEF7+suTb8dlOMxB0NDG3+/08yRFer8iNN5J4G8SjUAcyRZaA2vmsln5SuwMhKxz2ErGcUICKx5NcJ82O+1bEdEeK4C552Vi4OtmqQ6SZXVXbgkiXodL9mJsRNZJo16DrZNHmmdlDpD/tPtHAybHcwLE4t9ijkLyY/N13byMDbm9GEFXhV8IkqoinwaQ1GJ6zF8r9ZVGYesbegz+Kfb1LzUKCEbI0onjCojw3QyF/c9HQC3GPCWo1Ey5quw4lxj8At82HSnpI2uq2jaXHz1FLue9lOfyA5FoiHw/8dWe9S0UHEtU6NPO9vL72YZZwH5yxLjEEc650cPD7kgfmFOktLR1RX2vfOLaO6mITTp7gl9QiNCoF8TIWzrPW0L8tSatAp5DkXLPOT5CJvwHKOU+9PRD21ZYxrwAXP8KRhbSM9jFRFaITQ4qBOyYcBrJj1bD/DLpHAC2JdjVEbJytcBrdATVtmEhOSXYuORTmqU9Lab3L9exyjS9L4cYnrB54tgj77HT3idYqjB+ejz0j2Z5HMlNcfas/WmSloWYCGseISRV00DDtdfxUw++GGcFIU5EEEj7XjRROq3y6Qun34W0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR11MB6158.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(6029001)(136003)(396003)(346002)(39860400002)(366004)(376002)(451199015)(66946007)(6636002)(316002)(8936002)(83380400001)(5660300002)(110136005)(54906003)(52536014)(66446008)(4326008)(8676002)(41300700001)(38100700002)(82960400001)(38070700005)(2906002)(64756008)(66476007)(86362001)(76116006)(122000001)(33656002)(66556008)(55016003)(478600001)(6506007)(7696005)(71200400001)(186003)(26005)(9686003)(44824005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?YKW8HVUDt/pkpFDaZp18aspXXwS8F3dlJ11EwjR/GAVwE+55Aa3K8lzPxdbr?= =?us-ascii?Q?XKfD3M/9yVSREkBWdb9YTMu7eAfi9BWnWicitCqDtXxNA0nQudZCrgPW8vyJ?= =?us-ascii?Q?gIth5fmEbkolKPbbvhQhtq6OXo3CYi/JMI94r7Qcq7vYpTtrMrs9zz50ZEWz?= =?us-ascii?Q?n/fCcP0QcgIMIRACg8sBl3cJNbBxiPo24aQjDCnzxVwjFTfYN0WR4qnAV9Np?= =?us-ascii?Q?DINJ539Y1l4AZBlHTrf8cMGjv/fBs7sBCSd+tfXkxqJmmPU+eUV/dJOKSwTG?= =?us-ascii?Q?eYh6CrKLvGhF/9nfHB+IOfgrdXpGr39vLU4cQoLxv9elhpm4lQ+b5Y3oVT1y?= =?us-ascii?Q?PbIEq5HzjUsEdNAhVg5QTv1KxwLX5Sl4xFvXILVVcEqc3vU+kpDYWPFf9Wk/?= =?us-ascii?Q?jABqCkdb5Ii/qDmaWPlsxo5XZEK7XvFlTv7NVPGrMsP9NOluIX0uxSpnmHQA?= =?us-ascii?Q?30O8Lo/RDOq80Nisu9Fs1plTdvzC2BHxgvnzVDiSsi6khVLJtnf2EApJJS+/?= =?us-ascii?Q?d4pySUcSsLjg2wSYQv1fTh4A2xUvPC4SSd5O/hE55PCbfXM4As4Eix9Nf7M4?= =?us-ascii?Q?lEywe+/7aLpifv03gXBc5Ecz6L0X6CFBUkNDi4OfFuq5CmVDtAZNlUObyEYS?= =?us-ascii?Q?3vCGicEPCXEX3i20j5HPtsT5Zp/e4JX4dlqFQOvBVc1EJc+tT+3+7KJeWtU7?= =?us-ascii?Q?sCFtTdOuvSZFiqimaZYfgUSN1wvFeZu3omHV8xMn1pzVvN9zM2Iw1ywpdAbE?= =?us-ascii?Q?1UW7lVp2yrwKRx3htO3csf1U3FKiSYAc3dQpvJjZ2Vx6g0XasM1z0L8BTzuY?= =?us-ascii?Q?VbTpkVgSg2kh6i71HQy9SHxvEMTnYAQfICr/Tk15RspOIZOIupck2rTROqJY?= =?us-ascii?Q?vf20PlNyxjOn9mT+fk1UoPqXoymNxOlAt16787N68eJZWJQAXAlNj5SpGKOq?= =?us-ascii?Q?g/JThGUzNE24tyuUFrZOggFUxhLCjWlGjkJgy+EjYfRNda0GNI6ELJB+lVMX?= =?us-ascii?Q?seHRXUUGgIU07SFn2pX1MRuFtT7O8vQLR13luoCU19Htxz+yllTy46Mr+bwU?= =?us-ascii?Q?EuOPMMFZlMd6i1W4Xig3XrZCBqijy7qCK7n6RgNLKfZjJinXvUN2Wywnv73h?= =?us-ascii?Q?5xcZC98SIkJR5tNFr9GUqnPxVzUmXJE7PJO3rdsAC2x6GtqwdIv2jO/QgBIN?= =?us-ascii?Q?Cl1tkMpHkXdVslHb2hfp12RIUUXbQeMjHKEbAw3wAbW5M2K6pZLYhunqtl+e?= =?us-ascii?Q?mNpsyxcmWc4/S1TOpb4yipJ+uF4oypG1MgA01npzDWo3oVlV1Mh2cuxChaxm?= =?us-ascii?Q?ntNfBJL9cr6Q/Xkh8jagCHei9Yidec/ByrtZCJ8A7kVengXL1Jlruuec7Cbg?= =?us-ascii?Q?3MBRXLCSOrlbXctdq2z6AMtLraB1Cc0tmRnf7sD0N0td+xafA5dvPZ6HtIg0?= =?us-ascii?Q?FGt8zmJVb+97p4tdbK8AMsetWwcq//FUULaL62uFmCVkvQH/q7Mano7DwQYv?= =?us-ascii?Q?VkLyEg+fDoHmaw7JqxCGJG4rcT41G76WI53QEWLEhPesjBitNVtV3PIS7wOk?= =?us-ascii?Q?FemF7RjSdLpENyDbHtFpyvETiO0qc1lapTnd4s1q?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6158.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2907876a-138f-43ff-b322-08daefa43002 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jan 2023 05:09:28.4879 (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: PmpUGy28tZ5MQAoOJh5/pK457OfumD41xG246lU1piwPlBjMT7PJexhiBQPutCgX+5XUTXHydSY0ClY/Vutyag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR11MB5335 Return-Path: jiaxin.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Zachary, Insert all my comments as below. Besides: where defined this protocol (EFI_WIFI_PROFILE_SYNC_PROTOCOL)? I di= dn't find in the UEFI spec, in such a case, could we named it as EDKII_WIFI= _PROFILE_SYNC_PROTOCOL? please add more description about the protocol usag= e. Thanks, Jiaxin > +/** > + Used by the WiFi connection manager to get the WiFi profile that AMT > shared > + and was stored in WiFi profile protocol. Aligns the AMT WiFi profile d= ata to > + the WiFi connection manager profile structure fo connection use. > + > + @param[in, out] WcmProfile WiFi Connection Manager profile > structure > + @param[in, out] MacAddress MAC address from AMT saved to NiC > MAC address > + > + @retval EFI_SUCCESS Stored WiFi profile converted and re= turned > succefully > + @retval EFI_UNSUPPORTED Profile protocol sharing not support= ed or > enabled > + @retval EFI_NOT_FOUND No profiles to returned > + @retval Others Error Occurred > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *WIFI_PROFILE_GET)( > + IN OUT WIFI_MGR_NETWORK_PROFILE *Profile, > + IN OUT EFI_80211_MAC_ADDRESS MacAddress > + ); Does it mean the returned Profile is only for the returned MacAddress? Does= it must 1:1 mapping?? Think more, Does AMT support maintain multiple mappings? Image we have mult= iple network socket, how AMT handle such case? =20 > + > +/** > + Saves the WiFi connection status recieved by the WiFiConnectionManager > when > + in a KVM OR One Click Recovery WLAN recovery flow. Input as > + EFI_80211_CONNECT_NETWORK_RESULT_CODE then converted and > stored as EFI_STATUS type. > + Why need stored as EFI_STATUS type since we have defined the EFI_80211_CONN= ECT_NETWORK_RESULT_CODE??? > + @param[in] ConnectionStatus WiFi connection attempt results > +**/ > +typedef > +VOID > +(EFIAPI *WIFI_SET_CONNECT_STATE)( > + IN EFI_80211_CONNECT_NETWORK_RESULT_CODE ConnectionStatus > + ); > + > +/** > + Retrieves the stored WiFi connection status when in either KVM OR One > Click > + Recovery WLAN recovery flow. > + > + @retval EFI_SUCCESS WiFi connection completed succesfull= y > + @retval Others Connection failure occurred > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *WIFI_GET_CONNECT_STATE)( > + VOID > + ); What's the output? Only EFI_STATUS? why not return the EFI_80211_CONNECT_NE= TWORK_RESULT_CODE? We should not mix the EFI_80211_CONNECT_NETWORK_RESULT_C= ODE & EFI_STATUS. > + > +// > +// WiFi Profile Sync Protocol structure. > +// > +typedef struct { > + UINT32 Revision; > + WIFI_SET_CONNECT_STATE WifiProfileSyncSetConnectState; > + WIFI_GET_CONNECT_STATE WifiProfileSyncGetConnectState; > + WIFI_PROFILE_GET WifiProfileSyncGetProfile; > +} EFI_WIFI_PROFILE_SYNC_PROTOCOL; > + Could we remove the prefix -- WifiProfileSync? > Tests to see if this driver supports a given controller. If a child de= vice is > provided, > it further tests to see if this driver supports creating a handle for = the > specified child device. > @@ -167,8 +172,10 @@ WifiMgrDxeDriverBindingStart ( > EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp; > EFI_SUPPLICANT_PROTOCOL *Supplicant; > EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig; > + EFI_WIFI_PROFILE_SYNC_PROTOCOL *WiFiProfileSyncProtocol; >=20 > - Nic =3D NULL; > + mWifiConnectionCount =3D 0; > + Nic =3D NULL; >=20 > // > // Open Protocols > @@ -236,47 +243,73 @@ WifiMgrDxeDriverBindingStart ( > InitializeListHead (&Nic->ProfileList); >=20 > // > - // Record the MAC address of the incoming NIC. > + // WiFi profile sync protocol installation check for OS recovery flow. > // > - Status =3D NetLibGetMacAddress ( > - ControllerHandle, > - (EFI_MAC_ADDRESS *)&Nic->MacAddress, > - &AddressSize > - ); > - if (EFI_ERROR (Status)) { > - goto ERROR2; > - } > - > - // > - // Create and start the timer for the status check > - // > - Status =3D gBS->CreateEvent ( > - EVT_NOTIFY_SIGNAL | EVT_TIMER, > - TPL_CALLBACK, > - WifiMgrOnTimerTick, > - Nic, > - &Nic->TickTimer > + Status =3D gBS->LocateProtocol ( > + &gEfiWiFiProfileSyncProtocolGuid, > + NULL, > + (VOID **)&WiFiProfileSyncProtocol > ); > - if (EFI_ERROR (Status)) { > - goto ERROR2; > - } > + if (!EFI_ERROR (Status)) { > + Nic->ConnectPendingNetwork =3D (WIFI_MGR_NETWORK_PROFILE > *)AllocateZeroPool (sizeof (WIFI_MGR_NETWORK_PROFILE)); > + if (Nic->ConnectPendingNetwork =3D=3D NULL) { > + Status =3D EFI_OUT_OF_RESOURCES; > + goto ERROR1; > + } >=20 > - Status =3D gBS->SetTimer (Nic->TickTimer, TimerPeriodic, > EFI_TIMER_PERIOD_MILLISECONDS (500)); > - if (EFI_ERROR (Status)) { > - goto ERROR3; > - } > + WiFiProfileSyncProtocol->WifiProfileSyncGetProfile (Nic- > >ConnectPendingNetwork, Nic->MacAddress); This is incorrect! With this change, you might map the profile to the wrong= ControllerHandle with incorrect Nic->MacAddress since this is called in th= e driver binging start, each NIC device will map to the same the MacAddress= from the WifiProfileSync protocol! > + if (Nic->ConnectPendingNetwork !=3D NULL) { > + Status =3D WifiMgrConnectToNetwork (Nic, Nic- > >ConnectPendingNetwork); Why we need do this? because we have defined the timer for the connection. = See the WifiMgrOnTimerTick(). > + if (EFI_ERROR (Status)) { > + WiFiProfileSyncProtocol->WifiProfileSyncSetConnectState (Status)= ; > + } > + } else { > + goto ERROR1; > + } Could we refine the if... else logic? For example, If (Error) { goto ERROR1; } Then do the right things. Existing patch has too much if else condition. > + } else { > + // > + // Record the MAC address of the incoming NIC. > + // > } >=20 > - AsciiPassword =3D AllocateZeroPool ((StrLen (Profile->Password) + 1) *= sizeof > (UINT8)); > + if (StrLen (Profile->Password) >=3D PASSWORD_STORAGE_SIZE) { > + ASSERT (EFI_INVALID_PARAMETER); > + return EFI_INVALID_PARAMETER; > + } > + > + AsciiPassword =3D AllocateZeroPool ((StrLen (Profile->Password) + 1) * > sizeof (CHAR8)); > if (AsciiPassword =3D=3D NULL) { > return EFI_OUT_OF_RESOURCES; > } >=20 > - UnicodeStrToAsciiStrS (Profile->Password, (CHAR8 *)AsciiPassword, > PASSWORD_STORAGE_SIZE); > - Status =3D Supplicant->SetData ( > - Supplicant, > - EfiSupplicant80211PskPassword, > - AsciiPassword, > - (StrLen (Profile->Password) + 1) * sizeof (UINT= 8) > - ); > + Status =3D UnicodeStrToAsciiStrS (Profile->Password, (CHAR8 > *)AsciiPassword, (StrLen (Profile->Password) + 1)); > + if (!EFI_ERROR (Status)) { > + Status =3D Supplicant->SetData ( > + Supplicant, > + EfiSupplicant80211PskPassword, > + AsciiPassword, > + (StrLen (Profile->Password) + 1) * sizeof (CH= AR8) > + ); > + } > + > ZeroMem (AsciiPassword, AsciiStrLen ((CHAR8 *)AsciiPassword) + 1); > FreePool (AsciiPassword); >=20 Looks above change is not related to the changes! could we separate to anot= her patch? > + > +**/ > +EFI_STATUS > + ConnectionRetry ( > + IN EFI_WIFI_PROFILE_SYNC_PROTOCOL *WiFiProfileSyncProtocol > + ) > +{ Why need ConnectionRetry?