tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: btuart and SOCKET Bluetooth CF



On Tue, 19 Jan 2010, Iain Hibbert wrote:

> On Tue, 19 Jan 2010, KIYOHARA Takashi wrote:
>
> > > Hm, does it work with ACL data yet?  I think that your
> > > btuart_dtl_output_acl() function strips the ACLDATA header.. I don't
> > > understand how does the device know the connection handle?
> >
> > Only type (1byte) of acldata adjust to me. Perhaps, the problem is not
> > in this.
>
> mm yes, my bad

perhaps related to this byte-pad ?

+       dtlh->len =
+           htole16(sizeof(hdr) - sizeof(hdr.type) + le16toh(hdr.length));
+       if (dtlh->len & 0x1)
+               m_copyback(m, m->m_pkthdr.len, 1, &dtlh->rsvd); /* Add pad */

dtlh->len is not host byte order so could be wrong padding added?

also - should this value reflect the real length (including the pad)? eg
data stream:

    [type] [rsvd] [len0] [len1] [.. data[len] ..]
    [type] [rsvd] [len0] [len1] [.. data[len] ..]
    [type] [rsvd] [len0] [len1] [.. data[len] ..]
    [type] [rsvd] [len0] [len1] [.. data[len] ..]

then, the device would strip the outer header and can ignore any padding
(I don't know if it works like that, but the HCI packet header contains
the actual length)

Further, I think for simplicity you don't need to interpret the HCI packet
header directly during output, just use the m->m_pkthdr.len value which is
correct.

regards,
iain






Home | Main Index | Thread Index | Old Index