Commit 490c5bab authored by Johan Hedberg's avatar Johan Hedberg

Bluetooth: Add hdev->short_name for EIR generation

It's possible to provide a short name through the mgmt interface and
this name can be used for EIR generation when the full name doesn't fit
there. This patch adds the preliminary tracking of the provided short
name.
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 7f9a903c
...@@ -129,6 +129,8 @@ struct le_scan_params { ...@@ -129,6 +129,8 @@ struct le_scan_params {
int timeout; int timeout;
}; };
#define HCI_MAX_SHORT_NAME_LENGTH 10
#define NUM_REASSEMBLY 4 #define NUM_REASSEMBLY 4
struct hci_dev { struct hci_dev {
struct list_head list; struct list_head list;
...@@ -141,6 +143,7 @@ struct hci_dev { ...@@ -141,6 +143,7 @@ struct hci_dev {
__u8 dev_type; __u8 dev_type;
bdaddr_t bdaddr; bdaddr_t bdaddr;
__u8 dev_name[HCI_MAX_NAME_LENGTH]; __u8 dev_name[HCI_MAX_NAME_LENGTH];
__u8 short_name[HCI_MAX_SHORT_NAME_LENGTH];
__u8 eir[HCI_MAX_EIR_LENGTH]; __u8 eir[HCI_MAX_EIR_LENGTH];
__u8 dev_class[3]; __u8 dev_class[3];
__u8 major_class; __u8 major_class;
......
...@@ -75,7 +75,7 @@ struct mgmt_rp_read_index_list { ...@@ -75,7 +75,7 @@ struct mgmt_rp_read_index_list {
/* Reserve one extra byte for names in management messages so that they /* Reserve one extra byte for names in management messages so that they
* are always guaranteed to be nul-terminated */ * are always guaranteed to be nul-terminated */
#define MGMT_MAX_NAME_LENGTH (HCI_MAX_NAME_LENGTH + 1) #define MGMT_MAX_NAME_LENGTH (HCI_MAX_NAME_LENGTH + 1)
#define MGMT_MAX_SHORT_NAME_LENGTH (10 + 1) #define MGMT_MAX_SHORT_NAME_LENGTH (HCI_MAX_SHORT_NAME_LENGTH + 1)
#define MGMT_SETTING_POWERED 0x00000001 #define MGMT_SETTING_POWERED 0x00000001
#define MGMT_SETTING_CONNECTABLE 0x00000002 #define MGMT_SETTING_CONNECTABLE 0x00000002
......
...@@ -2273,6 +2273,9 @@ static int set_local_name(struct sock *sk, u16 index, void *data, ...@@ -2273,6 +2273,9 @@ static int set_local_name(struct sock *sk, u16 index, void *data,
goto failed; goto failed;
} }
memcpy(hdev->short_name, mgmt_cp->short_name,
sizeof(hdev->short_name));
memcpy(hci_cp.name, mgmt_cp->name, sizeof(hci_cp.name)); memcpy(hci_cp.name, mgmt_cp->name, sizeof(hci_cp.name));
err = hci_send_cmd(hdev, HCI_OP_WRITE_LOCAL_NAME, sizeof(hci_cp), err = hci_send_cmd(hdev, HCI_OP_WRITE_LOCAL_NAME, sizeof(hci_cp),
&hci_cp); &hci_cp);
......
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