-bool ena_com_is_doorbell_needed(struct ena_com_io_sq *io_sq,
- struct ena_com_tx_ctx *ena_tx_ctx)
-{
- u16 num_descs;
- int num_entries_needed;
- int descs_after_first_entry;
- bool have_meta;
- struct ena_com_llq_info *llq_info;
-
- if (!is_llq_max_tx_burst_exists(io_sq))
- return false;
-
- num_entries_needed = 1;
- llq_info = &io_sq->llq_info;
- num_descs = ena_tx_ctx->num_bufs;
- have_meta = ena_tx_ctx->meta_valid &&
- ena_com_meta_desc_changed(io_sq, ena_tx_ctx);
-
- if (have_meta)
- ++num_descs;
-
- if (num_descs > llq_info->descs_num_before_header) {
- descs_after_first_entry = num_descs - llq_info->descs_num_before_header;
- num_entries_needed += DIV_ROUND_UP(descs_after_first_entry,
- llq_info->descs_per_entry);
- }
-
- ena_trc_dbg("queue: %d num_descs: %d num_entries_needed: %d\n",
- io_sq->qid, num_descs, num_entries_needed);
-
- return num_entries_needed > io_sq->entries_in_tx_burst_left;
-}
-