diff options
Diffstat (limited to 'net/bluetooth/smp.c')
| -rw-r--r-- | net/bluetooth/smp.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 70663229b3cc..f1a9fc0012f0 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -58,6 +58,8 @@  #define SMP_TIMEOUT	msecs_to_jiffies(30000) +#define ID_ADDR_TIMEOUT	msecs_to_jiffies(200) +  #define AUTH_REQ_MASK(dev)	(hci_dev_test_flag(dev, HCI_SC_ENABLED) ? \  				 0x3f : 0x07)  #define KEY_DIST_MASK		0x07 @@ -1067,7 +1069,12 @@ static void smp_notify_keys(struct l2cap_conn *conn)  		if (hcon->type == LE_LINK) {  			bacpy(&hcon->dst, &smp->remote_irk->bdaddr);  			hcon->dst_type = smp->remote_irk->addr_type; -			queue_work(hdev->workqueue, &conn->id_addr_update_work); +			/* Use a short delay to make sure the new address is +			 * propagated _before_ the channels. +			 */ +			queue_delayed_work(hdev->workqueue, +					   &conn->id_addr_timer, +					   ID_ADDR_TIMEOUT);  		}  	}  |