}
+void mgmt_le_batching_failed(struct hci_dev *hdev, u8 status)
+{
+ struct mgmt_pending_cmd *cmd;
+ u16 mgmt_cmd;
+
+ cmd = pending_find(MGMT_OP_GET_LE_BATCHING_BUFFER, hdev);
+ if (cmd) {
+ mgmt_cmd = MGMT_OP_GET_LE_BATCHING_BUFFER;
+ goto found;
+ }
+ cmd = pending_find(MGMT_OP_SET_LE_BATCHING_PARAM, hdev);
+ if (cmd) {
+ mgmt_cmd = MGMT_OP_SET_LE_BATCHING_PARAM;
+ goto found;
+ }
+ cmd = pending_find(MGMT_OP_SET_LE_BATCHING_ENABLE, hdev);
+ if (cmd) {
+ mgmt_cmd = MGMT_OP_SET_LE_BATCHING_ENABLE;
+ goto found;
+ }
+
+ BT_ERR("cmd not found in the pending list");
+ return;
+
+found:
+ if (status) {
+ mgmt_cmd_status(cmd->sk, hdev->id, mgmt_cmd,
+ mgmt_status(status));
+ }
+
+ mgmt_cmd_complete(cmd->sk, hdev->id, mgmt_cmd, status, NULL, 0);
+ mgmt_pending_remove(cmd);
+}
+
void mgmt_get_le_batching_buffer_complete(struct hci_dev *hdev,
u8 status, u16 buf_size)
{
cp_en.subcode = LE_BATCHING_SUBCODE_GET_BUFFER;
- if (pending_find(MGMT_OP_GET_LE_BATCHING_BUFFER, hdev)) {
+ if (pending_find(MGMT_OP_GET_LE_BATCHING_BUFFER, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_PARAM, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_ENABLE, hdev)) {
BT_DBG("%s", hdev->name);
err = mgmt_cmd_status(sk, hdev->id, MGMT_OP_GET_LE_BATCHING_BUFFER,
MGMT_STATUS_BUSY);
cp_en.pkt_th = cp->pkt_th;
cp_en.timeout = cp->timeout;
- if (pending_find(MGMT_OP_SET_LE_BATCHING_PARAM, hdev)) {
+ if (pending_find(MGMT_OP_GET_LE_BATCHING_BUFFER, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_PARAM, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_ENABLE, hdev)) {
BT_DBG("%s", hdev->name);
err = mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_LE_BATCHING_PARAM,
MGMT_STATUS_BUSY);
cp_en.cid = L2CAP_CID_ATT;
cp_en.enable = cp->enable;
- if (pending_find(MGMT_OP_SET_LE_BATCHING_ENABLE, hdev)) {
+ if (pending_find(MGMT_OP_GET_LE_BATCHING_BUFFER, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_PARAM, hdev) ||
+ pending_find(MGMT_OP_SET_LE_BATCHING_ENABLE, hdev)) {
BT_DBG("%s", hdev->name);
err = mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_LE_BATCHING_ENABLE,
MGMT_STATUS_BUSY);