+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ * A structure used to retrieve information of queue based PFC.
+ */
+struct rte_eth_pfc_queue_info {
+ /**
+ * Maximum supported traffic class as per PFC (802.1Qbb) specification.
+ */
+ uint8_t tc_max;
+ /** PFC queue mode capabilities. */
+ enum rte_eth_fc_mode mode_capa;
+};
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ * A structure used to configure Ethernet priority flow control parameters for
+ * ethdev queues.
+ *
+ * rte_eth_pfc_queue_conf::rx_pause structure shall be used to configure given
+ * tx_qid with corresponding tc. When ethdev device receives PFC frame with
+ * rte_eth_pfc_queue_conf::rx_pause::tc, traffic will be paused on
+ * rte_eth_pfc_queue_conf::rx_pause::tx_qid for that tc.
+ *
+ * rte_eth_pfc_queue_conf::tx_pause structure shall be used to configure given
+ * rx_qid. When rx_qid is congested, PFC frames are generated with
+ * rte_eth_pfc_queue_conf::rx_pause::tc and
+ * rte_eth_pfc_queue_conf::rx_pause::pause_time to the peer.
+ */
+struct rte_eth_pfc_queue_conf {
+ enum rte_eth_fc_mode mode; /**< Link flow control mode */
+
+ struct {
+ uint16_t tx_qid; /**< Tx queue ID */
+ /** Traffic class as per PFC (802.1Qbb) spec. The value must be
+ * in the range [0, rte_eth_pfc_queue_info::tx_max - 1]
+ */
+ uint8_t tc;
+ } rx_pause; /* Valid when (mode == FC_RX_PAUSE || mode == FC_FULL) */
+
+ struct {
+ uint16_t pause_time; /**< Pause quota in the Pause frame */
+ uint16_t rx_qid; /**< Rx queue ID */
+ /** Traffic class as per PFC (802.1Qbb) spec. The value must be
+ * in the range [0, rte_eth_pfc_queue_info::tx_max - 1]
+ */
+ uint8_t tc;
+ } tx_pause; /* Valid when (mode == FC_TX_PAUSE || mode == FC_FULL) */
+};
+