[Bluetooth] Export details about authentication requirements
[pandora-kernel.git] / include / net / bluetooth / hci_core.h
index ea13baa..cbf7510 100644 (file)
@@ -40,6 +40,7 @@ struct inquiry_data {
        __u8            dev_class[3];
        __le16          clock_offset;
        __s8            rssi;
+       __u8            ssp_mode;
 };
 
 struct inquiry_entry {
@@ -75,6 +76,7 @@ struct hci_dev {
        __u8            dev_class[3];
        __u8            features[8];
        __u8            commands[64];
+       __u8            ssp_mode;
        __u8            hci_ver;
        __u16           hci_rev;
        __u16           manufacturer;
@@ -161,9 +163,12 @@ struct hci_conn {
        __u8             attempt;
        __u8             dev_class[3];
        __u8             features[8];
+       __u8             ssp_mode;
        __u16            interval;
+       __u16            pkt_type;
        __u16            link_policy;
        __u32            link_mode;
+       __u8             auth_type;
        __u8             power_save;
        unsigned long    pend;
 
@@ -344,7 +349,7 @@ static inline void hci_conn_put(struct hci_conn *conn)
                        if (conn->state == BT_CONNECTED) {
                                timeo = msecs_to_jiffies(HCI_DISCONN_TIMEOUT);
                                if (!conn->out)
-                                       timeo *= 2;
+                                       timeo *= 5;
                        } else
                                timeo = msecs_to_jiffies(10);
                } else
@@ -418,6 +423,7 @@ int hci_get_dev_list(void __user *arg);
 int hci_get_dev_info(void __user *arg);
 int hci_get_conn_list(void __user *arg);
 int hci_get_conn_info(struct hci_dev *hdev, void __user *arg);
+int hci_get_auth_info(struct hci_dev *hdev, void __user *arg);
 int hci_inquiry(void __user *arg);
 
 void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
@@ -459,6 +465,7 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
 #define lmp_sniff_capable(dev)     ((dev)->features[0] & LMP_SNIFF)
 #define lmp_sniffsubr_capable(dev) ((dev)->features[5] & LMP_SNIFF_SUBR)
 #define lmp_esco_capable(dev)      ((dev)->features[3] & LMP_ESCO)
+#define lmp_ssp_capable(dev)       ((dev)->features[6] & LMP_SIMPLE_PAIR)
 
 /* ----- HCI protocols ----- */
 struct hci_proto {
@@ -474,7 +481,7 @@ struct hci_proto {
        int (*recv_acldata)     (struct hci_conn *conn, struct sk_buff *skb, __u16 flags);
        int (*recv_scodata)     (struct hci_conn *conn, struct sk_buff *skb);
        int (*auth_cfm)         (struct hci_conn *conn, __u8 status);
-       int (*encrypt_cfm)      (struct hci_conn *conn, __u8 status);
+       int (*encrypt_cfm)      (struct hci_conn *conn, __u8 status, __u8 encrypt);
 };
 
 static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
@@ -532,17 +539,17 @@ static inline void hci_proto_auth_cfm(struct hci_conn *conn, __u8 status)
                hp->auth_cfm(conn, status);
 }
 
-static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status)
+static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status, __u8 encrypt)
 {
        register struct hci_proto *hp;
 
        hp = hci_proto[HCI_PROTO_L2CAP];
        if (hp && hp->encrypt_cfm)
-               hp->encrypt_cfm(conn, status);
+               hp->encrypt_cfm(conn, status, encrypt);
 
        hp = hci_proto[HCI_PROTO_SCO];
        if (hp && hp->encrypt_cfm)
-               hp->encrypt_cfm(conn, status);
+               hp->encrypt_cfm(conn, status, encrypt);
 }
 
 int hci_register_proto(struct hci_proto *hproto);
@@ -579,7 +586,7 @@ static inline void hci_encrypt_cfm(struct hci_conn *conn, __u8 status, __u8 encr
 {
        struct list_head *p;
 
-       hci_proto_encrypt_cfm(conn, status);
+       hci_proto_encrypt_cfm(conn, status, encrypt);
 
        read_lock_bh(&hci_cb_list_lock);
        list_for_each(p, &hci_cb_list) {