2010-07-06 13:51:57

by Pavan Savoy

[permalink] [raw]
Subject: Re: using hci0 interface without DEVUP

----- Original Message -----
From: "Marcel Holtmann" <[email protected]>
To: "Savoy, Pavan" <[email protected]>
Cc: <[email protected]>; "Leibovitch, Kobi" <[email protected]>; "pavan savoy"
<[email protected]>
Sent: Tuesday, July 06, 2010 6:25 PM
Subject: Re: using hci0 interface without DEVUP


> Hi Pavan,
>
>> In certain cases, as in using VS commads to communicate with different cores on the combo chips
>> (say, BT, FM, GPS) - we would have to use the hci0 interface without it being UP.
>>
>> As in the hci0 interface still needs to be invisible (via dbus/bluetoothd) to the system but to be
>> available to be use.
>>
>> Is there a way we can do this while registering with the hci ?
>> say a flag in the struct hci_dev to be by default during registration HCI_DEV_DOWN to be default
>> state ?
>
> it is a pretty simple fact that the HCI device has to up. Otherwise it
> is not going to work. Same with an Ethernet interface. That is the
> proper state for such interfaces.

device should be UP and RUNNING, I agree, But somehow to hide this from the bluetoothd !! is my
concern,
hide this from bluetoothd, and hence hide this from dbus, so as to hide it from rest of the system
...

> What you want is to set RAW mode on the HCI device before bringing it
> up. Then bluetoothd will actually ignore it.

You mean to say HCI_RAW to the hdev->flags ?
But that has the same effect even now because our HCI commands are HCI_VS, ogf of 0x3f.

> However I am not sure what you are really trying to achieve here since
> every device will be brought up automatically by bluetoothd. And so you
> are already to late to the game at that point.

exactly what I am trying to avoid, as in during hci_register_dev, I provide a flag from my hdev,
telling whether
hci_notify and hence sock internal notification should happen at all ...
Thereby, when I do

set_bit(hdev, NO_NOTIFY);
hci_register_dev(hdev); --> bluetoothd doesn't get notification of a HCI-REG itself.

But the problem would then be, how would I do a DEVUP internally ...
Any hints ??

> Regards
>
> Marcel
>
>
>


2010-07-06 14:08:37

by Marcel Holtmann

[permalink] [raw]
Subject: Re: using hci0 interface without DEVUP

Hi Pavan,

> >> In certain cases, as in using VS commads to communicate with different cores on the combo chips
> >> (say, BT, FM, GPS) - we would have to use the hci0 interface without it being UP.
> >>
> >> As in the hci0 interface still needs to be invisible (via dbus/bluetoothd) to the system but to be
> >> available to be use.
> >>
> >> Is there a way we can do this while registering with the hci ?
> >> say a flag in the struct hci_dev to be by default during registration HCI_DEV_DOWN to be default
> >> state ?
> >
> > it is a pretty simple fact that the HCI device has to up. Otherwise it
> > is not going to work. Same with an Ethernet interface. That is the
> > proper state for such interfaces.
>
> device should be UP and RUNNING, I agree, But somehow to hide this from the bluetoothd !! is my
> concern,
> hide this from bluetoothd, and hence hide this from dbus, so as to hide it from rest of the system
> ...
>
> > What you want is to set RAW mode on the HCI device before bringing it
> > up. Then bluetoothd will actually ignore it.
>
> You mean to say HCI_RAW to the hdev->flags ?
> But that has the same effect even now because our HCI commands are HCI_VS, ogf of 0x3f.
>
> > However I am not sure what you are really trying to achieve here since
> > every device will be brought up automatically by bluetoothd. And so you
> > are already to late to the game at that point.
>
> exactly what I am trying to avoid, as in during hci_register_dev, I provide a flag from my hdev,
> telling whether
> hci_notify and hence sock internal notification should happen at all ...
> Thereby, when I do
>
> set_bit(hdev, NO_NOTIFY);
> hci_register_dev(hdev); --> bluetoothd doesn't get notification of a HCI-REG itself.
>
> But the problem would then be, how would I do a DEVUP internally ...
> Any hints ??

listen to what I said. If you wanna set this as RAW device from the
kernel, then that is fine as well. You can do that. Only exception is
that you can never take this back from userspace:

set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);

Regards

Marcel