Hi David, * David Herrmann <dh.herrmann@xxxxxxxxxxxxxx> [2011-12-28 17:04:11 +0100]: > On Wed, Dec 28, 2011 at 4:52 PM, Gustavo Padovan <padovan@xxxxxxxxxxxxxx> wrote: > ..snip.. > > I think this patch can do handling, let's see what others think. > > > > Gustavo > > > > > > --- > > Author: Gustavo F. Padovan <padovan@xxxxxxxxxxxxxx> > > Date: Wed Dec 28 13:40:02 2011 -0200 > > > > Bluetooth: Fix lmp_host_le_capable() check for broken devices > > > > Some dongles reports a wrong Local Extended Features leading the kernel > > think that dongle support LE while it don't. > > > > The fix here is just rely on a bit in Local Features (LE Capable) to tell > > us if the device really supports LE. > > > > LE Host Capable is the only bit used from Local Extended Features in our > > kernel. > > > > Signed-off-by: Gustavo F. Padovan <padovan@xxxxxxxxxxxxxx> > > > > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h > > index 5e2e984..c693111 100644 > > --- a/include/net/bluetooth/hci_core.h > > +++ b/include/net/bluetooth/hci_core.h > > @@ -676,7 +676,11 @@ void hci_conn_del_sysfs(struct hci_conn *conn); > > #define lmp_le_capable(dev) ((dev)->features[4] & LMP_LE) > > > > /* ----- Extended LMP capabilities ----- */ > > -#define lmp_host_le_capable(dev) ((dev)->extfeatures[0] & LMP_HOST_LE) > > +/* Some crap dongles does not report a proper Local Extended Features causing > > + * the kernel to wrongly init it as a LE device. So first check if it is LE > > + * capable (controller) which is a info from the Local Features */ > > +#define lmp_host_le_capable(dev) ( lmp_le_capable(dev) && \ > > + (dev)->extfeatures[0] & LMP_HOST_LE) > > > > /* ----- HCI protocols ----- */ > > static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, > > Next time we use the extfeatures for something else, we will break > this device again. Can't we fix dev->extfeatures on initialization > based on a blacklist/quirklist? Or is dev->extfeatures modified after > initialzation of the device somewhere? Sure, we will, but I don't see us using another bit of extfeatures in the near future (after the next Core Spec release maybe) and I don't wanna got that far in this fix right now. Gustavo -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html