[if gte mso 9]>

Re: [edk2] MdeModulePkg/Universal/Network/SnpDxp/Station_address.c

Subject: Re: [edk2] MdeModulePkg/Universal/Network/SnpDxp/Station_address.c

From: "Li, Ruth" <ruth.li@intel.com>

To: "edk2-devel@lists.sourceforge.net" <edk2-devel@lists.sourceforge.net>

Date: 2014-03-11 11:12:16

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:ariz@mellanox.com]
Sent: Sunday, March 09, 2014 6:07 PM
To: 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