Date: Sun, 14 Oct 2012 08:55:33 +0100 (BST) From: Iain Hibbert <plunky@rya-online.net> To: Andreas Longwitz <longwitz@incore.de> Cc: freebsd-bluetooth@freebsd.org Subject: Re: btpand problem Message-ID: <alpine.NEB.2.00.1210140843330.548@galant.ukfsn.org> In-Reply-To: <5079E8F7.5050903@incore.de> References: <507736A8.4050605@incore.de> <BDA3CA14-92C0-414E-9D55-E96EA7A73312@gmail.com> <5077490F.7010901@incore.de> <CAFPOs6pF51wy9PvKLn4-OnrOqo8hU1S=P5PzTFwgUppBjqAtuA@mail.gmail.com> <alpine.NEB.2.00.1210120949170.628@galant.ukfsn.org> <50782E05.5080005@incore.de> <alpine.NEB.2.00.1210122254010.965@galant.ukfsn.org> <CAFPOs6qWVAcSuPz6%2BB=3uq_KqCXa=YcXwx-PNncGVrbDE8AimQ@mail.gmail.com> <5079E8F7.5050903@incore.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 14 Oct 2012, Andreas Longwitz wrote: > Hi, > > > > > Yes, I used the code fragment > > > > > > > > { > > > > uint16_t mtu; > > > > socklen_t len = sizeof(mtu); > > > > getsockopt(chan->fd, SOL_L2CAP, SO_L2CAP_OMTU,&mtu,&len); > > > > log_err("writev: %m (mtu %d)\n", mtu); > > > > } > > > > > > > > and found mtu=1691 in all cases (ok or failed), same for SO_L2CAP_IMTU. > > > > > > I see, so it seems that the kernel is returning EMSGSIZE when trying to > > > send a packet that is greater than L2CAP_MTU_DEFAULT.. > > > > > > you could build the bluetooth netgraph code with debugging turned on, and > > > see if that kicked anything out about where the error is returned from.. > > > The most obvious place to look at could be ng_btsocket_l2cap_send(), if > > > that is the one, is pcb->omtu the correct value? > > > > there should be sysctl knobs to increase debug level for sockets and > > ng messages for ng nodes. > > > > so, yes, please try to increase debug level for l2cap nodes and > > sockets and see if anything pops up > > After increasing debug_level for net.bluetooth.l2cap from 3 --> 4 and adding a > statement NG_BTSOCKET_L2CAP_INFO(..) in ng_btsocket_l2cap_send it was clear to > me that in the case of the failed writev none of the debug statements > triggers. This information pointed me to the possible solution of the problem. > The reason for the EMSGSIZE error is the size of the send space reserved with > soreserve() in ng_btsocket_l2cap_attach. After changing (in > ng_btsocket_l2cap.h) the line > #define NG_BTSOCKET_L2CAP_SENDSPACE NG_L2CAP_MTU_DEFAULT /* (64 * 1024) */ > to > #define NG_BTSOCKET_L2CAP_SENDSPACE (64 * 1024) > the error is gone. > Please verify if this correction is suitable. Ah well IMO that default should be changed upwards slightly, since 672 is rather small for a buffer size.. but, btpand should also ensure that the buffer sizes are suitable. The server_init() function already does this in FreeBSD, though I also added some code to increase the RCVBUF size in NetBSD code, and also added (but didn't yet commit) the similar for client code.. I will prepare a patch iain
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.NEB.2.00.1210140843330.548>