| /* |
| * Copyright (c) 2020 Demant |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/sys/slist.h> |
| |
| struct ull_tx_q { |
| uint8_t pause_data; /* Data pause state of the tx queue */ |
| |
| sys_slist_t tx_list; /* Data and control node_tx list */ |
| sys_slist_t data_list; /* Data node_tx wait list */ |
| }; |
| |
| /* Forward declaration of node_tx */ |
| struct node_tx; |
| |
| /** |
| * @brief Initialize a tx queue. |
| * |
| * @param ull_tx_q Address of tx queue. |
| */ |
| void ull_tx_q_init(struct ull_tx_q *queue); |
| |
| /** |
| * @brief Pause the data path of a tx queue. |
| * |
| * @param ull_tx_q Address of tx queue. |
| */ |
| void ull_tx_q_pause_data(struct ull_tx_q *queue); |
| |
| /** |
| * @brief Resume the data path of a tx queue |
| * |
| * @param ull_tx_q Address of tx queue. |
| */ |
| void ull_tx_q_resume_data(struct ull_tx_q *queue); |
| |
| /** |
| * @brief Enqueue a tx node in the data path of a tx queue |
| * |
| * @param ull_tx_q Address of tx queue. |
| * @param tx Address of tx node to enqueue. |
| */ |
| void ull_tx_q_enqueue_data(struct ull_tx_q *queue, struct node_tx *tx); |
| |
| /** |
| * @brief Enqueue a tx node in the control path of a tx queue |
| * |
| * @param ull_tx_q Address of tx queue. |
| * @param tx Address of tx node to enqueue. |
| */ |
| void ull_tx_q_enqueue_ctrl(struct ull_tx_q *queue, struct node_tx *tx); |
| |
| /** |
| * @brief Peek head tx node of tx queue. |
| * |
| * @param ull_tx_q Address of tx queue. |
| * |
| * @return Head tx node of the tx queue. |
| */ |
| struct node_tx *ull_tx_q_peek(struct ull_tx_q *queue); |
| |
| /** |
| * @brief Dequeue a tx node from a tx queue. |
| * |
| * @param ull_tx_q Address of tx queue. |
| * |
| * @return Head tx node of the tx queue. |
| */ |
| struct node_tx *ull_tx_q_dequeue(struct ull_tx_q *queue); |