aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/hci_ll.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-10 19:52:43 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-11 03:45:34 -0400
commite1a26170692dc1e5fbe0ccd98ef86cc9fcd31a64 (patch)
treee0960ade9f09c39dc44c92604e7f758760ea1fce /drivers/bluetooth/hci_ll.c
parent8909f6d2c450d0a878bcb1d1184ed0114c5724c9 (diff)
Bluetooth: Provide hdev parameter to hci_recv_frame() driver callback
To avoid casting skb->dev into hdev, just let the drivers provide the hdev directly when calling hci_recv_frame() function. This patch also fixes up all drivers to provide the hdev. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'drivers/bluetooth/hci_ll.c')
-rw-r--r--drivers/bluetooth/hci_ll.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/bluetooth/hci_ll.c b/drivers/bluetooth/hci_ll.c
index cfc767938589..58a9541feba6 100644
--- a/drivers/bluetooth/hci_ll.c
+++ b/drivers/bluetooth/hci_ll.c
@@ -346,14 +346,14 @@ static int ll_enqueue(struct hci_uart *hu, struct sk_buff *skb)
346 return 0; 346 return 0;
347} 347}
348 348
349static inline int ll_check_data_len(struct ll_struct *ll, int len) 349static inline int ll_check_data_len(struct hci_dev *hdev, struct ll_struct *ll, int len)
350{ 350{
351 int room = skb_tailroom(ll->rx_skb); 351 int room = skb_tailroom(ll->rx_skb);
352 352
353 BT_DBG("len %d room %d", len, room); 353 BT_DBG("len %d room %d", len, room);
354 354
355 if (!len) { 355 if (!len) {
356 hci_recv_frame(ll->rx_skb); 356 hci_recv_frame(hdev, ll->rx_skb);
357 } else if (len > room) { 357 } else if (len > room) {
358 BT_ERR("Data length is too large"); 358 BT_ERR("Data length is too large");
359 kfree_skb(ll->rx_skb); 359 kfree_skb(ll->rx_skb);
@@ -395,7 +395,7 @@ static int ll_recv(struct hci_uart *hu, void *data, int count)
395 switch (ll->rx_state) { 395 switch (ll->rx_state) {
396 case HCILL_W4_DATA: 396 case HCILL_W4_DATA:
397 BT_DBG("Complete data"); 397 BT_DBG("Complete data");
398 hci_recv_frame(ll->rx_skb); 398 hci_recv_frame(hu->hdev, ll->rx_skb);
399 399
400 ll->rx_state = HCILL_W4_PACKET_TYPE; 400 ll->rx_state = HCILL_W4_PACKET_TYPE;
401 ll->rx_skb = NULL; 401 ll->rx_skb = NULL;
@@ -406,7 +406,7 @@ static int ll_recv(struct hci_uart *hu, void *data, int count)
406 406
407 BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen); 407 BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen);
408 408
409 ll_check_data_len(ll, eh->plen); 409 ll_check_data_len(hu->hdev, ll, eh->plen);
410 continue; 410 continue;
411 411
412 case HCILL_W4_ACL_HDR: 412 case HCILL_W4_ACL_HDR:
@@ -415,7 +415,7 @@ static int ll_recv(struct hci_uart *hu, void *data, int count)
415 415
416 BT_DBG("ACL header: dlen %d", dlen); 416 BT_DBG("ACL header: dlen %d", dlen);
417 417
418 ll_check_data_len(ll, dlen); 418 ll_check_data_len(hu->hdev, ll, dlen);
419 continue; 419 continue;
420 420
421 case HCILL_W4_SCO_HDR: 421 case HCILL_W4_SCO_HDR:
@@ -423,7 +423,7 @@ static int ll_recv(struct hci_uart *hu, void *data, int count)
423 423
424 BT_DBG("SCO header: dlen %d", sh->dlen); 424 BT_DBG("SCO header: dlen %d", sh->dlen);
425 425
426 ll_check_data_len(ll, sh->dlen); 426 ll_check_data_len(hu->hdev, ll, sh->dlen);
427 continue; 427 continue;
428 } 428 }
429 } 429 }
@@ -494,7 +494,6 @@ static int ll_recv(struct hci_uart *hu, void *data, int count)
494 return -ENOMEM; 494 return -ENOMEM;
495 } 495 }
496 496
497 ll->rx_skb->dev = (void *) hu->hdev;
498 bt_cb(ll->rx_skb)->pkt_type = type; 497 bt_cb(ll->rx_skb)->pkt_type = type;
499 } 498 }
500 499