From owner-freebsd-hackers@FreeBSD.ORG Mon Jan 26 10:53:59 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1E5C316A4CE; Mon, 26 Jan 2004 10:53:59 -0800 (PST) Received: from sccrmhc13.comcast.net (sccrmhc13.comcast.net [204.127.202.64]) by mx1.FreeBSD.org (Postfix) with ESMTP id 99C0E43D3F; Mon, 26 Jan 2004 10:53:57 -0800 (PST) (envelope-from julian@elischer.org) Received: from interjet.elischer.org ([24.7.73.28]) by comcast.net (sccrmhc13) with ESMTP id <2004012618535601600gf4f3e>; Mon, 26 Jan 2004 18:53:57 +0000 Received: from localhost (localhost.elischer.org [127.0.0.1]) by InterJet.elischer.org (8.9.1a/8.9.1) with ESMTP id KAA77321; Mon, 26 Jan 2004 10:53:55 -0800 (PST) Date: Mon, 26 Jan 2004 10:53:54 -0800 (PST) From: Julian Elischer To: Stuart Pook In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-hackers@freebsd.org cc: Don Lewis cc: andre@freebsd.org Subject: Re: send(2) does not block, send(2) man page wrong? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jan 2004 18:53:59 -0000 do what ping does (ping -f) when you get an ENOBUFS do a usleep for 1 mSec. and then send it again. On Mon, 26 Jan 2004, Stuart Pook wrote: > > On 23 Jan 2004, Don Lewis wrote: > > > the send does not give an error: the packet is just thrown away. > > > > Which is the same result as you would get if the bottleneck is just one > > network hop away instead of at the local NIC. > > But it isn't. I'm broadcasting onto the local network. With Linux and > Solaris (which implement what FreeBSD send(2) says), it is so easy: I just > send(2) away, and because the send blocks when the kernel buffer space is > full, I lose very few packets. With FreeBSD, I lose 60% of the packets. > (The aim is to broadcast onto a private 802.11b network.) > > If I don't want to saturate the network then I will use kernel level > traffic shaping to limit the outgoing bandwidth. I have already done this > on Linux when I was broadcasting onto my 802.11b network via an access > point connected via 100Mbits/s Ethernet. I just used traffic shaping > to limit the outgoing traffic on that Ethernet interface to 3Mbits/s. > I didn't have to change my program at all. (At one point I did try > to put the delays (with nanosleep) into my program but it worked very > badly because the scheduling delays were too big. The kernel does it > so much better.) Once again it is vital that send blocks. > > I guess that I'm out of luck with *BSD. I hope that someone will update > the send(2) man page so that the next person who wants to do what I'm > doing will know that it isn't possible with FreeBSD. > > Stuart > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >