Loading include/net/bluetooth/hci_core.h +1 −1 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ struct hci_dev { struct list_head remote_oob_data; struct list_head adv_entries; struct timer_list adv_timer; struct delayed_work adv_work; struct hci_dev_stats stat; Loading net/bluetooth/hci_core.c +5 −5 Original line number Diff line number Diff line Loading @@ -1340,9 +1340,10 @@ int hci_blacklist_del(struct hci_dev *hdev, bdaddr_t *bdaddr) return mgmt_device_unblocked(hdev, bdaddr); } static void hci_clear_adv_cache(unsigned long arg) static void hci_clear_adv_cache(struct work_struct *work) { struct hci_dev *hdev = (void *) arg; struct hci_dev *hdev = container_of(work, struct hci_dev, adv_work.work); hci_dev_lock(hdev); Loading Loading @@ -1488,9 +1489,8 @@ int hci_register_dev(struct hci_dev *hdev) INIT_LIST_HEAD(&hdev->remote_oob_data); INIT_LIST_HEAD(&hdev->adv_entries); setup_timer(&hdev->adv_timer, hci_clear_adv_cache, (unsigned long) hdev); INIT_DELAYED_WORK(&hdev->adv_work, hci_clear_adv_cache); INIT_WORK(&hdev->power_on, hci_power_on); INIT_DELAYED_WORK(&hdev->power_off, hci_power_off); Loading Loading @@ -1576,7 +1576,7 @@ void hci_unregister_dev(struct hci_dev *hdev) hci_del_sysfs(hdev); del_timer(&hdev->adv_timer); cancel_delayed_work_sync(&hdev->adv_work); destroy_workqueue(hdev->workqueue); Loading net/bluetooth/hci_event.c +4 −2 Original line number Diff line number Diff line Loading @@ -1017,7 +1017,7 @@ static void hci_cc_le_set_scan_enable(struct hci_dev *hdev, if (cp->enable == 0x01) { set_bit(HCI_LE_SCAN, &hdev->dev_flags); del_timer(&hdev->adv_timer); cancel_delayed_work_sync(&hdev->adv_work); hci_dev_lock(hdev); hci_adv_entries_clear(hdev); Loading @@ -1025,7 +1025,9 @@ static void hci_cc_le_set_scan_enable(struct hci_dev *hdev, } else if (cp->enable == 0x00) { clear_bit(HCI_LE_SCAN, &hdev->dev_flags); mod_timer(&hdev->adv_timer, jiffies + ADV_CLEAR_TIMEOUT); cancel_delayed_work_sync(&hdev->adv_work); queue_delayed_work(hdev->workqueue, &hdev->adv_work, jiffies + ADV_CLEAR_TIMEOUT); } } Loading Loading
include/net/bluetooth/hci_core.h +1 −1 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ struct hci_dev { struct list_head remote_oob_data; struct list_head adv_entries; struct timer_list adv_timer; struct delayed_work adv_work; struct hci_dev_stats stat; Loading
net/bluetooth/hci_core.c +5 −5 Original line number Diff line number Diff line Loading @@ -1340,9 +1340,10 @@ int hci_blacklist_del(struct hci_dev *hdev, bdaddr_t *bdaddr) return mgmt_device_unblocked(hdev, bdaddr); } static void hci_clear_adv_cache(unsigned long arg) static void hci_clear_adv_cache(struct work_struct *work) { struct hci_dev *hdev = (void *) arg; struct hci_dev *hdev = container_of(work, struct hci_dev, adv_work.work); hci_dev_lock(hdev); Loading Loading @@ -1488,9 +1489,8 @@ int hci_register_dev(struct hci_dev *hdev) INIT_LIST_HEAD(&hdev->remote_oob_data); INIT_LIST_HEAD(&hdev->adv_entries); setup_timer(&hdev->adv_timer, hci_clear_adv_cache, (unsigned long) hdev); INIT_DELAYED_WORK(&hdev->adv_work, hci_clear_adv_cache); INIT_WORK(&hdev->power_on, hci_power_on); INIT_DELAYED_WORK(&hdev->power_off, hci_power_off); Loading Loading @@ -1576,7 +1576,7 @@ void hci_unregister_dev(struct hci_dev *hdev) hci_del_sysfs(hdev); del_timer(&hdev->adv_timer); cancel_delayed_work_sync(&hdev->adv_work); destroy_workqueue(hdev->workqueue); Loading
net/bluetooth/hci_event.c +4 −2 Original line number Diff line number Diff line Loading @@ -1017,7 +1017,7 @@ static void hci_cc_le_set_scan_enable(struct hci_dev *hdev, if (cp->enable == 0x01) { set_bit(HCI_LE_SCAN, &hdev->dev_flags); del_timer(&hdev->adv_timer); cancel_delayed_work_sync(&hdev->adv_work); hci_dev_lock(hdev); hci_adv_entries_clear(hdev); Loading @@ -1025,7 +1025,9 @@ static void hci_cc_le_set_scan_enable(struct hci_dev *hdev, } else if (cp->enable == 0x00) { clear_bit(HCI_LE_SCAN, &hdev->dev_flags); mod_timer(&hdev->adv_timer, jiffies + ADV_CLEAR_TIMEOUT); cancel_delayed_work_sync(&hdev->adv_work); queue_delayed_work(hdev->workqueue, &hdev->adv_work, jiffies + ADV_CLEAR_TIMEOUT); } } Loading