Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 618e8bc2 authored by Marcel Holtmann's avatar Marcel Holtmann
Browse files

Bluetooth: Use new hci_skb_pkt_* wrappers for drivers



The new hci_skb_pkt_* wrappers are mainly intented for drivers to
require less knowledge about bt_cb(sbk) handling. So after converting
the core packet handling, convert all drivers.

Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent d79f34e3
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -324,7 +324,7 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch
			return -ENOMEM;
			return -ENOMEM;
		}
		}


		bt_cb(skb)->pkt_type = pkt_type;
		hci_skb_pkt_type(skb) = pkt_type;


		data->reassembly = skb;
		data->reassembly = skb;
	} else {
	} else {
@@ -469,9 +469,10 @@ static int bfusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	unsigned char buf[3];
	unsigned char buf[3];
	int sent = 0, size, count;
	int sent = 0, size, count;


	BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, bt_cb(skb)->pkt_type, skb->len);
	BT_DBG("hdev %p skb %p type %d len %d", hdev, skb,
	       hci_skb_pkt_type(skb), skb->len);


	switch (bt_cb(skb)->pkt_type) {
	switch (hci_skb_pkt_type(skb)) {
	case HCI_COMMAND_PKT:
	case HCI_COMMAND_PKT:
		hdev->stat.cmd_tx++;
		hdev->stat.cmd_tx++;
		break;
		break;
@@ -484,7 +485,7 @@ static int bfusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	}
	}


	/* Prepend skb with frame type */
	/* Prepend skb with frame type */
	memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1);
	memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);


	count = skb->len;
	count = skb->len;


