Hi Szymon, * Szymon Janc <szymon.janc@xxxxxxxxx> [2011-03-01 18:23:35 +0100]: > This patch adds a command to read local OOB data to the managment interface. > The command maps directly to the Read Local OOB Data HCI command. > > Signed-off-by: Szymon Janc <szymon.janc@xxxxxxxxx> > --- > include/net/bluetooth/hci.h | 7 +++ > include/net/bluetooth/hci_core.h | 2 + > include/net/bluetooth/mgmt.h | 6 +++ > net/bluetooth/hci_event.c | 15 +++++++ > net/bluetooth/mgmt.c | 85 ++++++++++++++++++++++++++++++++++++++ > 5 files changed, 115 insertions(+), 0 deletions(-) > > diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h > index ec6acf2..20840dc 100644 > --- a/include/net/bluetooth/hci.h > +++ b/include/net/bluetooth/hci.h > @@ -611,6 +611,13 @@ struct hci_cp_write_ssp_mode { > __u8 mode; > } __packed; > > +#define HCI_OP_READ_LOCAL_OOB_DATA 0x0c57 > +struct hci_rp_read_local_oob_data { > + __u8 status; > + __u8 hash[16]; > + __u8 randomizer[16]; > +} __packed; > + > #define HCI_OP_READ_INQ_RSP_TX_POWER 0x0c58 > > #define HCI_OP_READ_LOCAL_VERSION 0x1001 > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h > index 441dadb..c8b7ee6 100644 > --- a/include/net/bluetooth/hci_core.h > +++ b/include/net/bluetooth/hci_core.h > @@ -767,6 +767,8 @@ int mgmt_user_confirm_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); > int mgmt_user_confirm_neg_reply_complete(u16 index, bdaddr_t *bdaddr, > u8 status); > int mgmt_auth_failed(u16 index, bdaddr_t *bdaddr, u8 status); > +int mgmt_read_local_oob_data_reply_complete(u16 index, u8 *hash, u8 *randomizer, > + u8 status); > > /* HCI info for socket */ > #define hci_pi(sk) ((struct hci_pinfo *) sk) > diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h > index 5fabfa8..916b1c6 100644 > --- a/include/net/bluetooth/mgmt.h > +++ b/include/net/bluetooth/mgmt.h > @@ -167,6 +167,12 @@ struct mgmt_rp_user_confirm_reply { > > #define MGMT_OP_USER_CONFIRM_NEG_REPLY 0x0016 > > +#define MGMT_OP_READ_LOCAL_OOB_DATA 0x0017 > +struct mgmt_rp_read_local_oob_data { > + __u8 hash[16]; > + __u8 randomizer[16]; > +} __packed; > + > #define MGMT_EV_CMD_COMPLETE 0x0001 > struct mgmt_ev_cmd_complete { > __le16 opcode; > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c > index 3fbfa50..4faab87 100644 > --- a/net/bluetooth/hci_event.c > +++ b/net/bluetooth/hci_event.c > @@ -807,6 +807,17 @@ static void hci_cc_user_confirm_reply(struct hci_dev *hdev, struct sk_buff *skb) > rp->status); > } > > +static void hci_cc_read_local_oob_data_reply(struct hci_dev *hdev, > + struct sk_buff *skb) > +{ > + struct hci_rp_read_local_oob_data *rp = (void *) skb->data; > + > + BT_DBG("%s status 0x%x", hdev->name, rp->status); > + > + mgmt_read_local_oob_data_reply_complete(hdev->id, rp->hash, > + rp->randomizer, rp->status); > +} > + This should be after hci_cc_pin_code_neg_reply() and not hci_cc_user_confirm_reply(). -- Gustavo F. Padovan http://profusion.mobi -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html