diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/hci_core.c | 18 | ||||
-rw-r--r-- | net/bluetooth/hci_event.c | 6 | ||||
-rw-r--r-- | net/bluetooth/hci_sock.c | 6 |
3 files changed, 18 insertions, 12 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 3fc90e543ec1..94ba34982021 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -193,8 +193,9 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt) | |||
193 | while ((skb = skb_dequeue(&hdev->driver_init))) { | 193 | while ((skb = skb_dequeue(&hdev->driver_init))) { |
194 | bt_cb(skb)->pkt_type = HCI_COMMAND_PKT; | 194 | bt_cb(skb)->pkt_type = HCI_COMMAND_PKT; |
195 | skb->dev = (void *) hdev; | 195 | skb->dev = (void *) hdev; |
196 | |||
196 | skb_queue_tail(&hdev->cmd_q, skb); | 197 | skb_queue_tail(&hdev->cmd_q, skb); |
197 | hci_sched_cmd(hdev); | 198 | tasklet_schedule(&hdev->cmd_task); |
198 | } | 199 | } |
199 | skb_queue_purge(&hdev->driver_init); | 200 | skb_queue_purge(&hdev->driver_init); |
200 | 201 | ||
@@ -1005,7 +1006,8 @@ int hci_recv_frame(struct sk_buff *skb) | |||
1005 | 1006 | ||
1006 | /* Queue frame for rx task */ | 1007 | /* Queue frame for rx task */ |
1007 | skb_queue_tail(&hdev->rx_q, skb); | 1008 | skb_queue_tail(&hdev->rx_q, skb); |
1008 | hci_sched_rx(hdev); | 1009 | tasklet_schedule(&hdev->rx_task); |
1010 | |||
1009 | return 0; | 1011 | return 0; |
1010 | } | 1012 | } |
1011 | EXPORT_SYMBOL(hci_recv_frame); | 1013 | EXPORT_SYMBOL(hci_recv_frame); |
@@ -1216,8 +1218,9 @@ int hci_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen, void *param) | |||
1216 | 1218 | ||
1217 | bt_cb(skb)->pkt_type = HCI_COMMAND_PKT; | 1219 | bt_cb(skb)->pkt_type = HCI_COMMAND_PKT; |
1218 | skb->dev = (void *) hdev; | 1220 | skb->dev = (void *) hdev; |
1221 | |||
1219 | skb_queue_tail(&hdev->cmd_q, skb); | 1222 | skb_queue_tail(&hdev->cmd_q, skb); |
1220 | hci_sched_cmd(hdev); | 1223 | tasklet_schedule(&hdev->cmd_task); |
1221 | 1224 | ||
1222 | return 0; | 1225 | return 0; |
1223 | } | 1226 | } |
@@ -1294,7 +1297,8 @@ int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags) | |||
1294 | spin_unlock_bh(&conn->data_q.lock); | 1297 | spin_unlock_bh(&conn->data_q.lock); |
1295 | } | 1298 | } |
1296 | 1299 | ||
1297 | hci_sched_tx(hdev); | 1300 | tasklet_schedule(&hdev->tx_task); |
1301 | |||
1298 | return 0; | 1302 | return 0; |
1299 | } | 1303 | } |
1300 | EXPORT_SYMBOL(hci_send_acl); | 1304 | EXPORT_SYMBOL(hci_send_acl); |
@@ -1321,8 +1325,10 @@ int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb) | |||
1321 | 1325 | ||
1322 | skb->dev = (void *) hdev; | 1326 | skb->dev = (void *) hdev; |
1323 | bt_cb(skb)->pkt_type = HCI_SCODATA_PKT; | 1327 | bt_cb(skb)->pkt_type = HCI_SCODATA_PKT; |
1328 | |||
1324 | skb_queue_tail(&conn->data_q, skb); | 1329 | skb_queue_tail(&conn->data_q, skb); |
1325 | hci_sched_tx(hdev); | 1330 | tasklet_schedule(&hdev->tx_task); |
1331 | |||
1326 | return 0; | 1332 | return 0; |
1327 | } | 1333 | } |
1328 | EXPORT_SYMBOL(hci_send_sco); | 1334 | EXPORT_SYMBOL(hci_send_sco); |
@@ -1635,7 +1641,7 @@ static void hci_cmd_task(unsigned long arg) | |||
1635 | hdev->cmd_last_tx = jiffies; | 1641 | hdev->cmd_last_tx = jiffies; |
1636 | } else { | 1642 | } else { |
1637 | skb_queue_head(&hdev->cmd_q, skb); | 1643 | skb_queue_head(&hdev->cmd_q, skb); |
1638 | hci_sched_cmd(hdev); | 1644 | tasklet_schedule(&hdev->cmd_task); |
1639 | } | 1645 | } |
1640 | } | 1646 | } |
1641 | } | 1647 | } |
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index e99fe385fba2..28517bad796c 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
@@ -1320,7 +1320,7 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk | |||
1320 | if (ev->ncmd) { | 1320 | if (ev->ncmd) { |
1321 | atomic_set(&hdev->cmd_cnt, 1); | 1321 | atomic_set(&hdev->cmd_cnt, 1); |
1322 | if (!skb_queue_empty(&hdev->cmd_q)) | 1322 | if (!skb_queue_empty(&hdev->cmd_q)) |
1323 | hci_sched_cmd(hdev); | 1323 | tasklet_schedule(&hdev->cmd_task); |
1324 | } | 1324 | } |
1325 | } | 1325 | } |
1326 | 1326 | ||
@@ -1386,7 +1386,7 @@ static inline void hci_cmd_status_evt(struct hci_dev *hdev, struct sk_buff *skb) | |||
1386 | if (ev->ncmd) { | 1386 | if (ev->ncmd) { |
1387 | atomic_set(&hdev->cmd_cnt, 1); | 1387 | atomic_set(&hdev->cmd_cnt, 1); |
1388 | if (!skb_queue_empty(&hdev->cmd_q)) | 1388 | if (!skb_queue_empty(&hdev->cmd_q)) |
1389 | hci_sched_cmd(hdev); | 1389 | tasklet_schedule(&hdev->cmd_task); |
1390 | } | 1390 | } |
1391 | } | 1391 | } |
1392 | 1392 | ||
@@ -1454,7 +1454,7 @@ static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *s | |||
1454 | } | 1454 | } |
1455 | } | 1455 | } |
1456 | 1456 | ||
1457 | hci_sched_tx(hdev); | 1457 | tasklet_schedule(&hdev->tx_task); |
1458 | 1458 | ||
1459 | tasklet_enable(&hdev->tx_task); | 1459 | tasklet_enable(&hdev->tx_task); |
1460 | } | 1460 | } |
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index c3701f37aeb0..688cfebfbee0 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
@@ -445,10 +445,10 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, | |||
445 | 445 | ||
446 | if (test_bit(HCI_RAW, &hdev->flags) || (ogf == 0x3f)) { | 446 | if (test_bit(HCI_RAW, &hdev->flags) || (ogf == 0x3f)) { |
447 | skb_queue_tail(&hdev->raw_q, skb); | 447 | skb_queue_tail(&hdev->raw_q, skb); |
448 | hci_sched_tx(hdev); | 448 | tasklet_schedule(&hdev->tx_task); |
449 | } else { | 449 | } else { |
450 | skb_queue_tail(&hdev->cmd_q, skb); | 450 | skb_queue_tail(&hdev->cmd_q, skb); |
451 | hci_sched_cmd(hdev); | 451 | tasklet_schedule(&hdev->cmd_task); |
452 | } | 452 | } |
453 | } else { | 453 | } else { |
454 | if (!capable(CAP_NET_RAW)) { | 454 | if (!capable(CAP_NET_RAW)) { |
@@ -457,7 +457,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, | |||
457 | } | 457 | } |
458 | 458 | ||
459 | skb_queue_tail(&hdev->raw_q, skb); | 459 | skb_queue_tail(&hdev->raw_q, skb); |
460 | hci_sched_tx(hdev); | 460 | tasklet_schedule(&hdev->tx_task); |
461 | } | 461 | } |
462 | 462 | ||
463 | err = len; | 463 | err = len; |