<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    You are referring to the wrong document (PXE 2.1 spec for 16-bit
    UNDIs/legacy BIOS).<br>
    Appendix E of UEFI specification defines UNDI functions, behaviors
    and supported opcodes in UEFI.<br>
    <br>
    Thanks,<br>
    Maciej<br>
    <br>
    <div class="moz-cite-prefix">On 26-Nov-20 17:20, Sivaraman Nainar
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:B4DE137BDB63634BAC03BD9DE765F19702B4B9D428@VENUS1.in.megatrends.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span style="color:#1F497D">Hello Maciej:<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><b><span style="color:#1F497D">As per the
              PXE Specification:
              <o:p></o:p></span></b></p>
        <p class="MsoNormal"><span style="color:#1F497D">The protocol
            driver calls UNDI repeatedly with the FuncFlag equal to
            PXENV_UNDI_ISR_IN_GET_NEXT to get all the buffers in a frame
            and also all the received<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">frames in the
            queue. On this call, UNDI must remember the previous buffer
            given to the protoco,l remove it from the receive queue and
            recycle it. In case of a multi-buffered frame, if the
            previous<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">buffer is not
            the last buffer in the frame it must return the next buffer
            in the frame in the parameter block. Otherwise it must
            return the first buffer in the next frame.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">Assume the UNDI
            Driver does not properly Store that TxAddress in the
            GetStatus then the possibility of MNP Layer having issues
            when it treats the recycling based on the GetStatus.<o:p></o:p></span></p>
        <p class="MsoNormal">2. If a NIC has a pre-allocated region for
          Tx buffers and cannot dynamically swap them out,
          UNDI->Transmit() should copy the Tx buffer into appropriate
          region. UNDI driver should also store that Tx buffer somewhere
          within the driver, where it will be accessible by
          UNDI->GetStatus() function.<br>
          <br>
          <span style="color:#1F497D"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">When this point
            2 fails the Recycle support done in the SW Layer shall also
            fail.
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">Pleases correct
            my understanding if any .
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D">-Siva<o:p></o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b>From:</b> Rabeda, Maciej
              [<a class="moz-txt-link-freetext" href="mailto:maciej.rabeda@linux.intel.com">mailto:maciej.rabeda@linux.intel.com</a>]
              <br>
              <b>Sent:</b> Thursday, November 26, 2020 9:10 PM<br>
              <b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Sivaraman Nainar<br>
              <b>Subject:</b> Re: [edk2-devel] reg: PCD To Control MNP
              Buffer Recycle Support<o:p></o:p></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="margin-bottom:12.0pt">Hi Nainar,<br>
          <br>
          What do you mean by "controllers do not support recycling of
          Tx buffers"?<br>
          MNP provides a transmit buffer to SNP (and with EDK2's SNP
          also to UNDI) and at this point it is considered owned by
          SNP/UNDI.<br>
          After UNDI/SNP successfully transmits the packet, it is
          expected to give it back via UNDI->GetStatus().<br>
          <br>
          Adding network controller (NIC) and UNDI into the picture.<br>
          <br>
          1. UNDI->Transmit() gets a single Tx buffer to put on the
          wire.<br>
          2. If a NIC has a pre-allocated region for Tx buffers and
          cannot dynamically swap them out, UNDI->Transmit() should
          copy the Tx buffer into appropriate region. UNDI driver should
          also store that Tx buffer somewhere within the driver, where
          it will be accessible by UNDI->GetStatus() function.<br>
          3. After successful transmit of Tx buffer, on next
          UNDI->GetStatus() with PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS
          OpFlag, driver should put that Tx buffer address in
          PXE_CDB.DBAddr provided to UNDI->GetStatus() as a
          parameter.<br>
          <br>
          Summing the above - Tx buffer recycling is purely a SW
          feature. I do not understand your request nor find it valid.<br>
          <br>
          Thanks,<br>
          Maciej<span style="font-size:12.0pt"><o:p></o:p></span></p>
        <div>
          <p class="MsoNormal">On 24-Nov-20 15:30, Sivaraman Nainar
            wrote:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal">Hello all:<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">MNPDxe supported with the Recycle buffer
            support from the below git commit,<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal"><a
href="https://github.com/tianocore/edk2/commit/0507449955c5c629cec196b62986afbb91203ed9#diff-fb5b97ad38efea22f5ddd745f6e43ebdb509dc4a5aef81997ba53af5f918a47b"
              moz-do-not-send="true">https://github.com/tianocore/edk2/commit/0507449955c5c629cec196b62986afbb91203ed9#diff-fb5b97ad38efea22f5ddd745f6e43ebdb509dc4a5aef81997ba53af5f918a47b</a><o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">But many network controllers does not
            support the Recycling Tx Buffers which will cause the PXE
            Download failure or HTTP Boot failure.
            <o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Can this feature can be controlled by a
            Dynamic PCD so that the same code can work for controller
            which does not support Tx Buffer Recycling.<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Thanks<o:p></o:p></p>
          <p class="MsoNormal">Siva<o:p></o:p></p>
          <div>
          </div>
        </blockquote>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Times New
            Roman","serif""><o:p> </o:p></span></p>
      </div>
      
    </blockquote>
    <br>
  </body>
</html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr> Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/68247">View/Reply Online (#68247)</a> |    |  <a target="_blank" href="https://groups.io/mt/78477824/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>