Hi Ari,

I tend to agree with your assessment.

At the same time, I checked UEFI/code again. It turns out the 
PXE_OPFLAGS_STATION_ADDRESS_READ and PXE_OPFLAG_STATION_ADDRESS_WRITE are both 
defined as zero.
[cid:image001.png@01CF3D40.5A455C10]
So, using current BIOS FW, I thought there'll be no actual functionality impact 
if you pass PXE_OPFLAGS_STATION_ADDRESS_WRITE.

Thanks,
Ruth
From: Ari Zigler [mailto:a...@mellanox.com]
Sent: Tuesday, March 11, 2014 2:39 PM
To: edk2-devel@lists.sourceforge.net
Cc: Haggai Eran
Subject: Re: [edk2] MdeModulePkg/Universal/Network/SnpDxp/Station_address.c

Hi Ruth,

Yes, I'm developing a UNDI driver for our device.
The bellow code, if integrated into a BIOS FW, do cause me an issue as it 
implies that there is no need to pass PXE_OPFLAGS_STATION_ADDRESS_WRITE whereas 
my driver expects this kind of flag in order to perform SetAddress(). With the 
current implementation, calling to SetStationAddress on the SNP driver will not 
be processed by our UNDI driver.
I tend to think that this code is not aligned to UNDI spec.

Ari

From: Li, Ruth [mailto:ruth...@intel.com]
Sent: Tuesday, March 11, 2014 5:14 AM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc: Haggai Eran
Subject: Re: [edk2] MdeModulePkg/Universal/Network/SnpDxp/Station_address.c

Ari,

Below piece of code has been here for many years, the purpose of the comment 
seems to remind the operation result for some UNDI implementation.

Are you development UNDI driver for some device? Whether below code bring any 
issue to you?

Thanks,
Ruth
From: Ari Zigler [mailto:a...@mellanox.com]
Sent: Sunday, March 09, 2014 6:07 PM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc: Haggai Eran
Subject: [edk2] MdeModulePkg/Universal/Network/SnpDxp/Station_address.c

Hi,

I found this weird comment (and consequent behavior) in the SnpDxe 
PxeSetStnAddr() implementation:
EFI_STATUS
PxeSetStnAddr (
  SNP_DRIVER      *Snp,
  EFI_MAC_ADDRESS *NewMacAddr
  )
{
...
...
    Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_READ;
    //
    // even though the OPFLAGS are set to READ, supplying a new address
    // in the CPB will make undi change the mac address to the new one.
    //
    CopyMem (&Cpb->StationAddr, NewMacAddr, Snp->Mode.HwAddressSize);

    Snp->Cdb.CPBsize  = (UINT16) sizeof (PXE_CPB_STATION_ADDRESS);
    Snp->Cdb.CPBaddr  = (UINT64)(UINTN) Cpb;
  }
...
...
}

I looked through the UNDI section in the UEFI 2.4A spec for a statement 
declaring that once a CPB is present UNDI corresponding StationAddress() shall 
set the current mac address to the address specified in the CPB struct, but my 
efforts were in vain.

Can anyone refute (or substantiate) this claim?

Thanks,

Ari

<<inline: image001.png>>

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to