git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ethdev: change queue release callback
[dpdk.git]
/
drivers
/
net
/
iavf
/
iavf_tm.c
diff --git
a/drivers/net/iavf/iavf_tm.c
b/drivers/net/iavf/iavf_tm.c
index
0334961
..
8d92062
100644
(file)
--- a/
drivers/net/iavf/iavf_tm.c
+++ b/
drivers/net/iavf/iavf_tm.c
@@
-321,7
+321,7
@@
iavf_tm_node_add(struct rte_eth_dev *dev, uint32_t node_id,
}
/* check level */
if (level_id != RTE_TM_NODE_LEVEL_ID_ANY &&
}
/* check level */
if (level_id != RTE_TM_NODE_LEVEL_ID_ANY &&
- level_id != parent_node_type + 1) {
+ level_id !=
(uint32_t)
parent_node_type + 1) {
error->type = RTE_TM_ERROR_TYPE_NODE_PARAMS;
error->message = "Wrong level";
return -EINVAL;
error->type = RTE_TM_ERROR_TYPE_NODE_PARAMS;
error->message = "Wrong level";
return -EINVAL;
@@
-469,9
+469,9
@@
iavf_tm_capabilities_get(struct rte_eth_dev *dev,
cap->shaper_private_n_max = cap->n_nodes_max;
cap->shaper_private_dual_rate_n_max = 0;
cap->shaper_private_rate_min = 0;
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 =
cap->shaper_private_rate_max =
-
vf->link_speed * 1
000 / IAVF_BITS_PER_BYTE;
+
(uint64_t)vf->link_speed * 1000
000 / 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->shaper_private_packet_mode_supported = 0;
cap->shaper_private_byte_mode_supported = 1;
cap->shaper_shared_n_max = 0;
@@
-544,9
+544,9
@@
iavf_level_capabilities_get(struct rte_eth_dev *dev,
cap->nonleaf.shaper_private_supported = true;
cap->nonleaf.shaper_private_dual_rate_supported = false;
cap->nonleaf.shaper_private_rate_min = 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 =
cap->nonleaf.shaper_private_rate_max =
-
vf->link_speed * 1
000 / IAVF_BITS_PER_BYTE;
+
(uint64_t)vf->link_speed * 1000
000 / 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->nonleaf.shaper_private_packet_mode_supported = 0;
cap->nonleaf.shaper_private_byte_mode_supported = 1;
cap->nonleaf.shaper_shared_n_max = 0;
@@
-573,9
+573,9
@@
iavf_level_capabilities_get(struct rte_eth_dev *dev,
cap->leaf.shaper_private_supported = false;
cap->leaf.shaper_private_dual_rate_supported = false;
cap->leaf.shaper_private_rate_min = 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 =
cap->leaf.shaper_private_rate_max =
-
vf->link_speed * 1
000 / IAVF_BITS_PER_BYTE;
+
(uint64_t)vf->link_speed * 1000
000 / 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->leaf.shaper_private_packet_mode_supported = 0;
cap->leaf.shaper_private_byte_mode_supported = 1;
cap->leaf.shaper_shared_n_max = 0;
@@
-632,8
+632,11
@@
iavf_node_capabilities_get(struct rte_eth_dev *dev,
cap->shaper_private_supported = true;
cap->shaper_private_dual_rate_supported = false;
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;
cap->shaper_shared_n_max = 0;
cap->nonleaf.sched_n_children_max = vf->num_queue_pairs;
cap->nonleaf.sched_sp_n_priorities_max = 1;
@@
-655,6
+658,7
@@
static int iavf_hierarchy_commit(struct rte_eth_dev *dev,
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 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;
uint16_t size;
int index = 0, node_committed = 0;
int i, ret_val = IAVF_SUCCESS;
@@
-690,6
+694,7
@@
static int iavf_hierarchy_commit(struct rte_eth_dev *dev,
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;
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);
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);
@@
-707,15
+712,26
@@
static int iavf_hierarchy_commit(struct rte_eth_dev *dev,
goto fail_clear;
}
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;
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;
}
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;
vf->tm_conf.committed = true;
return ret_val;