btdev: Fix response to LE Set Extended Advertising Parameters
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 9 Mar 2022 01:58:40 +0000 (17:58 -0800)
committerAyush Garg <ayush.garg@samsung.com>
Mon, 15 May 2023 09:25:53 +0000 (14:55 +0530)
The response should both the status and TX Power regardless if the
command succeeds or not.

Signed-off-by: Manika Shrivastava <manika.sh@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
emulator/btdev.c

index 6834ec1..0651a28 100755 (executable)
@@ -4671,7 +4671,8 @@ static int cmd_set_ext_adv_params(struct btdev *dev, const void *data,
        const struct bt_hci_cmd_le_set_ext_adv_params *cmd = data;
        struct bt_hci_rsp_le_set_ext_adv_params rsp;
        struct le_ext_adv *ext_adv;
-       uint8_t status;
+
+       memset(&rsp, 0, sizeof(rsp));
 
        /* Check if Ext Adv is already existed */
        ext_adv = queue_find(dev->le_ext_adv, match_ext_adv_handle,
@@ -4679,26 +4680,26 @@ static int cmd_set_ext_adv_params(struct btdev *dev, const void *data,
        if (!ext_adv) {
                /* No more than maximum number */
                if (queue_length(dev->le_ext_adv) >= MAX_EXT_ADV_SETS) {
-                       status = BT_HCI_ERR_MEM_CAPACITY_EXCEEDED;
+                       rsp.status = BT_HCI_ERR_MEM_CAPACITY_EXCEEDED;
                        cmd_complete(dev, BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS,
-                                               &status, sizeof(status));
+                                               &rsp, sizeof(rsp));
                        return 0;
                }
 
                /* Create new set */
                ext_adv = le_ext_adv_new(dev, cmd->handle);
                if (!ext_adv) {
-                       status = BT_HCI_ERR_MEM_CAPACITY_EXCEEDED;
+                       rsp.status = BT_HCI_ERR_MEM_CAPACITY_EXCEEDED;
                        cmd_complete(dev, BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS,
-                                               &status, sizeof(status));
+                                               &rsp, sizeof(rsp));
                        return 0;
                }
        }
 
        if (ext_adv->enable) {
-               status = BT_HCI_ERR_COMMAND_DISALLOWED;
-               cmd_complete(dev, BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS, &status,
-                                                       sizeof(status));
+               rsp.status = BT_HCI_ERR_COMMAND_DISALLOWED;
+               cmd_complete(dev, BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS, &rsp,
+                                                       sizeof(rsp));
                return 0;
        }