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:
Родитель
f7faab0c9d
Коммит
d0455ed996
|
@ -382,6 +382,7 @@ struct hci_conn {
|
|||
__u16 le_conn_max_interval;
|
||||
__s8 rssi;
|
||||
__s8 tx_power;
|
||||
__s8 max_tx_power;
|
||||
unsigned long flags;
|
||||
|
||||
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->key_type = 0xff;
|
||||
conn->tx_power = HCI_TX_POWER_INVALID;
|
||||
conn->max_tx_power = HCI_TX_POWER_INVALID;
|
||||
|
||||
set_bit(HCI_CONN_POWER_SAVE, &conn->flags);
|
||||
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);
|
||||
|
||||
conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle));
|
||||
if (conn && sent->type == 0x00)
|
||||
conn->tx_power = rp->tx_power;
|
||||
if (!conn)
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче