From: Sebastian Reichel <sre@kernel.org>
To: Sebastian Reichel <sre@kernel.org>,
Marcel Holtmann <marcel@holtmann.org>,
Gustavo Padovan <gustavo@padovan.org>,
Johan Hedberg <johan.hedberg@gmail.com>,
Rob Herring <robh+dt@kernel.org>
Cc: Tony Lindgren <tony@atomide.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.com>, Mark Rutland <mark.rutland@arm.com>,
linux-bluetooth@vger.kernel.org, linux-serial@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 03/10] Bluetooth: hci_uart: add support for word alignment
Date: Sat, 4 Mar 2017 12:58:26 +0100 [thread overview]
Message-ID: <20170304115833.3538-4-sre@kernel.org> (raw)
In-Reply-To: <20170304115833.3538-1-sre@kernel.org>
This will be used by Nokia's H4+ protocol, which
uses 2-byte aligned packets.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
drivers/bluetooth/hci_h4.c | 17 +++++++++++++++++
drivers/bluetooth/hci_ldisc.c | 4 ++++
drivers/bluetooth/hci_uart.h | 3 +++
3 files changed, 24 insertions(+)
diff --git a/drivers/bluetooth/hci_h4.c b/drivers/bluetooth/hci_h4.c
index 635597b6e168..9c59807ebbdd 100644
--- a/drivers/bluetooth/hci_h4.c
+++ b/drivers/bluetooth/hci_h4.c
@@ -171,9 +171,20 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
const unsigned char *buffer, int count,
const struct h4_recv_pkt *pkts, int pkts_count)
{
+ struct hci_uart *hu = hci_get_drvdata(hdev);
+ uint8_t alignment = hu->alignment;
+
while (count) {
int i, len;
+ /* remove padding bytes from buffer */
+ for (; hu->padding && count > 0; hu->padding--) {
+ count--;
+ buffer++;
+ }
+ if (!count)
+ break;
+
if (!skb) {
for (i = 0; i < pkts_count; i++) {
if (buffer[0] != (&pkts[i])->type)
@@ -253,11 +264,17 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
}
if (!dlen) {
+ hu->padding = (skb->len - 1) % alignment;
+ hu->padding = (alignment - hu->padding) % alignment;
+
/* No more data, complete frame */
(&pkts[i])->recv(hdev, skb);
skb = NULL;
}
} else {
+ hu->padding = (skb->len - 1) % alignment;
+ hu->padding = (alignment - hu->padding) % alignment;
+
/* Complete frame */
(&pkts[i])->recv(hdev, skb);
skb = NULL;
diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
index 9497c469efd2..0ec8a94bd712 100644
--- a/drivers/bluetooth/hci_ldisc.c
+++ b/drivers/bluetooth/hci_ldisc.c
@@ -459,6 +459,10 @@ static int hci_uart_tty_open(struct tty_struct *tty)
hu->tty = tty;
tty->receive_room = 65536;
+ /* disable alignment support by default */
+ hu->alignment = 1;
+ hu->padding = 0;
+
INIT_WORK(&hu->init_ready, hci_uart_init_work);
INIT_WORK(&hu->write_work, hci_uart_write_work);
diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h
index 070139513e65..4aff50960cac 100644
--- a/drivers/bluetooth/hci_uart.h
+++ b/drivers/bluetooth/hci_uart.h
@@ -92,6 +92,9 @@ struct hci_uart {
unsigned int init_speed;
unsigned int oper_speed;
+
+ u8 alignment;
+ u8 padding;
};
/* HCI_UART proto flag bits */
--
2.11.0
next prev parent reply other threads:[~2017-03-04 11:58 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-04 11:58 [PATCH 00/10] Nokia H4+ support Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 01/10] ARM: dts: N9/N950: add bluetooth Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-06 16:08 ` Tony Lindgren
2017-03-06 16:08 ` Tony Lindgren
2017-03-17 15:25 ` Pavel Machek
2017-03-18 0:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 02/10] ARM: dts: N900: Add bluetooth Sebastian Reichel
2017-03-06 16:08 ` Tony Lindgren
2017-03-06 16:08 ` Tony Lindgren
2017-03-07 16:31 ` Rob Herring
2017-03-07 16:31 ` Rob Herring
2017-03-07 16:37 ` Tony Lindgren
2017-03-07 16:37 ` Tony Lindgren
2017-03-17 15:25 ` Pavel Machek
2017-03-17 15:25 ` Pavel Machek
2017-03-04 11:58 ` Sebastian Reichel [this message]
2017-03-17 15:25 ` [PATCH 03/10] Bluetooth: hci_uart: add support for word alignment Pavel Machek
2017-03-17 15:25 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 04/10] Bluetooth: hci_uart: add serdev driver support library Sebastian Reichel
2017-03-17 15:26 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 05/10] Bluetooth: hci_serdev: do not open device in hci open Sebastian Reichel
2017-03-17 15:26 ` Pavel Machek
2017-03-04 11:58 ` [PATCH 06/10] tty: serial: omap: add UPF_BOOT_AUTOCONF flag for DT init Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 07/10] serdev: add serdev_device_wait_until_sent Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-07 15:34 ` Rob Herring
2017-03-07 15:55 ` Sebastian Reichel
2017-03-07 15:55 ` Sebastian Reichel
2017-03-07 16:46 ` Rob Herring
2017-03-07 16:46 ` Rob Herring
2017-03-04 11:58 ` [PATCH 08/10] serdev: add serdev_device_get_cts Sebastian Reichel
2017-03-07 16:03 ` Rob Herring
2017-03-07 16:03 ` Rob Herring
2017-03-07 21:12 ` Sebastian Reichel
2017-03-07 21:12 ` Sebastian Reichel
2017-03-08 15:13 ` Rob Herring
2017-03-04 11:58 ` [PATCH 09/10] serdev: add serdev_device_set_rts Sebastian Reichel
2017-03-04 11:58 ` Sebastian Reichel
2017-03-07 16:07 ` Rob Herring
2017-03-07 16:07 ` Rob Herring
2017-03-07 21:18 ` Sebastian Reichel
2017-03-07 21:18 ` Sebastian Reichel
2017-03-04 11:58 ` [PATCH 10/10] Bluetooth: add nokia driver Sebastian Reichel
2017-03-07 16:30 ` Rob Herring
2017-03-07 16:30 ` Rob Herring
2017-03-07 21:08 ` Sebastian Reichel
2017-03-07 21:08 ` Sebastian Reichel
2017-03-07 21:20 ` Marcel Holtmann
2017-03-07 21:20 ` Marcel Holtmann
2017-03-07 23:06 ` Sebastian Reichel
2017-03-07 23:06 ` Sebastian Reichel
2017-03-08 14:26 ` Rob Herring
2017-03-17 15:26 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170304115833.3538-4-sre@kernel.org \
--to=sre@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=gustavo@padovan.org \
--cc=johan.hedberg@gmail.com \
--cc=jslaby@suse.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=marcel@holtmann.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.