Date: Sun, 14 Oct 2012 00:19:35 +0200 From: Andreas Longwitz <longwitz@incore.de> To: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> Cc: freebsd-bluetooth@freebsd.org Subject: Re: btpand problem Message-ID: <5079E8F7.5050903@incore.de> In-Reply-To: <CAFPOs6qWVAcSuPz6%2BB=3uq_KqCXa=YcXwx-PNncGVrbDE8AimQ@mail.gmail.com> 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>
next in thread | previous in thread | raw e-mail | index | archive | help
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. Andreas Longwitz
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5079E8F7.5050903>