Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Apr 2005 15:00:32 +0900
From:      Pyun YongHyeon <yongari@rndsoft.co.kr>
To:        John-Mark Gurney <gurney_j@resnet.uoregon.edu>
Cc:        freebsd-sparc64@freebsd.org
Subject:   Re: em(4) patch
Message-ID:  <20050415060032.GF7393@michelle.rndsoft.co.kr>
In-Reply-To: <20050415054627.GR56487@funkthat.com>
References:  <20050414092608.GB2855@michelle.rndsoft.co.kr> <20050414192749.GO56487@funkthat.com> <20050415023902.GC7393@michelle.rndsoft.co.kr> <20050415030935.GQ56487@funkthat.com> <20050415042731.GD7393@michelle.rndsoft.co.kr> <20050415051112.GE7393@michelle.rndsoft.co.kr> <20050415054627.GR56487@funkthat.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 14, 2005 at 10:46:27PM -0700, John-Mark Gurney wrote:

 > > With your changes JUMBO frames work here. This should also fix PR75794.
 > > It would be really great if your changes could be comitted.
 > 
 > I was working on trying to get some performance measurements by using
 > if_re...  But I haven't been able to get if_re to work on sparc64...
 > 

I don't have hardware that use re(4) so don't know current status of
re(4) on sparc64. :-(

 > Though if em doesn't need realignment for normal frames, why do we need
 > them for jumbo?
 > 

Look at: if_em.c(stock version) line 2605,
   2592         if (mp == NULL) {
   2593                 mp = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
   2594                 if (mp == NULL) {
   2595                         adapter->mbuf_cluster_failed++;
   2596                         return(ENOBUFS);
   2597                 }
   2598                 mp->m_len = mp->m_pkthdr.len = MCLBYTES;
   2599         } else {
   2600                 mp->m_len = mp->m_pkthdr.len = MCLBYTES;
   2601                 mp->m_data = mp->m_ext.ext_buf;
   2602                 mp->m_next = NULL;
   2603         }
   2604 
   2605         if (ifp->if_mtu <= ETHERMTU) {
   2606                 m_adj(mp, ETHER_ALIGN);
   2607         }
   2608 
   2609         rx_buffer = &adapter->rx_buffer_area[i];

If mtu is greater than ETHERMTU em(4) does not align it. When JUMBO
frame is used the frame would occupy several RX descriptors and it
can't use simple m_adj.
-- 
Regards,
Pyun YongHyeon
http://www.kr.freebsd.org/~yongari	|	yongari@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050415060032.GF7393>