diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:46 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:46 -0400 |
commit | a8746417e864da1ed36dd2432a399fbeb843c2a0 (patch) | |
tree | e0e392e8b76d53748f357e888483bced2de24e2b /include | |
parent | 9dc0a3afc08d6c20c284994dcd84531787d00ec2 (diff) |
[Bluetooth] Track connection packet type changes
The connection packet type can be changed after the connection has been
established and thus needs to be properly tracked to ensure that the
host stack has always correct and valid information about it.
On incoming connections the Bluetooth core switches the supported packet
types to the configured list for this controller. However the usefulness
of this feature has been questioned a lot. The general consent is that
every Bluetooth host stack should enable as many packet types as the
hardware actually supports and leave the decision to the link manager
software running on the Bluetooth chip.
When running on Bluetooth 2.0 or later hardware, don't change the packet
type for incoming connections anymore. This hardware likely supports
Enhanced Data Rate and thus leave it completely up to the link manager
to pick the best packet type.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/bluetooth/hci.h | 9 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index a8a9eb6af966..f1dc174abc2a 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -137,6 +137,8 @@ enum { | |||
137 | #define ESCO_EV4 0x0010 | 137 | #define ESCO_EV4 0x0010 |
138 | #define ESCO_EV5 0x0020 | 138 | #define ESCO_EV5 0x0020 |
139 | 139 | ||
140 | #define SCO_ESCO_MASK (ESCO_HV1 | ESCO_HV2 | ESCO_HV3) | ||
141 | |||
140 | /* ACL flags */ | 142 | /* ACL flags */ |
141 | #define ACL_CONT 0x01 | 143 | #define ACL_CONT 0x01 |
142 | #define ACL_START 0x02 | 144 | #define ACL_START 0x02 |
@@ -696,6 +698,13 @@ struct hci_ev_clock_offset { | |||
696 | __le16 clock_offset; | 698 | __le16 clock_offset; |
697 | } __attribute__ ((packed)); | 699 | } __attribute__ ((packed)); |
698 | 700 | ||
701 | #define HCI_EV_PKT_TYPE_CHANGE 0x1d | ||
702 | struct hci_ev_pkt_type_change { | ||
703 | __u8 status; | ||
704 | __le16 handle; | ||
705 | __le16 pkt_type; | ||
706 | } __attribute__ ((packed)); | ||
707 | |||
699 | #define HCI_EV_PSCAN_REP_MODE 0x20 | 708 | #define HCI_EV_PSCAN_REP_MODE 0x20 |
700 | struct hci_ev_pscan_rep_mode { | 709 | struct hci_ev_pscan_rep_mode { |
701 | bdaddr_t bdaddr; | 710 | bdaddr_t bdaddr; |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index c8255adee8f5..6424d63e3395 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -162,6 +162,7 @@ struct hci_conn { | |||
162 | __u8 dev_class[3]; | 162 | __u8 dev_class[3]; |
163 | __u8 features[8]; | 163 | __u8 features[8]; |
164 | __u16 interval; | 164 | __u16 interval; |
165 | __u16 pkt_type; | ||
165 | __u16 link_policy; | 166 | __u16 link_policy; |
166 | __u32 link_mode; | 167 | __u32 link_mode; |
167 | __u8 power_save; | 168 | __u8 power_save; |