Bluetooth: Track not yet received keys in SMP
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 26 Feb 2014 21:33:43 +0000 (23:33 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 26 Feb 2014 21:46:03 +0000 (13:46 -0800)
To make is easier to track which keys we've received and which ones
we're still waiting for simply clear the corresponding key bits from
smp->remote_key_dist as they get received. This will allow us to
simplify the code for checking for SMP completion in subsequent patches.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/smp.c

index 50355d0..fe41df5 100644 (file)
@@ -948,6 +948,9 @@ static int smp_cmd_master_ident(struct l2cap_conn *conn, struct sk_buff *skb)
        if (!(smp->remote_key_dist & SMP_DIST_ENC_KEY))
                return 0;
 
+       /* Mark the information as received */
+       smp->remote_key_dist &= ~SMP_DIST_ENC_KEY;
+
        skb_pull(skb, sizeof(*rp));
 
        hci_dev_lock(hdev);
@@ -1001,6 +1004,9 @@ static int smp_cmd_ident_addr_info(struct l2cap_conn *conn,
        if (!(smp->remote_key_dist & SMP_DIST_ID_KEY))
                return 0;
 
+       /* Mark the information as received */
+       smp->remote_key_dist &= ~SMP_DIST_ID_KEY;
+
        skb_pull(skb, sizeof(*info));
 
        /* Strictly speaking the Core Specification (4.1) allows sending