2009-09-10 17:40:57

by SephirXV

[permalink] [raw]
Subject: [PATCH 2/3] bluetooth: hidp+hidraw write support

From: Christopher Olson <[email protected]>

somewhere before .28, non-compliant HIDP devices would connect, and
could be read from, but writing to the device had no effect.

Signed-off-by: Christopher Olson <[email protected]>

---

--- net/bluetooth/hidp/core.c 2009-09-10 09:32:20.000000000 -0500
+++ net/bluetooth/hidp/core.c.2 2009-09-10 09:41:37.000000000 -0500
@@ -40,6 +40,7 @@

#include <linux/input.h>
#include <linux/hid.h>
+#include <linux/hidraw.h>

#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
@@ -513,6 +514,11 @@ static void hidp_process_transmit(struct
kfree_skb(skb);
}
}
+
+static int hidp_output_raw_report(struct hid_device *hid, __u8 *buf,
size_t count)
+{
+ return hidp_send_ctrl_message(hid->driver_data, buf[0], buf +
1, count - 1);
+}

static int hidp_session(void *arg)
{
@@ -781,6 +787,7 @@ static int hidp_setup_hid(struct hidp_se

hid->dev.parent = hidp_get_device(session);
hid->ll_driver = &hidp_hid_driver;
+ hid->hid_output_raw_report = hidp_output_raw_report;

ret = hid_add_device(hid);
if (ret)


2009-09-10 17:50:26

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 2/3] bluetooth: hidp+hidraw write support

Hi Christopher,

> somewhere before .28, non-compliant HIDP devices would connect, and
> could be read from, but writing to the device had no effect.

this is not a proper commit message. Don't care about "somewhere", just
explain what this patch is fixing or what feature it adds.

> Signed-off-by: Christopher Olson <[email protected]>
>
> ---
>
> --- net/bluetooth/hidp/core.c 2009-09-10 09:32:20.000000000 -0500
> +++ net/bluetooth/hidp/core.c.2 2009-09-10 09:41:37.000000000 -0500
> @@ -40,6 +40,7 @@
>
> #include <linux/input.h>
> #include <linux/hid.h>
> +#include <linux/hidraw.h>
>
> #include <net/bluetooth/bluetooth.h>
> #include <net/bluetooth/hci_core.h>
> @@ -513,6 +514,11 @@ static void hidp_process_transmit(struct
> kfree_skb(skb);
> }
> }
> +
> +static int hidp_output_raw_report(struct hid_device *hid, __u8 *buf,
> size_t count)
> +{
> + return hidp_send_ctrl_message(hid->driver_data, buf[0], buf +
> 1, count - 1);
> +}

Please just create the SKB, copy the data, queue it and schedule it.
This buf[0] and buf + 1. Is pointless and just confusing.

And while at it change the send_ctrl_message to only accept the header
parameter since we are not even using data and size at all.

Regards

Marcel