Bluetooth: Report RPA changed event 92/186492/2
authorinjun.yang <injun.yang@samsung.com>
Mon, 21 May 2018 08:32:16 +0000 (17:32 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Fri, 10 Aug 2018 02:31:24 +0000 (11:31 +0900)
When RPA changed, The updated RPA is not applied on
VSC advertising. This patchset generates new event
and resolves the problem.

Change-Id: Icc3dd74da0449cb8e456c27bc34995f43326efe1
Signed-off-by: injun.yang <injun.yang@samsung.com>
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
include/net/bluetooth/hci_core.h
include/net/bluetooth/mgmt_tizen.h
net/bluetooth/hci_request.c
net/bluetooth/mgmt.c

index 3bc674f0873d66411fc69598a40df333d695ee8b..a6c799a61898020f6f19a28aa0e85d703775ba4f 100644 (file)
@@ -1590,6 +1590,7 @@ void mgmt_le_data_length_change_complete(struct hci_dev *hdev,
                u16 rx_octets, u16 rx_time);
 int hci_le_set_data_length(struct hci_conn *conn, u16 tx_octets, u16 tx_time);
 int hci_conn_streaming_mode(struct hci_conn *conn, bool streaming_mode);
+void mgmt_rpa_updated_evt(struct hci_dev *hdev, bdaddr_t *rpa);
 #endif
 
 u8 hci_le_conn_update(struct hci_conn *conn, u16 min, u16 max, u16 latency,
index 066985a2b1fbcb62d6ffa15033b2090223ead469..3a5eeaa31f3489fd9e793895f709418e2e363be8 100644 (file)
@@ -339,4 +339,9 @@ struct mgmt_ev_le_data_length_changed {
        __le16  max_rx_time;
 } __packed;
 
+#define MGMT_EV_RPA_CHANGED                    (TIZEN_EV_BASE + 0x0e)
+struct mgmt_ev_rpa_changed {
+       bdaddr_t bdaddr;
+} __packed;
+
 #endif /* __MGMT_TIZEN_H */
index d6025d6e6d59f957c612a1e7ff455f770734eb6a..fd6389e1a2299d7acd3381ddf13b398d43cc69b5 100644 (file)
@@ -356,6 +356,9 @@ int hci_update_random_address(struct hci_request *req, bool require_privacy,
                to = msecs_to_jiffies(hdev->rpa_timeout * 1000);
                queue_delayed_work(hdev->workqueue, &hdev->rpa_expired, to);
 
+#ifdef CONFIG_TIZEN_WIP
+               mgmt_rpa_updated_evt(hdev, &hdev->rpa);
+#endif
                return 0;
        }
 
index 460c9a4be9d3983f5938c387244c18bfc61f72ed..b2e79d6f98ad286da49f242936afc79e63d48338 100644 (file)
@@ -7810,6 +7810,18 @@ void mgmt_le_data_length_change_complete(struct hci_dev *hdev,
        mgmt_event(MGMT_EV_LE_DATA_LENGTH_CHANGED, hdev, &ev, sizeof(ev), NULL);
 }
 
+void mgmt_rpa_updated_evt(struct hci_dev *hdev, bdaddr_t *rpa)
+{
+       struct mgmt_ev_rpa_changed mgmt_ev;
+
+       BT_DBG("RPA updated");
+
+       bacpy(&mgmt_ev.bdaddr, rpa);
+
+       mgmt_event(MGMT_EV_RPA_CHANGED, hdev, &mgmt_ev,
+                               sizeof(struct mgmt_ev_rpa_changed), NULL);
+}
+
 static int set_irk(struct sock *sk, struct hci_dev *hdev, void *cp_data,
                   u16 len)
 {