[removed Piotr Kruszynski from CC because mail address does not exist anymore]
Hi Joe, Am Montag 25 Juni 2012, 22:25:56 schrieb Joe Hershberger: > Hi Michael, > > On Fri, Jun 22, 2012 at 4:24 PM, Michael Walle <mich...@walle.cc> wrote: > > If the requested length is too small to hold the received packet, > > eth_receive() will return -1 and will leave the packet in the receive > > buffers. Instead of returning an error in this case, we return the first > > portion of the received packet and remove it from the receive buffers. > > > > This fixes FreeBSD's ubldr. Without this patch it will just stop > > receiving packets if the NIC receives more than PKTBUFSRX too large > > packets. > > > > Signed-off-by: Michael Walle <mich...@walle.cc> > > Cc: Joe Hershberger <joe.hershber...@gmail.com> > > Cc: Rafal Jaworowski <r...@semihalf.com> > > Cc: Piotr Kruszynski <p...@semihalf.com> > > --- > > net/eth.c | 5 +---- > > 1 files changed, 1 insertions(+), 4 deletions(-) > > > > diff --git a/net/eth.c b/net/eth.c > > index d526264..09249c9 100644 > > --- a/net/eth.c > > +++ b/net/eth.c > > @@ -486,10 +486,7 @@ int eth_receive(void *packet, int length) > > return -1; > > } > > > > - if (length < eth_rcv_bufs[eth_rcv_current].length) > > - return -1; > > - > > - length = eth_rcv_bufs[eth_rcv_current].length; > > + length = min(eth_rcv_bufs[eth_rcv_current].length, length); > > Is it really a good idea to return a runt packet to the network > protocols? I understand wanting to drop the too-big packet, but I > think you should simply drop that packet before returning the error, > but still error. its the same behaviour as recv() with udp packets, isn't it? see http://pubs.opengroup.org/onlinepubs/009695399/functions/recv.html But i'm not set on this, maybe rafal could clarify this. My main point is to make ubldr working ;) -- michael _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot