diff options
| -rw-r--r-- | drivers/bluetooth/bluecard_cs.c | 6 | ||||
| -rw-r--r-- | drivers/bluetooth/bt3c_cs.c | 6 | ||||
| -rw-r--r-- | drivers/bluetooth/btuart_cs.c | 6 | ||||
| -rw-r--r-- | drivers/bluetooth/hci_h4.c | 6 | ||||
| -rw-r--r-- | include/net/bluetooth/hci.h | 18 | 
5 files changed, 30 insertions, 12 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c index acfb6a430dc..851de4d5b7d 100644 --- a/drivers/bluetooth/bluecard_cs.c +++ b/drivers/bluetooth/bluecard_cs.c @@ -461,20 +461,20 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset)  				switch (info->rx_state) {  				case RECV_WAIT_EVENT_HEADER: -					eh = (struct hci_event_hdr *)(info->rx_skb->data); +					eh = hci_event_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = eh->plen;  					break;  				case RECV_WAIT_ACL_HEADER: -					ah = (struct hci_acl_hdr *)(info->rx_skb->data); +					ah = hci_acl_hdr(info->rx_skb);  					dlen = __le16_to_cpu(ah->dlen);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = dlen;  					break;  				case RECV_WAIT_SCO_HEADER: -					sh = (struct hci_sco_hdr *)(info->rx_skb->data); +					sh = hci_sco_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = sh->dlen;  					break; diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c index 18b0f3992c5..39516074636 100644 --- a/drivers/bluetooth/bt3c_cs.c +++ b/drivers/bluetooth/bt3c_cs.c @@ -303,20 +303,20 @@ static void bt3c_receive(bt3c_info_t *info)  				switch (info->rx_state) {  				case RECV_WAIT_EVENT_HEADER: -					eh = (struct hci_event_hdr *)(info->rx_skb->data); +					eh = hci_event_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = eh->plen;  					break;  				case RECV_WAIT_ACL_HEADER: -					ah = (struct hci_acl_hdr *)(info->rx_skb->data); +					ah = hci_acl_hdr(info->rx_skb);  					dlen = __le16_to_cpu(ah->dlen);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = dlen;  					break;  				case RECV_WAIT_SCO_HEADER: -					sh = (struct hci_sco_hdr *)(info->rx_skb->data); +					sh = hci_sco_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = sh->dlen;  					break; diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index c1bce75148f..d7d2ea0d86a 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c @@ -250,20 +250,20 @@ static void btuart_receive(btuart_info_t *info)  				switch (info->rx_state) {  				case RECV_WAIT_EVENT_HEADER: -					eh = (struct hci_event_hdr *)(info->rx_skb->data); +					eh = hci_event_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = eh->plen;  					break;  				case RECV_WAIT_ACL_HEADER: -					ah = (struct hci_acl_hdr *)(info->rx_skb->data); +					ah = hci_acl_hdr(info->rx_skb);  					dlen = __le16_to_cpu(ah->dlen);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = dlen;  					break;  				case RECV_WAIT_SCO_HEADER: -					sh = (struct hci_sco_hdr *)(info->rx_skb->data); +					sh = hci_sco_hdr(info->rx_skb);  					info->rx_state = RECV_WAIT_DATA;  					info->rx_count = sh->dlen;  					break; diff --git a/drivers/bluetooth/hci_h4.c b/drivers/bluetooth/hci_h4.c index 34f0afc4240..bfbae14cf93 100644 --- a/drivers/bluetooth/hci_h4.c +++ b/drivers/bluetooth/hci_h4.c @@ -188,7 +188,7 @@ static int h4_recv(struct hci_uart *hu, void *data, int count)  				continue;  			case H4_W4_EVENT_HDR: -				eh = (struct hci_event_hdr *) h4->rx_skb->data; +				eh = hci_event_hdr(h4->rx_skb);  				BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen); @@ -196,7 +196,7 @@ static int h4_recv(struct hci_uart *hu, void *data, int count)  				continue;  			case H4_W4_ACL_HDR: -				ah = (struct hci_acl_hdr *) h4->rx_skb->data; +				ah = hci_acl_hdr(h4->rx_skb);  				dlen = __le16_to_cpu(ah->dlen);  				BT_DBG("ACL header: dlen %d", dlen); @@ -205,7 +205,7 @@ static int h4_recv(struct hci_uart *hu, void *data, int count)  				continue;  			case H4_W4_SCO_HDR: -				sh = (struct hci_sco_hdr *) h4->rx_skb->data; +				sh = hci_sco_hdr(h4->rx_skb);  				BT_DBG("SCO header: dlen %d", sh->dlen); diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 41456c14884..93ce272a5d2 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -709,6 +709,24 @@ struct hci_sco_hdr {  	__u8 	dlen;  } __attribute__ ((packed)); +#ifdef __KERNEL__ +#include <linux/skbuff.h> +static inline struct hci_event_hdr *hci_event_hdr(const struct sk_buff *skb) +{ +	return (struct hci_event_hdr *)skb->data; +} + +static inline struct hci_acl_hdr *hci_acl_hdr(const struct sk_buff *skb) +{ +	return (struct hci_acl_hdr *)skb->data; +} + +static inline struct hci_sco_hdr *hci_sco_hdr(const struct sk_buff *skb) +{ +	return (struct hci_sco_hdr *)skb->data; +} +#endif +  /* Command opcode pack/unpack */  #define hci_opcode_pack(ogf, ocf)	(__u16) ((ocf & 0x03ff)|(ogf << 10))  #define hci_opcode_ogf(op)		(op >> 10)  |