Commit 04c60f05 authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg

Bluetooth: Move mgmt_event helper function to different location

Move the mgmt_event function higher up in the code so that no forward
declaration is needed.
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent dbece37a
...@@ -212,6 +212,36 @@ static u8 mgmt_status(u8 hci_status) ...@@ -212,6 +212,36 @@ static u8 mgmt_status(u8 hci_status)
return MGMT_STATUS_FAILED; return MGMT_STATUS_FAILED;
} }
static int mgmt_event(u16 event, struct hci_dev *hdev, void *data, u16 data_len,
struct sock *skip_sk)
{
struct sk_buff *skb;
struct mgmt_hdr *hdr;
skb = alloc_skb(sizeof(*hdr) + data_len, GFP_KERNEL);
if (!skb)
return -ENOMEM;
hdr = (void *) skb_put(skb, sizeof(*hdr));
hdr->opcode = cpu_to_le16(event);
if (hdev)
hdr->index = cpu_to_le16(hdev->id);
else
hdr->index = cpu_to_le16(MGMT_INDEX_NONE);
hdr->len = cpu_to_le16(data_len);
if (data)
memcpy(skb_put(skb, data_len), data, data_len);
/* Time stamp */
__net_timestamp(skb);
hci_send_to_control(skb, skip_sk);
kfree_skb(skb);
return 0;
}
static int cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status) static int cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status)
{ {
struct sk_buff *skb; struct sk_buff *skb;
...@@ -1364,36 +1394,6 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data, ...@@ -1364,36 +1394,6 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data,
return err; return err;
} }
static int mgmt_event(u16 event, struct hci_dev *hdev, void *data, u16 data_len,
struct sock *skip_sk)
{
struct sk_buff *skb;
struct mgmt_hdr *hdr;
skb = alloc_skb(sizeof(*hdr) + data_len, GFP_KERNEL);
if (!skb)
return -ENOMEM;
hdr = (void *) skb_put(skb, sizeof(*hdr));
hdr->opcode = cpu_to_le16(event);
if (hdev)
hdr->index = cpu_to_le16(hdev->id);
else
hdr->index = cpu_to_le16(MGMT_INDEX_NONE);
hdr->len = cpu_to_le16(data_len);
if (data)
memcpy(skb_put(skb, data_len), data, data_len);
/* Time stamp */
__net_timestamp(skb);
hci_send_to_control(skb, skip_sk);
kfree_skb(skb);
return 0;
}
static int new_settings(struct hci_dev *hdev, struct sock *skip) static int new_settings(struct hci_dev *hdev, struct sock *skip)
{ {
__le32 ev; __le32 ev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment