From: Iain Hibbert <plunky@rya-online.net>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: "packet types" wrong in libbluetooth
Date: Sat, 10 Jan 2009 16:01:36 +0000 (GMT) [thread overview]
Message-ID: <1231603296.653256.942.nullmailer@galant.ukfsn.org> (raw)
In-Reply-To: <1231597284.5229.2.camel@californication>
On Sat, 10 Jan 2009, Marcel Holtmann wrote:
> Hi Iain,
>
> > The HCI packet type functions ptypetostr() and strtoptype() in lib/hci.c
> > don't work correctly. This is because the HCI spec is messed up wrt the 2
> > and 3 Mbps packet types, which are indicated by inverted bit logic (see
> > "Create Connection Command" in core spec document)
>
> current situation is perfectly fine. It follows the spec. closely and
> this means for EDR the types are inverted.
since the spec is somewhat twisty I don't see how it follows it at all :)
> Trying to make them looks nice doesn't help. You should not mess with
> packet types at all. It is the link managers' job to get this right.
I am not messing with packet types at all. I apologise because I don't use
Linux or the BlueZ tools in general but it seems that hcidump displays
"Create Connection" packets (at least) incorrectly because of this. For
instance
hci_ptypetostr(HCI_DH1)
will return
"DH1 "
which seems normal. But, when this is part of a HCI packet (eg Create
Connection command), that result should actually be:
"DH1 2-DH1 2-DH3 2-DH5 3-DH1 3-DH3 3-DH5 "
Should it be handled in hcidump instead, as below?
regards,
iain
--- parser/hci.c.orig 2009-01-10 15:51:51.000000000 +0000
+++ parser/hci.c 2009-01-10 15:51:53.000000000 +0000
@@ -718,6 +718,7 @@
addr, ptype, cp->role_switch,
clkoffset & 0x7fff, clkoffset & 0x8000 ? " (valid)" : "");
+ ptype ^= (HCI_2DH1|HCI_2DH3|HCI_2DH5|HCI_3DH1|HCI_3DH3|HCI_3DH5);
str = hci_ptypetostr(ptype);
if (str) {
p_indent(level, frm);
@@ -746,6 +747,7 @@
p_indent(level, frm);
printf("handle %d ptype 0x%4.4x\n", btohs(cp->handle), ptype);
+ ptype ^= (HCI_2DH1|HCI_2DH3|HCI_2DH5|HCI_3DH1|HCI_3DH3|HCI_3DH5);
str = hci_ptypetostr(ptype);
if (str) {
p_indent(level, frm);
@@ -2761,6 +2763,7 @@
p_indent(level, frm);
printf("Error: %s\n", status2str(evt->status));
} else {
+ ptype ^= (HCI_2DH1|HCI_2DH3|HCI_2DH5|HCI_3DH1|HCI_3DH3|HCI_3DH5);
str = hci_ptypetostr(ptype);
if (str) {
p_indent(level, frm);
next prev parent reply other threads:[~2009-01-10 16:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-10 13:50 "packet types" wrong in libbluetooth Iain Hibbert
2009-01-10 14:21 ` Marcel Holtmann
2009-01-10 16:01 ` Iain Hibbert [this message]
2009-01-10 16:13 ` Marcel Holtmann
2009-01-10 17:59 ` Iain Hibbert
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=1231603296.653256.942.nullmailer@galant.ukfsn.org \
--to=plunky@rya-online.net \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel@holtmann.org \
/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