em(4) patch

Pyun YongHyeon yongari at rndsoft.co.kr
Thu Apr 14 21:27:47 PDT 2005


On Thu, Apr 14, 2005 at 08:09:35PM -0700, John-Mark Gurney wrote:
[...]
 > 
 > IFF_OACTIVE should be set when the hardward cannot queue anymore packets,
 > and should be cleared when the hardware can accept additional packets..
 > It basicly controls calling an interface's if_start routine..  If
 > IFF_OACTIVE is set, then it is assumed no additional packets can be
 > processed, and if_start will not be called when a packet is queued for
 > the interface...
 > 
 > If you look at net/if_var.h for the define IFQ_HANDOFF_ADJ, you'll
 > see where it is tested...
 > 

Thanks for detailed explanation. Failure of em_encap() does not
necessarily mean out of TX decriptors. So previous code is right.
But checking IFF_OACTIVE flags at the beginning of em_start_locked()
is necessary since the function is called by if_start and TX
interrupt handler.

 > >  > > . TX/RX descriptor alignment is 16 not PAGE_SIZE
 > >  > > . TX/RX descriptor length should be multiple of 128 not 4096.
 > >  > 
 > >  > You should probably use a define for this...
 > >  > 
 > > 
 > > Yes. But AFAIK if_em_hw.h has no defined constants for these purposes.
 > 
 > Then add them.. :)
 > 
I'll do.

 > > There are another hardcoded constants for processing 64bit IO BAR. I
 > > belive these constants should go pcireg.h.
 > 
 > Hmmm. which ones are these?
 > 

patched if_em.c, line 1846.

 > >  > Also, I have work in progress to make non-aligned packets better...
 > >  > I committed part of it as the m_copyup change...  On a -current, you
 > >  > should just be able to apply the following change:
 > >  > http://perforce.freebsd.org/fileDiffView.cgi?FSPC=//depot/user/jmg/arm/src/sys/netinet/ip%5finput.c&REV=3&ACT=edit
 > >  > 
 > > 
 > > This looks promising. Some miserable hardwares that use sf(4)/rl(4)
 > > driver could take advatnage of it. BTW what is IP_HDR_ALIGNED_P macro?
 > 
 > Look at:
 > http://perforce.freebsd.org/fileDiffView.cgi?FSPC=//depot/user/jmg/arm/src/sys/netinet/ip%5fvar.h&REV=2&ACT=edit
 > 
 > and __NO_STRICT_ALIGNMENT should be defined somewhere for i386 and
I'll try that. Thanks.

 > amd64..  I sent an email to bde asking about where to define this, but
 > he didn't respond...
 > 
-- 
Regards,
Pyun YongHyeon
http://www.kr.freebsd.org/~yongari	|	yongari at freebsd.org


More information about the freebsd-sparc64 mailing list