Bluetooth: Store max TX power level for connection

This patch adds support to store local maximum TX power level for
connection when reply for HCI_Read_Transmit_Power_Level is received.

Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Andrzej Kaczmarek 2014-05-14 13:43:05 +02:00 коммит произвёл Marcel Holtmann
Родитель f7faab0c9d
Коммит d0455ed996
3 изменённых файлов: 14 добавлений и 2 удалений

Просмотреть файл

@ -382,6 +382,7 @@ struct hci_conn {
__u16 le_conn_max_interval; __u16 le_conn_max_interval;
__s8 rssi; __s8 rssi;
__s8 tx_power; __s8 tx_power;
__s8 max_tx_power;
unsigned long flags; unsigned long flags;
unsigned long conn_info_timestamp; unsigned long conn_info_timestamp;

Просмотреть файл

@ -408,6 +408,7 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
conn->remote_auth = 0xff; conn->remote_auth = 0xff;
conn->key_type = 0xff; conn->key_type = 0xff;
conn->tx_power = HCI_TX_POWER_INVALID; conn->tx_power = HCI_TX_POWER_INVALID;
conn->max_tx_power = HCI_TX_POWER_INVALID;
set_bit(HCI_CONN_POWER_SAVE, &conn->flags); set_bit(HCI_CONN_POWER_SAVE, &conn->flags);
conn->disc_timeout = HCI_DISCONN_TIMEOUT; conn->disc_timeout = HCI_DISCONN_TIMEOUT;

Просмотреть файл

@ -1282,9 +1282,19 @@ static void hci_cc_read_tx_power(struct hci_dev *hdev, struct sk_buff *skb)
hci_dev_lock(hdev); hci_dev_lock(hdev);
conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle)); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle));
if (conn && sent->type == 0x00) if (!conn)
conn->tx_power = rp->tx_power; goto unlock;
switch (sent->type) {
case 0x00:
conn->tx_power = rp->tx_power;
break;
case 0x01:
conn->max_tx_power = rp->tx_power;
break;
}
unlock:
hci_dev_unlock(hdev); hci_dev_unlock(hdev);
} }