<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 28, 2015 at 11:39 AM,  <span dir="ltr">&lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">It&#39;s possible it&#39;s a defective design, and is crippled so it can manage<br>
8144 but not the 9000 most chipsets can do.  The fact that 8144 works<br>
is proof the chipset *does* have a concept of jumbograms - but there&#39;s<br>
been a *lot* of misdesigned chips that have this sort of issue....<br>
<br>
Your choices may be limited to running the subnet with an MTU of 8144, or<br>
replacing the defective card.  Have you found anything online claiming that<br>
the card *can* specifically support MTU=9000?, or reached out to the<br>
company?<br>
</blockquote></div><br></div><div class="gmail_extra">Actually initially I can only ping up to MTU 4042, and I have clarified with Altera, they also said that is the maximum MTU supported. </div><div class="gmail_extra"><br></div><div class="gmail_extra">But after that I learned from the technical reference manual and play around with the stmmac driver, if I run Tx in store-and-forward mode and Rx in threshold mode, I can ping up to MTU 8144. And according to the TRM, the GMAC indeed can support up to MTU 9.6KB. That&#39;s why I&#39;m thinking maybe is the ethernet driver has some parts need to be configured properly to suit my particular GMAC.</div><div class="gmail_extra"><br></div><div class="gmail_extra">In particular, I&#39;ve a hunch that this is related to the FIFO size and descriptor offset. The GMAC that I&#39;m using has Tx and Rx FIFO size of 4kB each and supports up to 8kB descriptor. The confusing part are the following lines in ring_mode.c:</div><div class="gmail_extra"><br></div><div class="gmail_extra">In functions stmmac_jumbo_frm,</div><div class="gmail_extra"><div class="gmail_extra">desc-&gt;des2 = dma_map_single(priv-&gt;device, skb-&gt;data,</div><div class="gmail_extra"><span class="" style="white-space:pre">                                        </span>    bmax, DMA_TO_DEVICE); // where bmax is 8192</div><div class="gmail_extra">desc-&gt;des3 = desc-&gt;des2 + BUF_SIZE_4KiB;<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">In functions stmmac_refill_desc3 and stmmac_init_desc3</div><div class="gmail_extra">p-&gt;des3 = p-&gt;des2 + BUF_SIZE_8KiB;<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Although the maximum FIFO size are 8kB for both of them (verified from descs.h), why is the offset are different?</div><div class="gmail_extra"><br></div></div></div>