public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: Lan Zhu <zhu.lan.cn@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: can we increase the send buffer size of rfcomm socket?
Date: Fri, 28 Aug 2009 09:58:33 -0700	[thread overview]
Message-ID: <1251478713.2950.128.camel@localhost.localdomain> (raw)
In-Reply-To: <113d36d80908280234m34473a05n45654ab37a484ed0@mail.gmail.com>

Hi Zhu,

> >> >> We tried to write a 64k data to rfcomm socket, but it will break
> >> >> before sending all of the data out. The problem is in function
> >> >> rfcomm_sock_sendmsg() in net/bluetooth/rfcomm/sock.c, it breaks after
> >> >> calling sock_alloc_send_skb().
> >> >>
> >> >> static int rfcomm_sock_sendmsg(...)
> >> >> {
> >> >>    ...
> >> >>               skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE,
> >> >>                               msg->msg_flags & MSG_DONTWAIT, &err);
> >> >>               if (!skb)
> >> >>                       break;
> >> >>    ...
> >> >> }
> >> >>
> >> >> Looks the send buffer is not adequate. Then I increased the send
> >> >> buffer size in function rfcomm_sock_alloc(),  build kernel and try
> >> >> again, this time the sendmsg can complete sending all the data.
> >> >>
> >> >> Can we use the setsockopt() method to change the socket's send/receive
> >> >> buffer size, just like the usual  tcp/ip socket?
> >> >
> >> > yes we can. Send a patch for it and I am going to review it.
> >> >
> >> > Regards
> >> >
> >> > Marcel
> >> >
> >> >
> >> >
> >>
> >> Today I changed the send buffer size but found kernel become very
> >> unstable. It usually crash during sending rfcomm data. Do you know
> >> what's the reason?
> >>
> >> Below is what I changed in net/bluetooth/rfcomm/sock.c.
> >>
> >> in function rfcomm_sock_alloc(),
> >>
> >> change sk->sndbuf
> >> from
> >> sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10
> >> to
> >> sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 20
> >
> > which kernel is this? There have been some fixes in the network stack
> > for this. Also I need oopses to see what might happen here.
> >
> > Regards
> >
> > Marcel
> >
> >
> >
> 
> Yes, it's our kernel's problem. We used another version and it worked
> fine. Here the change in rfcomm_sock_alloc() is only for testing. What
> I'm doing now is adding a case for RFCOMM_SNDBUF in the function
> rfcomm_sock_setsockopt_old(), as below.
> 
> 	case RFCOMM_SNDBUF:
> 		sk->sk_sndbuf = opt;
> 		break;
> 
> I'm thinking to add a limitation for a maximum buffer size, but don't
> know what maximum size is appropriate here. Do you have any idea?

no that is bluntly wrong. Why do you think the function has _old in its
name. It clearly shows that we are going to deprecate it soon. If you do
this for RFCOMM, then it should also be done for L2CAP. So make sure you
use SOL_BLUETOOTH. And make it similar to what TCP is doing.

Regards

Marcel



  reply	other threads:[~2009-08-28 16:58 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-26 10:07 can we increase the send buffer size of rfcomm socket? Lan Zhu
2009-08-26 18:04 ` Marcel Holtmann
2009-08-27 15:33   ` Lan Zhu
2009-08-27 19:30     ` Marcel Holtmann
2009-08-28  9:34       ` Lan Zhu
2009-08-28 16:58         ` Marcel Holtmann [this message]
2009-08-28 17:54           ` Iain Hibbert
2009-08-29 11:19             ` Lan Zhu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1251478713.2950.128.camel@localhost.localdomain \
    --to=marcel@holtmann.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=zhu.lan.cn@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox