cap->shaper_private_n_max = cap->n_nodes_max;
cap->shaper_private_dual_rate_n_max = 0;
cap->shaper_private_rate_min = 0;
- /* GBps */
+ /* Bytes per second */
cap->shaper_private_rate_max =
- vf->link_speed * 1000 / IAVF_BITS_PER_BYTE;
+ (uint64_t)vf->link_speed * 1000000 / IAVF_BITS_PER_BYTE;
cap->shaper_private_packet_mode_supported = 0;
cap->shaper_private_byte_mode_supported = 1;
cap->shaper_shared_n_max = 0;
cap->nonleaf.shaper_private_supported = true;
cap->nonleaf.shaper_private_dual_rate_supported = false;
cap->nonleaf.shaper_private_rate_min = 0;
- /* GBps */
+ /* Bytes per second */
cap->nonleaf.shaper_private_rate_max =
- vf->link_speed * 1000 / IAVF_BITS_PER_BYTE;
+ (uint64_t)vf->link_speed * 1000000 / IAVF_BITS_PER_BYTE;
cap->nonleaf.shaper_private_packet_mode_supported = 0;
cap->nonleaf.shaper_private_byte_mode_supported = 1;
cap->nonleaf.shaper_shared_n_max = 0;
cap->leaf.shaper_private_supported = false;
cap->leaf.shaper_private_dual_rate_supported = false;
cap->leaf.shaper_private_rate_min = 0;
- /* GBps */
+ /* Bytes per second */
cap->leaf.shaper_private_rate_max =
- vf->link_speed * 1000 / IAVF_BITS_PER_BYTE;
+ (uint64_t)vf->link_speed * 1000000 / IAVF_BITS_PER_BYTE;
cap->leaf.shaper_private_packet_mode_supported = 0;
cap->leaf.shaper_private_byte_mode_supported = 1;
cap->leaf.shaper_shared_n_max = 0;
cap->shaper_private_supported = true;
cap->shaper_private_dual_rate_supported = false;
- cap->shaper_private_rate_min = tc_cap.shaper.committed;
- cap->shaper_private_rate_max = tc_cap.shaper.peak;
+ /* Bytes per second */
+ cap->shaper_private_rate_min =
+ (uint64_t)tc_cap.shaper.committed * 1000 / IAVF_BITS_PER_BYTE;
+ cap->shaper_private_rate_max =
+ (uint64_t)tc_cap.shaper.peak * 1000 / IAVF_BITS_PER_BYTE;
cap->shaper_shared_n_max = 0;
cap->nonleaf.sched_n_children_max = vf->num_queue_pairs;
cap->nonleaf.sched_sp_n_priorities_max = 1;
struct virtchnl_queue_tc_mapping *q_tc_mapping;
struct iavf_tm_node_list *queue_list = &vf->tm_conf.queue_list;
struct iavf_tm_node *tm_node;
+ struct iavf_qtc_map *qtc_map;
uint16_t size;
int index = 0, node_committed = 0;
int i, ret_val = IAVF_SUCCESS;
q_tc_mapping->vsi_id = vf->vsi.vsi_id;
q_tc_mapping->num_tc = vf->qos_cap->num_elem;
q_tc_mapping->num_queue_pairs = vf->num_queue_pairs;
+
TAILQ_FOREACH(tm_node, queue_list, node) {
if (tm_node->tc >= q_tc_mapping->num_tc) {
PMD_DRV_LOG(ERR, "TC%d is not enabled", tm_node->tc);
goto fail_clear;
}
+ /* store the queue TC mapping info */
+ qtc_map = rte_zmalloc("qtc_map",
+ sizeof(struct iavf_qtc_map) * q_tc_mapping->num_tc, 0);
+ if (!qtc_map)
+ return IAVF_ERR_NO_MEMORY;
+
for (i = 0; i < q_tc_mapping->num_tc; i++) {
q_tc_mapping->tc[i].req.start_queue_id = index;
index += q_tc_mapping->tc[i].req.queue_count;
+ qtc_map[i].tc = i;
+ qtc_map[i].start_queue_id =
+ q_tc_mapping->tc[i].req.start_queue_id;
+ qtc_map[i].queue_count = q_tc_mapping->tc[i].req.queue_count;
}
ret_val = iavf_set_q_tc_map(dev, q_tc_mapping, size);
if (ret_val)
goto fail_clear;
+ vf->qtc_map = qtc_map;
vf->tm_conf.committed = true;
return ret_val;