This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RedBoot: discarding Ethernet frames when out of pktbufs?



I'm once again trying to get RedBoot to do things far above and
beyond what it was originally designed to do.  ;)

My latest problem:

 1) RedBoot advertises a TCP window of something like 1460 bytes.

 2) If an interface with a small MTU decides to send a block of
    data, it feels free to send five 300 byte packets without
    waiting for an ACK.

 3) If there are only 4 pktbufs, RedBoot does a
      while(1)
        ;

I'd like to change RedBoot to discard Ethernet frames if it's
out of packet buffers rather than locking up (resulting in a WD
timeout).

What I'm thinking about is not calling eth_drv_read() unless
there's a pktbuf available.  I can make sure that my Ethernet
driver does what I want when the Rx frame FIFO overflows, but
I'm curious: would this approach will cause problems with other
Ethernet drivers?

I think I've got my Ethernet controller set up to buffer up to
16 frames, so that should be plenty of time for RedBoot to
catch up without actually overflowing the FIFO.  If the Rx FIFO
_does_ overflow, a frame gets discarded, and the TCP retry
mechanism kicks in.

-- 
Grant Edwards
grante@visi.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]