Hi Fu,

as you said according to the UEFI spec "all the fields in Snp.Mode structure 
must be discovered during driver initialization".

I sent an email to USWG and the Network subteam to ask for clarification about 
this statement a few months ago. And no one has replied so far. So my guess is 
everyone is confused by the statement of the UEFI spec!
My next step is to send an ECR to clarify the statement in the UEFI spec and 
make 'Snp->Initialize()' responsability to initialize the structure...
If USWG prefer the driver binding start function be responsible for the 
initialization then I would like to see this clarification in the UEFI spec.

Thanks,
Olivier

________________________________________
From: Fu, Siyuan [siyuan...@intel.com]
Sent: 09 October 2013 02:53
To: Reece R. Pollack
Cc: edk2-devel@lists.sourceforge.net; patc...@linaro.org
Subject: Re: [edk2] [PATCH 02/10] MdeModulePkg//ArpDxe: Retrieved SnpMode only  
after configuring Snp

Hi, Pollack

I don't agree with the opinion that the Snp.Mode can't be accessed before 
Snp->Initialize() is called. According to UEFI spec, all the fields in Snp.Mode 
structure must be discovered during driver initialization, per my understanding 
the words "driver initialization" mean the driver binding start function, not 
Snp->Initialize() interface. And in EDKII implementation, all these parameters 
in Snp.Mode are prepared by calling PXE_OPCODE_GET_INIT_INFO in 
SimpleNetworkDriverStart() function before SNP protocol is installed into the 
protocol database, so they are valid to use once SNP protocol is produced.

Fu, Siyuan
Best regards


-----Original Message-----
From: Reece R. Pollack [mailto:reece.poll...@linaro.org]
Sent: Tuesday, October 08, 2013 3:40 AM
To: edk2-devel@lists.sourceforge.net
Cc: patc...@linaro.org
Subject: [edk2] [PATCH 02/10] MdeModulePkg//ArpDxe: Retrieved SnpMode only 
after configuring Snp

From: Olivier Martin <olivier.mar...@arm.com>

When Arp driver starts (with ArpDriverBindingStart()), its service will be 
created and the Mnp child configured (ArpService->Mnp->Configure() called in 
ArpCreateService()).

It is only at this time the Snp protocol will be initialized (at the end of 
MnpStart()).
So, a valid SnpMode could not be expected prior to ArpService->Mnp->Configure().

Signed-off-by: Olivier Martin <olivier.mar...@arm.com>
---
 MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c |   33 +++++++++++----------
 1 file changed, 17 insertions(+), 16 deletions(-)  mode change 100644 => 
100755 MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c

diff --git a/MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c 
b/MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c
old mode 100644
new mode 100755
index 81ddd62..5cf717f
--- a/MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c
+++ b/MdeModulePkg/Universal/Network/ArpDxe/ArpDriver.c
@@ -103,22 +103,6 @@ ArpCreateService (
   }

   //
-  // Get the underlayer Snp mode data.
-  //
-  Status = ArpService->Mnp->GetModeData (ArpService->Mnp, NULL, 
&ArpService->SnpMode);
-  if ((Status != EFI_NOT_STARTED) && EFI_ERROR (Status)) {
-    goto ERROR_EXIT;
-  }
-
-  if (ArpService->SnpMode.IfType != NET_IFTYPE_ETHERNET) {
-    //
-    // Only support the ethernet.
-    //
-    Status = EFI_UNSUPPORTED;
-    goto ERROR_EXIT;
-  }
-
-  //
   // Set the Mnp config parameters.
   //
   ArpService->MnpConfigData.ReceivedQueueTimeoutValue = 0; @@ -141,6 +125,23 
@@ ArpCreateService (
   }

   //
+  // Get the underlayer Snp mode data. Must do this after MNP
+ configuration else some parameters  // (e.g. current address) may not
+ be set  //  Status = ArpService->Mnp->GetModeData (ArpService->Mnp,
+ NULL, &ArpService->SnpMode);  if ((Status != EFI_NOT_STARTED) &&
+ EFI_ERROR (Status)) {
+    goto ERROR_EXIT;
+  }
+
+  if (ArpService->SnpMode.IfType != NET_IFTYPE_ETHERNET) {
+    //
+    // Only support the ethernet.
+    //
+    Status = EFI_UNSUPPORTED;
+    goto ERROR_EXIT;
+  }
+
+  //
   // Create the event used in the RxToken.
   //
   Status = gBS->CreateEvent (
--
1.7.10.4


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel


-- IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium.  Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered 
in England & Wales, Company No:  2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, 
Registered in England & Wales, Company No:  2548782


------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to