I've been tracking down a performance issue and have isolated it to this piece 
of MNP initialization code:

  //
  // Make sure the protocol headers immediately following the media header
  // 4-byte aligned, and also preserve additional space for VLAN tag
  //
  MnpDeviceData->PaddingSize = ((4 - SnpMode->MediaHeaderSize) & 0x3) + 
NET_VLAN_TAG_LEN;

On my system this is coming up with '6' (MediaHeaderSize = 0xE) which is 
causing performance issues since some of the memory copies to the resulting 
non-dword aligned addresses are slower.  As an experiment I tried bumping this 
number to '8' and things worked well.

This value is used later when NET_BUFs are being allocated:

    if (MnpDeviceData->PaddingSize > 0) {
      //
      // Pad padding bytes before the media header
      //
      NetbufAllocSpace (Nbuf, MnpDeviceData->PaddingSize, NET_BUF_TAIL);
      NetbufTrim (Nbuf, MnpDeviceData->PaddingSize, NET_BUF_HEAD);
    }

Can someone explain the purpose of PaddingSize and how that affects the later 
processing of packets?  Is this number a minimum value and is ok to be larger?

Thanks,

Eugene

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&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