Re: sniff mode
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Date: 2009-08-24 19:26:30
Hi Marcel, On Mon, Aug 24, 2009 at 3:40 PM, Marcel Holtmann[off-list ref] wrote= :
Hi Luiz,quoted
It is just me or hci_conn_enter_active_mode will never do what its name suggests. This check will always succeed: =A0 =A0 =A0 if (conn->mode !=3D HCI_CM_SNIFF || !conn->power_save) =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto timer;so conn->power_save is used to disable automatic sniff mode for incoming connections. Mainly HID since they manager it by themselves.
Hmm, but this seems to be done for any device regardless of its type. So for example we start sending/receiving data to a headset it will triggers hci_conn_enter_active_mode which I thought would exit sniff mode, right? (yep, I have seem some headset that doesn't leave sniff mode by their own).
quoted
But in hci_mode_change_evt whatever mode different than HCI_CM_ACTIVE reset power_save to zero: =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE=
_PEND, &conn->pend)) {quoted
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (conn->mode =3D=3D HCI_CM=
_ACTIVE)
quoted
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 conn->power_=
save =3D 1;
quoted
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 conn->power_=
save =3D 0;
quoted
=A0 =A0 =A0 =A0 =A0 =A0 =A0 }And again, we are not setting the sniff mode. We disable automatic sniff mode feature.
It really seems the opposite, like we were disabling the automatic active mode since this make us to always hit goto timer; while in sniff mode. Perhaps this is meant for when remote device has been controlling modes, which sound strange to me since hci_mode_change_evt is called even when the we actively change the mode, right? (hci_conn_idle does that) --=20 Luiz Augusto von Dentz Engenheiro de Computa=E7=E3o