ethdev: add namespace
[dpdk.git] / drivers / net / mvpp2 / mrvl_tm.c
index 3de8997..9fac80b 100644 (file)
@@ -57,7 +57,7 @@ mrvl_get_max_rate(struct rte_eth_dev *dev, uint64_t *rate)
 
        close(fd);
 
-       *rate = ethtool_cmd_speed(&edata) * 1000 * 1000 / 8;
+       *rate = (uint64_t)ethtool_cmd_speed(&edata) * 1000 * 1000 / 8;
 
        return 0;
 }
@@ -146,6 +146,11 @@ mrvl_node_type_get(struct rte_eth_dev *dev, uint32_t node_id, int *is_leaf,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_node *node;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!is_leaf)
                return -rte_tm_error_set(error, EINVAL,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -177,6 +182,11 @@ mrvl_capabilities_get(struct rte_eth_dev *dev,
 {
        struct mrvl_priv *priv = dev->data->dev_private;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!cap)
                return -rte_tm_error_set(error, EINVAL,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -193,12 +203,16 @@ mrvl_capabilities_get(struct rte_eth_dev *dev,
        cap->shaper_private_n_max = cap->shaper_n_max;
        cap->shaper_private_rate_min = MRVL_RATE_MIN;
        cap->shaper_private_rate_max = priv->rate_max;
+       cap->shaper_private_packet_mode_supported = 0;
+       cap->shaper_private_byte_mode_supported = 1;
 
        cap->sched_n_children_max = dev->data->nb_tx_queues;
        cap->sched_sp_n_priorities_max = dev->data->nb_tx_queues;
        cap->sched_wfq_n_children_per_group_max = dev->data->nb_tx_queues;
        cap->sched_wfq_n_groups_max = 1;
        cap->sched_wfq_weight_max = MRVL_WEIGHT_MAX;
+       cap->sched_wfq_packet_mode_supported = 0;
+       cap->sched_wfq_byte_mode_supported = 1;
 
        cap->dynamic_update_mask = RTE_TM_UPDATE_NODE_SUSPEND_RESUME |
                                   RTE_TM_UPDATE_NODE_STATS;
@@ -224,6 +238,11 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev,
 {
        struct mrvl_priv *priv = dev->data->dev_private;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!cap)
                return -rte_tm_error_set(error, EINVAL,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -244,6 +263,8 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev,
                cap->nonleaf.shaper_private_supported = 1;
                cap->nonleaf.shaper_private_rate_min = MRVL_RATE_MIN;
                cap->nonleaf.shaper_private_rate_max = priv->rate_max;
+               cap->nonleaf.shaper_private_packet_mode_supported = 0;
+               cap->nonleaf.shaper_private_byte_mode_supported = 1;
 
                cap->nonleaf.sched_n_children_max = dev->data->nb_tx_queues;
                cap->nonleaf.sched_sp_n_priorities_max = 1;
@@ -251,6 +272,8 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev,
                        dev->data->nb_tx_queues;
                cap->nonleaf.sched_wfq_n_groups_max = 1;
                cap->nonleaf.sched_wfq_weight_max = MRVL_WEIGHT_MAX;
+               cap->nonleaf.sched_wfq_packet_mode_supported = 0;
+               cap->nonleaf.sched_wfq_byte_mode_supported = 1;
                cap->nonleaf.stats_mask = RTE_TM_STATS_N_PKTS |
                                          RTE_TM_STATS_N_BYTES;
        } else { /* level_id == MRVL_NODE_QUEUE */
@@ -261,6 +284,8 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev,
                cap->leaf.shaper_private_supported = 1;
                cap->leaf.shaper_private_rate_min = MRVL_RATE_MIN;
                cap->leaf.shaper_private_rate_max = priv->rate_max;
+               cap->leaf.shaper_private_packet_mode_supported = 0;
+               cap->leaf.shaper_private_byte_mode_supported = 1;
                cap->leaf.stats_mask = RTE_TM_STATS_N_PKTS;
        }
 
@@ -284,6 +309,11 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_node *node;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!cap)
                return -rte_tm_error_set(error, EINVAL,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -300,6 +330,8 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id,
        cap->shaper_private_supported = 1;
        cap->shaper_private_rate_min = MRVL_RATE_MIN;
        cap->shaper_private_rate_max = priv->rate_max;
+       cap->shaper_private_packet_mode_supported = 0;
+       cap->shaper_private_byte_mode_supported = 1;
 
        if (node->type == MRVL_NODE_PORT) {
                cap->nonleaf.sched_n_children_max = dev->data->nb_tx_queues;
@@ -308,6 +340,8 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id,
                        dev->data->nb_tx_queues;
                cap->nonleaf.sched_wfq_n_groups_max = 1;
                cap->nonleaf.sched_wfq_weight_max = MRVL_WEIGHT_MAX;
+               cap->nonleaf.sched_wfq_packet_mode_supported = 0;
+               cap->nonleaf.sched_wfq_byte_mode_supported = 1;
                cap->stats_mask = RTE_TM_STATS_N_PKTS | RTE_TM_STATS_N_BYTES;
        } else {
                cap->stats_mask = RTE_TM_STATS_N_PKTS;
@@ -352,6 +386,11 @@ mrvl_shaper_profile_add(struct rte_eth_dev *dev, uint32_t shaper_profile_id,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_shaper_profile *profile;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!params)
                return -rte_tm_error_set(error, EINVAL,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -420,6 +459,11 @@ mrvl_shaper_profile_delete(struct rte_eth_dev *dev, uint32_t shaper_profile_id,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_shaper_profile *profile;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        profile = mrvl_shaper_profile_from_id(priv, shaper_profile_id);
        if (!profile)
                return -rte_tm_error_set(error, ENODEV,
@@ -566,6 +610,11 @@ mrvl_node_add(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_tm_node *node, *parent = NULL;
        int ret;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (priv->ppio)
                return -rte_tm_error_set(error, EPERM,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -651,6 +700,11 @@ mrvl_node_delete(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_node *node;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (priv->ppio) {
                return -rte_tm_error_set(error, EPERM,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -715,6 +769,11 @@ mrvl_node_suspend(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_tm_node *node, *tmp;
        int ret;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        node = mrvl_node_from_id(priv, node_id);
        if (!node)
                return -rte_tm_error_set(error, ENODEV,
@@ -756,6 +815,11 @@ mrvl_node_resume(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_tm_node *node;
        int ret;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        node = mrvl_node_from_id(priv, node_id);
        if (!node)
                return -rte_tm_error_set(error, ENODEV,
@@ -792,6 +856,11 @@ mrvl_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
        struct mrvl_tm_node *node;
        int ret;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (priv->ppio) {
                ret = -rte_tm_error_set(error, EPERM,
                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -898,6 +967,11 @@ mrvl_node_stats_read(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_tm_node *node;
        int ret;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        if (!priv->ppio) {
                return -rte_tm_error_set(error, EPERM,
                                         RTE_TM_ERROR_TYPE_UNSPECIFIED,
@@ -967,6 +1041,11 @@ mrvl_node_stats_update(struct rte_eth_dev *dev, uint32_t node_id,
        struct mrvl_priv *priv = dev->data->dev_private;
        struct mrvl_tm_node *node;
 
+       if (!priv->configured)
+               return -rte_tm_error_set(error, ENODEV,
+                                        RTE_TM_ERROR_TYPE_UNSPECIFIED,
+                                        NULL, "Port didn't configured\n");
+
        node = mrvl_node_from_id(priv, node_id);
        if (!node)
                return -rte_tm_error_set(error, ENODEV,