From: Szymon Janc <szymon.janc@tieto.com>
To: Marcin Kraglak <marcin.kraglak@tieto.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH] android/gatt: Set attrib MTU correctly
Date: Wed, 04 Jun 2014 19:38:29 +0200 [thread overview]
Message-ID: <31158844.FpJplVcR4q@leonov> (raw)
In-Reply-To: <1401886448-28463-1-git-send-email-marcin.kraglak@tieto.com>
Hi Marcin,
On Wednesday 04 of June 2014 14:54:08 Marcin Kraglak wrote:
> We should set g_attrib mtu with MIN of two values: Remote Rx MTU
> and local Tx MTU. In previous solution once we set g_attrib mtu, we
> could only reduce MTU (because we took previously set g_attrib MTU
> and Remote Rx MTU). It affected cases when remote wanted to increase
> MTU
According to spec:
section 3.4.2.1: "This [Exchange MTU] request shall only be sent once during a
connection by the client."
section 3.4.2.2: "A device's Exchange MTU Request shall contain the same MTU
as the device's Exchange MTU Response (i.e. the MTU shall be symmetric)."
So if I get the spec correctly it is illegal to increase (or decrease) MTU
after it was exchanged (we should probably respond with error if client is
sending request more than one).
Please correct me if I'm wrong.
> .
> ---
> android/gatt.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/android/gatt.c b/android/gatt.c
> index 429181f..5bf7694 100644
> --- a/android/gatt.c
> +++ b/android/gatt.c
> @@ -4857,8 +4857,8 @@ static uint8_t read_request(const uint8_t *cmd,
> uint16_t cmd_len, static uint8_t mtu_att_handle(const uint8_t *cmd,
> uint16_t cmd_len, struct gatt_device *dev)
> {
> - uint16_t mtu, imtu;
> - size_t omtu;
> + uint16_t mtu, imtu, omtu;
> + size_t length;
> GIOChannel *io;
> GError *gerr = NULL;
> uint16_t len;
> @@ -4877,6 +4877,7 @@ static uint8_t mtu_att_handle(const uint8_t *cmd,
> uint16_t cmd_len,
>
> bt_io_get(io, &gerr,
> BT_IO_OPT_IMTU, &imtu,
> + BT_IO_OPT_OMTU, &omtu,
> BT_IO_OPT_INVALID);
> if (gerr) {
> error("bt_io_get: %s", gerr->message);
> @@ -4884,10 +4885,10 @@ static uint8_t mtu_att_handle(const uint8_t *cmd,
> uint16_t cmd_len, return ATT_ECODE_UNLIKELY;
> }
>
> - rsp = g_attrib_get_buffer(dev->attrib, &omtu);
> + rsp = g_attrib_get_buffer(dev->attrib, &length);
>
> /* Respond with our IMTU */
> - len = enc_mtu_resp(imtu, rsp, omtu);
> + len = enc_mtu_resp(imtu, rsp, length);
> if (!len)
> return ATT_ECODE_UNLIKELY;
--
BR
Szymon Janc
next prev parent reply other threads:[~2014-06-04 17:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 12:54 [PATCH] android/gatt: Set attrib MTU correctly Marcin Kraglak
2014-06-04 17:38 ` Szymon Janc [this message]
2014-06-04 18:31 ` Marcin Kraglak
2014-06-06 4:10 ` Szymon Janc
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=31158844.FpJplVcR4q@leonov \
--to=szymon.janc@tieto.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcin.kraglak@tieto.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.