diff options
Diffstat (limited to 'drivers/bluetooth/btuart_cs.c')
| -rw-r--r-- | drivers/bluetooth/btuart_cs.c | 36 | 
1 files changed, 11 insertions, 25 deletions
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index beb262f2dc4..fb948f02eda 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c @@ -149,7 +149,8 @@ static void btuart_write_wakeup(btuart_info_t *info)  		if (!pcmcia_dev_present(info->p_dev))  			return; -		if (!(skb = skb_dequeue(&(info->txq)))) +		skb = skb_dequeue(&(info->txq)); +		if (!skb)  			break;  		/* Send frame */ @@ -190,7 +191,8 @@ static void btuart_receive(btuart_info_t *info)  		if (info->rx_skb == NULL) {  			info->rx_state = RECV_WAIT_PACKET_TYPE;  			info->rx_count = 0; -			if (!(info->rx_skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { +			info->rx_skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC); +			if (!info->rx_skb) {  				BT_ERR("Can't allocate mem for new packet");  				return;  			} @@ -198,7 +200,6 @@ static void btuart_receive(btuart_info_t *info)  		if (info->rx_state == RECV_WAIT_PACKET_TYPE) { -			info->rx_skb->dev = (void *) info->hdev;  			bt_cb(info->rx_skb)->pkt_type = inb(iobase + UART_RX);  			switch (bt_cb(info->rx_skb)->pkt_type) { @@ -265,7 +266,7 @@ static void btuart_receive(btuart_info_t *info)  					break;  				case RECV_WAIT_DATA: -					hci_recv_frame(info->rx_skb); +					hci_recv_frame(info->hdev, info->rx_skb);  					info->rx_skb = NULL;  					break; @@ -424,17 +425,9 @@ static int btuart_hci_close(struct hci_dev *hdev)  } -static int btuart_hci_send_frame(struct sk_buff *skb) +static int btuart_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)  { -	btuart_info_t *info; -	struct hci_dev *hdev = (struct hci_dev *)(skb->dev); - -	if (!hdev) { -		BT_ERR("Frame for unknown HCI device (hdev=NULL)"); -		return -ENODEV; -	} - -	info = hci_get_drvdata(hdev); +	btuart_info_t *info = hci_get_drvdata(hdev);  	switch (bt_cb(skb)->pkt_type) {  	case HCI_COMMAND_PKT: @@ -458,12 +451,6 @@ static int btuart_hci_send_frame(struct sk_buff *skb)  } -static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) -{ -	return -ENOIOCTLCMD; -} - -  /* ======================== Card services HCI interaction ======================== */ @@ -495,11 +482,10 @@ static int btuart_open(btuart_info_t *info)  	hci_set_drvdata(hdev, info);  	SET_HCIDEV_DEV(hdev, &info->p_dev->dev); -	hdev->open     = btuart_hci_open; -	hdev->close    = btuart_hci_close; -	hdev->flush    = btuart_hci_flush; -	hdev->send     = btuart_hci_send_frame; -	hdev->ioctl    = btuart_hci_ioctl; +	hdev->open  = btuart_hci_open; +	hdev->close = btuart_hci_close; +	hdev->flush = btuart_hci_flush; +	hdev->send  = btuart_hci_send_frame;  	spin_lock_irqsave(&(info->lock), flags);  | 
