Lines Matching +full:post +full:- +full:processing

5 /*-
6 * SPDX-License-Identifier: BSD-2-Clause
54 ** HCI commands processing module
96 if (unit->state & NG_HCI_UNIT_COMMAND_PENDING)
100 NG_HCI_BUFF_CMD_GET(unit->buffer, free);
105 if (unit->drv == NULL || NG_HOOK_NOT_VALID(unit->drv)) {
107 "%s: %s - hook \"%s\" is not connected or valid\n",
108 __func__, NG_NODE_NAME(unit->node), NG_HCI_HOOK_DRV);
110 NG_BT_MBUFQ_DRAIN(&unit->cmdq);
120 m0 = NG_BT_MBUFQ_FIRST(&unit->cmdq);
128 NG_SEND_DATA_ONLY(error, unit->drv, m);
134 "%s: %s - could not send HCI command, error=%d\n",
135 __func__, NG_NODE_NAME(unit->node), error);
142 NG_HCI_BUFF_CMD_USE(unit->buffer, 1);
143 NG_HCI_STAT_CMD_SENT(unit->stat);
144 NG_HCI_STAT_BYTES_SENT(unit->stat, m0->m_pkthdr.len);
157 * Process HCI Command_Compete event. Complete HCI command, and do post
158 * processing on the command parameters (cp) and command return parameters
175 NG_HCI_BUFF_CMD_SET(unit->buffer, ep->num_cmd_pkts);
178 if (ep->opcode == 0x0000) {
184 error = complete_command(unit, ep->opcode, &cp);
191 * Perform post processing on command parameters and return parameters
196 ep->opcode = le16toh(ep->opcode);
200 switch (NG_HCI_OGF(ep->opcode)) {
203 NG_HCI_OCF(ep->opcode), cp, e);
208 NG_HCI_OCF(ep->opcode), cp, e);
213 NG_HCI_OCF(ep->opcode), cp, e);
218 NG_HCI_OCF(ep->opcode), cp, e);
223 NG_HCI_OCF(ep->opcode), cp, e);
228 NG_HCI_OCF(ep->opcode), cp, e);
232 NG_HCI_OCF(ep->opcode), cp, e);
248 "%s: %s - HCI command failed, OGF=%#x, OCF=%#x, status=%#x\n",
249 __func__, NG_NODE_NAME(unit->node),
250 NG_HCI_OGF(ep->opcode), NG_HCI_OCF(ep->opcode),
263 * Process HCI Command_Status event. Check the status (mst) and do post
264 * processing (if required).
280 NG_HCI_BUFF_CMD_SET(unit->buffer, ep->num_cmd_pkts);
283 if (ep->opcode == 0x0000)
287 error = complete_command(unit, ep->opcode, &cp);
292 * Perform post processing on HCI Command_Status event
295 ep->opcode = le16toh(ep->opcode);
297 switch (NG_HCI_OGF(ep->opcode)) {
339 if (!(unit->state & NG_HCI_UNIT_COMMAND_PENDING)) {
341 "%s: %s - no pending command, state=%#x\n",
342 __func__, NG_NODE_NAME(unit->node), unit->state);
348 m = NG_BT_MBUFQ_FIRST(&unit->cmdq);
351 "%s: %s - empty command queue?!\n", __func__, NG_NODE_NAME(unit->node));
357 * Match command opcode, if does not match - do nothing and
361 if (mtod(m, ng_hci_cmd_pkt_t *)->opcode != opcode) {
363 "%s: %s - command queue is out of sync\n", __func__, NG_NODE_NAME(unit->node));
372 * Note: if ng_hci_command_untimeout() fails (returns non-zero)
381 NG_BT_MBUFQ_DEQUEUE(&unit->cmdq, *cp);
405 if (unit->state & NG_HCI_UNIT_COMMAND_PENDING) {
406 unit->state &= ~NG_HCI_UNIT_COMMAND_PENDING;
408 NG_BT_MBUFQ_DEQUEUE(&unit->cmdq, m);
411 "%s: %s - command queue is out of sync!\n", __func__, NG_NODE_NAME(unit->node));
416 opcode = le16toh(mtod(m, ng_hci_cmd_pkt_t *)->opcode);
420 "%s: %s - unable to complete HCI command OGF=%#x, OCF=%#x. Timeout\n",
421 __func__, NG_NODE_NAME(unit->node), NG_HCI_OGF(opcode),
425 NG_HCI_BUFF_CMD_SET(unit->buffer, 1);
429 "%s: %s - no pending command\n", __func__, NG_NODE_NAME(unit->node));
450 /* These do not need post processing */
507 h = NG_HCI_CON_HANDLE(le16toh(rp->con_handle));
511 "%s: %s - invalid connection handle=%d\n",
512 __func__, NG_NODE_NAME(unit->node), h);
514 } else if (con->link_type != NG_HCI_LINK_ACL) {
516 "%s: %s - invalid link type=%d\n", __func__, NG_NODE_NAME(unit->node),
517 con->link_type);
520 con->role = rp->role;
527 /* These do not need post processing */
621 /* These do not need post processing */
636 * inited bit. After RESET unit must be re-initialized.
639 while (!LIST_EMPTY(&unit->con_list)) {
640 con = LIST_FIRST(&unit->con_list);
643 if (con->flags & NG_HCI_CON_TIMEOUT_PENDING)
651 NG_HCI_BUFF_ACL_TOTAL(unit->buffer, size);
652 NG_HCI_BUFF_ACL_FREE(unit->buffer, size);
654 NG_HCI_BUFF_SCO_TOTAL(unit->buffer, size);
655 NG_HCI_BUFF_SCO_FREE(unit->buffer, size);
657 unit->state &= ~NG_HCI_UNIT_INITED;
688 len = min(mrp->m_pkthdr.len, sizeof(unit->features));
689 m_copydata(mrp, 0, len, (caddr_t) unit->features);
696 if ((unit->state & NG_HCI_UNIT_READY) == NG_HCI_UNIT_READY)
704 unit->buffer,
705 le16toh(rp->num_acl_pkt), /* number */
706 le16toh(rp->max_acl_size), /* size */
707 le16toh(rp->num_acl_pkt) /* free */
711 unit->buffer,
712 le16toh(rp->num_sco_pkt), /* number */
713 rp->max_sco_size, /* size */
714 le16toh(rp->num_sco_pkt) /* free */
718 ng_hci_node_is_up(unit->node, unit->acl, NULL, 0);
719 ng_hci_node_is_up(unit->node, unit->sco, NULL, 0);
726 if ((unit->state & NG_HCI_UNIT_READY) == NG_HCI_UNIT_READY)
730 len = min(mrp->m_pkthdr.len, sizeof(unit->bdaddr));
731 m_copydata(mrp, 0, len, (caddr_t) &unit->bdaddr);
734 ng_hci_node_is_up(unit->node, unit->acl, NULL, 0);
735 ng_hci_node_is_up(unit->node, unit->sco, NULL, 0);
764 /* These do not need post processing */
850 /* These do not need post processing */
882 switch (NG_HCI_OCF(ep->opcode)){
888 /* These do not need post processing */
944 switch (NG_HCI_OCF(ep->opcode)) {
957 /* These do not need post processing */
1003 switch (NG_HCI_OCF(ep->opcode)) {
1010 /* These do not need post processing */