diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2013-10-10 19:52:43 -0400 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-10-11 03:45:34 -0400 |
commit | e1a26170692dc1e5fbe0ccd98ef86cc9fcd31a64 (patch) | |
tree | e0960ade9f09c39dc44c92604e7f758760ea1fce /drivers/bluetooth | |
parent | 8909f6d2c450d0a878bcb1d1184ed0114c5724c9 (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')
-rw-r--r-- | drivers/bluetooth/bfusb.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/bluecard_cs.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/bpa10x.c | 4 | ||||
-rw-r--r-- | drivers/bluetooth/bt3c_cs.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/btmrvl_sdio.c | 8 | ||||
-rw-r--r-- | drivers/bluetooth/btsdio.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/btuart_cs.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/btwilink.c | 4 | ||||
-rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 3 | ||||
-rw-r--r-- | drivers/bluetooth/hci_bcsp.c | 5 | ||||
-rw-r--r-- | drivers/bluetooth/hci_h5.c | 2 | ||||
-rw-r--r-- | drivers/bluetooth/hci_ll.c | 13 | ||||
-rw-r--r-- | drivers/bluetooth/hci_vhci.c | 3 |
13 files changed, 21 insertions, 36 deletions
diff --git a/drivers/bluetooth/bfusb.c b/drivers/bluetooth/bfusb.c index 66faad0c6237..b7b5bb879f08 100644 --- a/drivers/bluetooth/bfusb.c +++ b/drivers/bluetooth/bfusb.c | |||
@@ -318,7 +318,6 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch | |||
318 | return -ENOMEM; | 318 | return -ENOMEM; |
319 | } | 319 | } |
320 | 320 | ||
321 | skb->dev = (void *) data->hdev; | ||
322 | bt_cb(skb)->pkt_type = pkt_type; | 321 | bt_cb(skb)->pkt_type = pkt_type; |
323 | 322 | ||
324 | data->reassembly = skb; | 323 | data->reassembly = skb; |
@@ -333,7 +332,7 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch | |||
333 | memcpy(skb_put(data->reassembly, len), buf, len); | 332 | memcpy(skb_put(data->reassembly, len), buf, len); |
334 | 333 | ||
335 | if (hdr & 0x08) { | 334 | if (hdr & 0x08) { |
336 | hci_recv_frame(data->reassembly); | 335 | hci_recv_frame(data->hdev, data->reassembly); |
337 | data->reassembly = NULL; | 336 | data->reassembly = NULL; |
338 | } | 337 | } |
339 | 338 | ||
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c index aa872c9b3fc2..395acde99d78 100644 --- a/drivers/bluetooth/bluecard_cs.c +++ b/drivers/bluetooth/bluecard_cs.c | |||
@@ -399,7 +399,6 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset) | |||
399 | 399 | ||
400 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { | 400 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { |
401 | 401 | ||
402 | info->rx_skb->dev = (void *) info->hdev; | ||
403 | bt_cb(info->rx_skb)->pkt_type = buf[i]; | 402 | bt_cb(info->rx_skb)->pkt_type = buf[i]; |
404 | 403 | ||
405 | switch (bt_cb(info->rx_skb)->pkt_type) { | 404 | switch (bt_cb(info->rx_skb)->pkt_type) { |
@@ -477,7 +476,7 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset) | |||
477 | break; | 476 | break; |
478 | 477 | ||
479 | case RECV_WAIT_DATA: | 478 | case RECV_WAIT_DATA: |
480 | hci_recv_frame(info->rx_skb); | 479 | hci_recv_frame(info->hdev, info->rx_skb); |
481 | info->rx_skb = NULL; | 480 | info->rx_skb = NULL; |
482 | break; | 481 | break; |
483 | 482 | ||
diff --git a/drivers/bluetooth/bpa10x.c b/drivers/bluetooth/bpa10x.c index 2fe4a8031348..3188fb48bf4b 100644 --- a/drivers/bluetooth/bpa10x.c +++ b/drivers/bluetooth/bpa10x.c | |||
@@ -129,8 +129,6 @@ static int bpa10x_recv(struct hci_dev *hdev, int queue, void *buf, int count) | |||
129 | return -ENOMEM; | 129 | return -ENOMEM; |
130 | } | 130 | } |
131 | 131 | ||
132 | skb->dev = (void *) hdev; | ||
133 | |||
134 | data->rx_skb[queue] = skb; | 132 | data->rx_skb[queue] = skb; |
135 | 133 | ||
136 | scb = (void *) skb->cb; | 134 | scb = (void *) skb->cb; |
@@ -155,7 +153,7 @@ static int bpa10x_recv(struct hci_dev *hdev, int queue, void *buf, int count) | |||
155 | data->rx_skb[queue] = NULL; | 153 | data->rx_skb[queue] = NULL; |
156 | 154 | ||
157 | bt_cb(skb)->pkt_type = scb->type; | 155 | bt_cb(skb)->pkt_type = scb->type; |
158 | hci_recv_frame(skb); | 156 | hci_recv_frame(hdev, skb); |
159 | } | 157 | } |
160 | 158 | ||
161 | count -= len; buf += len; | 159 | count -= len; buf += len; |
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c index 673455cbde4c..d8e4b0d7926e 100644 --- a/drivers/bluetooth/bt3c_cs.c +++ b/drivers/bluetooth/bt3c_cs.c | |||
@@ -247,7 +247,6 @@ static void bt3c_receive(bt3c_info_t *info) | |||
247 | 247 | ||
248 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { | 248 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { |
249 | 249 | ||
250 | info->rx_skb->dev = (void *) info->hdev; | ||
251 | bt_cb(info->rx_skb)->pkt_type = inb(iobase + DATA_L); | 250 | bt_cb(info->rx_skb)->pkt_type = inb(iobase + DATA_L); |
252 | inb(iobase + DATA_H); | 251 | inb(iobase + DATA_H); |
253 | //printk("bt3c: PACKET_TYPE=%02x\n", bt_cb(info->rx_skb)->pkt_type); | 252 | //printk("bt3c: PACKET_TYPE=%02x\n", bt_cb(info->rx_skb)->pkt_type); |
@@ -318,7 +317,7 @@ static void bt3c_receive(bt3c_info_t *info) | |||
318 | break; | 317 | break; |
319 | 318 | ||
320 | case RECV_WAIT_DATA: | 319 | case RECV_WAIT_DATA: |
321 | hci_recv_frame(info->rx_skb); | 320 | hci_recv_frame(info->hdev, info->rx_skb); |
322 | info->rx_skb = NULL; | 321 | info->rx_skb = NULL; |
323 | break; | 322 | break; |
324 | 323 | ||
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c index 332475e400cf..fabcf5bb48af 100644 --- a/drivers/bluetooth/btmrvl_sdio.c +++ b/drivers/bluetooth/btmrvl_sdio.c | |||
@@ -600,15 +600,14 @@ static int btmrvl_sdio_card_to_host(struct btmrvl_private *priv) | |||
600 | case HCI_SCODATA_PKT: | 600 | case HCI_SCODATA_PKT: |
601 | case HCI_EVENT_PKT: | 601 | case HCI_EVENT_PKT: |
602 | bt_cb(skb)->pkt_type = type; | 602 | bt_cb(skb)->pkt_type = type; |
603 | skb->dev = (void *)hdev; | ||
604 | skb_put(skb, buf_len); | 603 | skb_put(skb, buf_len); |
605 | skb_pull(skb, SDIO_HEADER_LEN); | 604 | skb_pull(skb, SDIO_HEADER_LEN); |
606 | 605 | ||
607 | if (type == HCI_EVENT_PKT) { | 606 | if (type == HCI_EVENT_PKT) { |
608 | if (btmrvl_check_evtpkt(priv, skb)) | 607 | if (btmrvl_check_evtpkt(priv, skb)) |
609 | hci_recv_frame(skb); | 608 | hci_recv_frame(hdev, skb); |
610 | } else { | 609 | } else { |
611 | hci_recv_frame(skb); | 610 | hci_recv_frame(hdev, skb); |
612 | } | 611 | } |
613 | 612 | ||
614 | hdev->stat.byte_rx += buf_len; | 613 | hdev->stat.byte_rx += buf_len; |
@@ -616,12 +615,11 @@ static int btmrvl_sdio_card_to_host(struct btmrvl_private *priv) | |||
616 | 615 | ||
617 | case MRVL_VENDOR_PKT: | 616 | case MRVL_VENDOR_PKT: |
618 | bt_cb(skb)->pkt_type = HCI_VENDOR_PKT; | 617 | bt_cb(skb)->pkt_type = HCI_VENDOR_PKT; |
619 | skb->dev = (void *)hdev; | ||
620 | skb_put(skb, buf_len); | 618 | skb_put(skb, buf_len); |
621 | skb_pull(skb, SDIO_HEADER_LEN); | 619 | skb_pull(skb, SDIO_HEADER_LEN); |
622 | 620 | ||
623 | if (btmrvl_process_event(priv, skb)) | 621 | if (btmrvl_process_event(priv, skb)) |
624 | hci_recv_frame(skb); | 622 | hci_recv_frame(hdev, skb); |
625 | 623 | ||
626 | hdev->stat.byte_rx += buf_len; | 624 | hdev->stat.byte_rx += buf_len; |
627 | break; | 625 | break; |
diff --git a/drivers/bluetooth/btsdio.c b/drivers/bluetooth/btsdio.c index 4a9909713874..72fe49e60359 100644 --- a/drivers/bluetooth/btsdio.c +++ b/drivers/bluetooth/btsdio.c | |||
@@ -157,10 +157,9 @@ static int btsdio_rx_packet(struct btsdio_data *data) | |||
157 | 157 | ||
158 | data->hdev->stat.byte_rx += len; | 158 | data->hdev->stat.byte_rx += len; |
159 | 159 | ||
160 | skb->dev = (void *) data->hdev; | ||
161 | bt_cb(skb)->pkt_type = hdr[3]; | 160 | bt_cb(skb)->pkt_type = hdr[3]; |
162 | 161 | ||
163 | err = hci_recv_frame(skb); | 162 | err = hci_recv_frame(data->hdev, skb); |
164 | if (err < 0) | 163 | if (err < 0) |
165 | return err; | 164 | return err; |
166 | 165 | ||
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index 970e2d3dd3c2..d0b89ecf1c59 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c | |||
@@ -198,7 +198,6 @@ static void btuart_receive(btuart_info_t *info) | |||
198 | 198 | ||
199 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { | 199 | if (info->rx_state == RECV_WAIT_PACKET_TYPE) { |
200 | 200 | ||
201 | info->rx_skb->dev = (void *) info->hdev; | ||
202 | bt_cb(info->rx_skb)->pkt_type = inb(iobase + UART_RX); | 201 | bt_cb(info->rx_skb)->pkt_type = inb(iobase + UART_RX); |
203 | 202 | ||
204 | switch (bt_cb(info->rx_skb)->pkt_type) { | 203 | switch (bt_cb(info->rx_skb)->pkt_type) { |
@@ -265,7 +264,7 @@ static void btuart_receive(btuart_info_t *info) | |||
265 | break; | 264 | break; |
266 | 265 | ||
267 | case RECV_WAIT_DATA: | 266 | case RECV_WAIT_DATA: |
268 | hci_recv_frame(info->rx_skb); | 267 | hci_recv_frame(info->hdev, info->rx_skb); |
269 | info->rx_skb = NULL; | 268 | info->rx_skb = NULL; |
270 | break; | 269 | break; |
271 | 270 | ||
diff --git a/drivers/bluetooth/btwilink.c b/drivers/bluetooth/btwilink.c index 60abf596f60e..5e10fb0a7e05 100644 --- a/drivers/bluetooth/btwilink.c +++ b/drivers/bluetooth/btwilink.c | |||
@@ -108,10 +108,8 @@ static long st_receive(void *priv_data, struct sk_buff *skb) | |||
108 | return -EFAULT; | 108 | return -EFAULT; |
109 | } | 109 | } |
110 | 110 | ||
111 | skb->dev = (void *) lhst->hdev; | ||
112 | |||
113 | /* Forward skb to HCI core layer */ | 111 | /* Forward skb to HCI core layer */ |
114 | err = hci_recv_frame(skb); | 112 | err = hci_recv_frame(lhst->hdev, skb); |
115 | if (err < 0) { | 113 | if (err < 0) { |
116 | BT_ERR("Unable to push skb to HCI core(%d)", err); | 114 | BT_ERR("Unable to push skb to HCI core(%d)", err); |
117 | return err; | 115 | return err; |
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index c43aff8ec995..29451413bc04 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c | |||
@@ -256,9 +256,8 @@ static void dtl1_receive(dtl1_info_t *info) | |||
256 | case 0x83: | 256 | case 0x83: |
257 | case 0x84: | 257 | case 0x84: |
258 | /* send frame to the HCI layer */ | 258 | /* send frame to the HCI layer */ |
259 | info->rx_skb->dev = (void *) info->hdev; | ||
260 | bt_cb(info->rx_skb)->pkt_type &= 0x0f; | 259 | bt_cb(info->rx_skb)->pkt_type &= 0x0f; |
261 | hci_recv_frame(info->rx_skb); | 260 | hci_recv_frame(info->hdev, info->rx_skb); |
262 | break; | 261 | break; |
263 | default: | 262 | default: |
264 | /* unknown packet */ | 263 | /* unknown packet */ |
diff --git a/drivers/bluetooth/hci_bcsp.c b/drivers/bluetooth/hci_bcsp.c index 57e502e06080..0bc87f7abd95 100644 --- a/drivers/bluetooth/hci_bcsp.c +++ b/drivers/bluetooth/hci_bcsp.c | |||
@@ -522,7 +522,7 @@ static void bcsp_complete_rx_pkt(struct hci_uart *hu) | |||
522 | memcpy(skb_push(bcsp->rx_skb, HCI_EVENT_HDR_SIZE), &hdr, HCI_EVENT_HDR_SIZE); | 522 | memcpy(skb_push(bcsp->rx_skb, HCI_EVENT_HDR_SIZE), &hdr, HCI_EVENT_HDR_SIZE); |
523 | bt_cb(bcsp->rx_skb)->pkt_type = HCI_EVENT_PKT; | 523 | bt_cb(bcsp->rx_skb)->pkt_type = HCI_EVENT_PKT; |
524 | 524 | ||
525 | hci_recv_frame(bcsp->rx_skb); | 525 | hci_recv_frame(hu->hdev, bcsp->rx_skb); |
526 | } else { | 526 | } else { |
527 | BT_ERR ("Packet for unknown channel (%u %s)", | 527 | BT_ERR ("Packet for unknown channel (%u %s)", |
528 | bcsp->rx_skb->data[1] & 0x0f, | 528 | bcsp->rx_skb->data[1] & 0x0f, |
@@ -536,7 +536,7 @@ static void bcsp_complete_rx_pkt(struct hci_uart *hu) | |||
536 | /* Pull out BCSP hdr */ | 536 | /* Pull out BCSP hdr */ |
537 | skb_pull(bcsp->rx_skb, 4); | 537 | skb_pull(bcsp->rx_skb, 4); |
538 | 538 | ||
539 | hci_recv_frame(bcsp->rx_skb); | 539 | hci_recv_frame(hu->hdev, bcsp->rx_skb); |
540 | } | 540 | } |
541 | 541 | ||
542 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; | 542 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; |
@@ -655,7 +655,6 @@ static int bcsp_recv(struct hci_uart *hu, void *data, int count) | |||
655 | bcsp->rx_count = 0; | 655 | bcsp->rx_count = 0; |
656 | return 0; | 656 | return 0; |
657 | } | 657 | } |
658 | bcsp->rx_skb->dev = (void *) hu->hdev; | ||
659 | break; | 658 | break; |
660 | } | 659 | } |
661 | break; | 660 | break; |
diff --git a/drivers/bluetooth/hci_h5.c b/drivers/bluetooth/hci_h5.c index b6154d5a07a5..f6f497450560 100644 --- a/drivers/bluetooth/hci_h5.c +++ b/drivers/bluetooth/hci_h5.c | |||
@@ -340,7 +340,7 @@ static void h5_complete_rx_pkt(struct hci_uart *hu) | |||
340 | /* Remove Three-wire header */ | 340 | /* Remove Three-wire header */ |
341 | skb_pull(h5->rx_skb, 4); | 341 | skb_pull(h5->rx_skb, 4); |
342 | 342 | ||
343 | hci_recv_frame(h5->rx_skb); | 343 | hci_recv_frame(hu->hdev, h5->rx_skb); |
344 | h5->rx_skb = NULL; | 344 | h5->rx_skb = NULL; |
345 | 345 | ||
346 | break; | 346 | break; |
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 | ||
349 | static inline int ll_check_data_len(struct ll_struct *ll, int len) | 349 | static 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 | ||
diff --git a/drivers/bluetooth/hci_vhci.c b/drivers/bluetooth/hci_vhci.c index c04a3e6fb37c..0fd522e85a71 100644 --- a/drivers/bluetooth/hci_vhci.c +++ b/drivers/bluetooth/hci_vhci.c | |||
@@ -179,10 +179,9 @@ static inline ssize_t vhci_get_user(struct vhci_data *data, | |||
179 | return -ENODEV; | 179 | return -ENODEV; |
180 | } | 180 | } |
181 | 181 | ||
182 | skb->dev = (void *) data->hdev; | ||
183 | bt_cb(skb)->pkt_type = pkt_type; | 182 | bt_cb(skb)->pkt_type = pkt_type; |
184 | 183 | ||
185 | ret = hci_recv_frame(skb); | 184 | ret = hci_recv_frame(data->hdev, skb); |
186 | break; | 185 | break; |
187 | 186 | ||
188 | case HCI_VENDOR_PKT: | 187 | case HCI_VENDOR_PKT: |