X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=lib%2Flibrte_ethdev%2Frte_tm.h;fp=lib%2Flibrte_ether%2Frte_tm.h;h=955f02ff10562c45db2bbe5be42aeee8bbc6f57b;hb=refs%2Fchanges%2F24%2F14224%2F1;hp=2b25a8715f0f9edadc95508931f7caa3e2b4cca2;hpb=ca33590b6af032bff57d9cc70455660466a654b2;p=deb_dpdk.git diff --git a/lib/librte_ether/rte_tm.h b/lib/librte_ethdev/rte_tm.h similarity index 96% rename from lib/librte_ether/rte_tm.h rename to lib/librte_ethdev/rte_tm.h index 2b25a871..955f02ff 100644 --- a/lib/librte_ether/rte_tm.h +++ b/lib/librte_ethdev/rte_tm.h @@ -377,6 +377,22 @@ struct rte_tm_capabilities { */ uint32_t sched_wfq_weight_max; + /** WRED packet mode support. When non-zero, this parameter indicates + * that there is atleast one leaf node that supports the WRED packet + * mode, which might not be true for all the leaf nodes. In packet + * mode, the WRED thresholds specify the queue length in packets, as + * opposed to bytes. + */ + int cman_wred_packet_mode_supported; + + /** WRED byte mode support. When non-zero, this parameter indicates that + * there is atleast one leaf node that supports the WRED byte mode, + * which might not be true for all the leaf nodes. In byte mode, the + * WRED thresholds specify the queue length in bytes, as opposed to + * packets. + */ + int cman_wred_byte_mode_supported; + /** Head drop algorithm support. When non-zero, this parameter * indicates that there is at least one leaf node that supports the head * drop algorithm, which might not be true for all the leaf nodes. @@ -628,6 +644,24 @@ struct rte_tm_level_capabilities { */ uint32_t shaper_shared_n_max; + /** WRED packet mode support. When non-zero, this + * parameter indicates that there is atleast one leaf + * node on this level that supports the WRED packet + * mode, which might not be true for all the leaf + * nodes. In packet mode, the WRED thresholds specify + * the queue length in packets, as opposed to bytes. + */ + int cman_wred_packet_mode_supported; + + /** WRED byte mode support. When non-zero, this + * parameter indicates that there is atleast one leaf + * node on this level that supports the WRED byte mode, + * which might not be true for all the leaf nodes. In + * byte mode, the WRED thresholds specify the queue + * length in bytes, as opposed to packets. + */ + int cman_wred_byte_mode_supported; + /** Head drop algorithm support. When non-zero, this * parameter indicates that there is at least one leaf * node on this level that supports the head drop @@ -743,6 +777,12 @@ struct rte_tm_node_capabilities { /** Items valid only for leaf nodes. */ struct { + /** WRED packet mode support for current node. */ + int cman_wred_packet_mode_supported; + + /** WRED byte mode support for current node. */ + int cman_wred_byte_mode_supported; + /** Head drop algorithm support for current node. */ int cman_head_drop_supported; @@ -791,10 +831,10 @@ enum rte_tm_cman_mode { */ struct rte_tm_red_params { /** Minimum queue threshold */ - uint16_t min_th; + uint32_t min_th; /** Maximum queue threshold */ - uint16_t max_th; + uint32_t max_th; /** Inverse of packet marking probability maximum value (maxp), i.e. * maxp_inv = 1 / maxp @@ -815,10 +855,19 @@ struct rte_tm_red_params { * WRED context is used to perform congestion management for a single leaf * node, while a shared WRED context is used to perform congestion management * for a group of leaf nodes. + * + * @see struct rte_tm_capabilities::cman_wred_packet_mode_supported + * @see struct rte_tm_capabilities::cman_wred_byte_mode_supported */ struct rte_tm_wred_params { /** One set of RED parameters per packet color */ struct rte_tm_red_params red_params[RTE_TM_COLORS]; + + /** When non-zero, the *min_th* and *max_th* thresholds are specified + * in packets (WRED packet mode). When zero, the *min_th* and *max_th* + * thresholds are specified in bytes (WRED byte mode) + */ + int packet_mode; }; /** @@ -1520,6 +1569,10 @@ rte_tm_hierarchy_commit(uint16_t port_id, /** * Traffic manager node parent update * + * This function may be used to move a node and its children to a different + * parent. Additionally, if the new parent is the same as the current parent, + * this function will update the priority/weight of an existing node. + * * Restriction for root node: its parent cannot be changed. * * This function can only be called after the rte_tm_hierarchy_commit() @@ -1643,7 +1696,7 @@ rte_tm_node_stats_update(uint16_t port_id, * @param[in] port_id * The port identifier of the Ethernet device. * @param[in] node_id - * Node ID. Needs to be valid leaf node ID. + * Node ID. Needs to be valid non-leaf node ID. * @param[in] wfq_weight_mode * WFQ weight mode for each SP priority. When NULL, it indicates that WFQ is * to be used for all priorities. When non-NULL, it points to a pre-allocated