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