+13 −12
Original line number Original line Diff line number Diff line
@@ -261,7 +261,7 @@ static void bluecard_write_wakeup(struct bluecard_info *info)
		if (!skb)
		if (!skb)
			break;
			break;


		if (bt_cb(skb)->pkt_type & 0x80) {
		if (hci_skb_pkt_type(skb) & 0x80) {
			/* Disable RTS */
			/* Disable RTS */
			info->ctrl_reg |= REG_CONTROL_RTS;
			info->ctrl_reg |= REG_CONTROL_RTS;
			outb(info->ctrl_reg, iobase + REG_CONTROL);
			outb(info->ctrl_reg, iobase + REG_CONTROL);
@@ -279,13 +279,13 @@ static void bluecard_write_wakeup(struct bluecard_info *info)
		/* Mark the buffer as dirty */
		/* Mark the buffer as dirty */
		clear_bit(ready_bit, &(info->tx_state));
		clear_bit(ready_bit, &(info->tx_state));


		if (bt_cb(skb)->pkt_type & 0x80) {
		if (hci_skb_pkt_type(skb) & 0x80) {
			DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
			DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
			DEFINE_WAIT(wait);
			DEFINE_WAIT(wait);


			unsigned char baud_reg;
			unsigned char baud_reg;


			switch (bt_cb(skb)->pkt_type) {
			switch (hci_skb_pkt_type(skb)) {
			case PKT_BAUD_RATE_460800:
			case PKT_BAUD_RATE_460800:
				baud_reg = REG_CONTROL_BAUD_RATE_460800;
				baud_reg = REG_CONTROL_BAUD_RATE_460800;
				break;
				break;
@@ -402,9 +402,9 @@ static void bluecard_receive(struct bluecard_info *info,


		if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
		if (info->rx_state == RECV_WAIT_PACKET_TYPE) {


			bt_cb(info->rx_skb)->pkt_type = buf[i];
			hci_skb_pkt_type(info->rx_skb) = buf[i];


			switch (bt_cb(info->rx_skb)->pkt_type) {
			switch (hci_skb_pkt_type(info->rx_skb)) {


			case 0x00:
			case 0x00:
				/* init packet */
				/* init packet */
@@ -436,7 +436,8 @@ static void bluecard_receive(struct bluecard_info *info,


			default:
			default:
				/* unknown packet */
				/* unknown packet */
				BT_ERR("Unknown HCI packet with type 0x%02x received", bt_cb(info->rx_skb)->pkt_type);
				BT_ERR("Unknown HCI packet with type 0x%02x received",
				       hci_skb_pkt_type(info->rx_skb));
				info->hdev->stat.err_rx++;
				info->hdev->stat.err_rx++;


				kfree_skb(info->rx_skb);
				kfree_skb(info->rx_skb);
@@ -578,21 +579,21 @@ static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
	switch (baud) {
	switch (baud) {
	case 460800:
	case 460800:
		cmd[4] = 0x00;
		cmd[4] = 0x00;
		bt_cb(skb)->pkt_type = PKT_BAUD_RATE_460800;
		hci_skb_pkt_type(skb) = PKT_BAUD_RATE_460800;
		break;
		break;
	case 230400:
	case 230400:
		cmd[4] = 0x01;
		cmd[4] = 0x01;
		bt_cb(skb)->pkt_type = PKT_BAUD_RATE_230400;
		hci_skb_pkt_type(skb) = PKT_BAUD_RATE_230400;
		break;
		break;
	case 115200:
	case 115200:
		cmd[4] = 0x02;
		cmd[4] = 0x02;
		bt_cb(skb)->pkt_type = PKT_BAUD_RATE_115200;
		hci_skb_pkt_type(skb) = PKT_BAUD_RATE_115200;
		break;
		break;
	case 57600:
	case 57600:
		/* Fall through... */
		/* Fall through... */
	default:
	default:
		cmd[4] = 0x03;
		cmd[4] = 0x03;
		bt_cb(skb)->pkt_type = PKT_BAUD_RATE_57600;
		hci_skb_pkt_type(skb) = PKT_BAUD_RATE_57600;
		break;
		break;
	}
	}


@@ -660,7 +661,7 @@ static int bluecard_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
{
{
	struct bluecard_info *info = hci_get_drvdata(hdev);
	struct bluecard_info *info = hci_get_drvdata(hdev);


	switch (bt_cb(skb)->pkt_type) {
	switch (hci_skb_pkt_type(skb)) {
	case HCI_COMMAND_PKT:
	case HCI_COMMAND_PKT:
		hdev->stat.cmd_tx++;
		hdev->stat.cmd_tx++;
		break;
		break;
@@ -673,7 +674,7 @@ static int bluecard_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	}
	}


	/* Prepend skb with frame type */
	/* Prepend skb with frame type */
	memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1);
	memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);
	skb_queue_tail(&(info->txq), skb);
	skb_queue_tail(&(info->txq), skb);


	bluecard_write_wakeup(info);
	bluecard_write_wakeup(info);
+2 −2
Original line number Original line Diff line number Diff line
@@ -295,9 +295,9 @@ static int bpa10x_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
		return -ENOMEM;
		return -ENOMEM;


	/* Prepend skb with frame type */
	/* Prepend skb with frame type */
	*skb_push(skb, 1) = bt_cb(skb)->pkt_type;
	*skb_push(skb, 1) = hci_skb_pkt_type(skb);


	switch (bt_cb(skb)->pkt_type) {
	switch (hci_skb_pkt_type(skb)) {
	case HCI_COMMAND_PKT:
	case HCI_COMMAND_PKT:
		dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
		dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
		if (!dr) {
		if (!dr) {
+6 −5
Original line number Original line Diff line number Diff line
@@ -246,10 +246,10 @@ static void bt3c_receive(struct bt3c_info *info)


		if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
		if (info->rx_state == RECV_WAIT_PACKET_TYPE) {


			bt_cb(info->rx_skb)->pkt_type = inb(iobase + DATA_L);
			hci_skb_pkt_type(info->rx_skb) = inb(iobase + DATA_L);
			inb(iobase + DATA_H);
			inb(iobase + DATA_H);


			switch (bt_cb(info->rx_skb)->pkt_type) {
			switch (hci_skb_pkt_type(info->rx_skb)) {


			case HCI_EVENT_PKT:
			case HCI_EVENT_PKT:
				info->rx_state = RECV_WAIT_EVENT_HEADER;
				info->rx_state = RECV_WAIT_EVENT_HEADER;
@@ -268,7 +268,8 @@ static void bt3c_receive(struct bt3c_info *info)


			default:
			default:
				/* Unknown packet */
				/* Unknown packet */
				BT_ERR("Unknown HCI packet with type 0x%02x received", bt_cb(info->rx_skb)->pkt_type);
				BT_ERR("Unknown HCI packet with type 0x%02x received",
				       hci_skb_pkt_type(info->rx_skb));
				info->hdev->stat.err_rx++;
				info->hdev->stat.err_rx++;


				kfree_skb(info->rx_skb);
				kfree_skb(info->rx_skb);
@@ -411,7 +412,7 @@ static int bt3c_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	struct bt3c_info *info = hci_get_drvdata(hdev);
	struct bt3c_info *info = hci_get_drvdata(hdev);
	unsigned long flags;
	unsigned long flags;


	switch (bt_cb(skb)->pkt_type) {
	switch (hci_skb_pkt_type(skb)) {
	case HCI_COMMAND_PKT:
	case HCI_COMMAND_PKT:
		hdev->stat.cmd_tx++;
		hdev->stat.cmd_tx++;
		break;
		break;
@@ -424,7 +425,7 @@ static int bt3c_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
	}
	}


	/* Prepend skb with frame type */
	/* Prepend skb with frame type */
	memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1);
	memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);
	skb_queue_tail(&(info->txq), skb);
	skb_queue_tail(&(info->txq), skb);


	spin_lock_irqsave(&(info->lock), flags);
	spin_lock_irqsave(&(info->lock), flags);
+4 −4
Original line number Original line Diff line number Diff line
@@ -196,7 +196,7 @@ static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 opcode,
	if (len)
	if (len)
		memcpy(skb_put(skb, len), param, len);
		memcpy(skb_put(skb, len), param, len);


	bt_cb(skb)->pkt_type = MRVL_VENDOR_PKT;
	hci_skb_pkt_type(skb) = MRVL_VENDOR_PKT;


	skb_queue_head(&priv->adapter->tx_queue, skb);
	skb_queue_head(&priv->adapter->tx_queue, skb);


@@ -387,7 +387,7 @@ static int btmrvl_tx_pkt(struct btmrvl_private *priv, struct sk_buff *skb)
	skb->data[0] = (skb->len & 0x0000ff);
	skb->data[0] = (skb->len & 0x0000ff);
	skb->data[1] = (skb->len & 0x00ff00) >> 8;
	skb->data[1] = (skb->len & 0x00ff00) >> 8;
	skb->data[2] = (skb->len & 0xff0000) >> 16;
	skb->data[2] = (skb->len & 0xff0000) >> 16;
	skb->data[3] = bt_cb(skb)->pkt_type;
	skb->data[3] = hci_skb_pkt_type(skb);


	if (priv->hw_host_to_card)
	if (priv->hw_host_to_card)
		ret = priv->hw_host_to_card(priv, skb->data, skb->len);
		ret = priv->hw_host_to_card(priv, skb->data, skb->len);
@@ -434,9 +434,9 @@ static int btmrvl_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
{
{
	struct btmrvl_private *priv = hci_get_drvdata(hdev);
	struct btmrvl_private *priv = hci_get_drvdata(hdev);


	BT_DBG("type=%d, len=%d", skb->pkt_type, skb->len);
	BT_DBG("type=%d, len=%d", hci_skb_pkt_type(skb), skb->len);


	switch (bt_cb(skb)->pkt_type) {
	switch (hci_skb_pkt_type(skb)) {
	case HCI_COMMAND_PKT:
	case HCI_COMMAND_PKT:
		hdev->stat.cmd_tx++;
		hdev->stat.cmd_tx++;
		break;
		break;
Loading