| 1800 | } |
| 1801 | |
| 1802 | int |
| 1803 | i40e_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id) |
| 1804 | { |
| 1805 | struct i40e_tx_queue *txq; |
| 1806 | int err; |
| 1807 | struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); |
| 1808 | |
| 1809 | txq = dev->data->tx_queues[tx_queue_id]; |
| 1810 | if (!txq || !txq->q_set) { |
| 1811 | PMD_DRV_LOG(ERR, "TX queue %u is not available or setup", |
| 1812 | tx_queue_id); |
| 1813 | return -EINVAL; |
| 1814 | } |
| 1815 | |
| 1816 | /* |
| 1817 | * tx_queue_id is queue id application refers to, while |
| 1818 | * txq->reg_idx is the real queue index. |
| 1819 | */ |
| 1820 | err = i40e_switch_tx_queue(hw, txq->reg_idx, FALSE); |
| 1821 | if (err) { |
| 1822 | PMD_DRV_LOG(ERR, "Failed to switch TX queue %u of", |
| 1823 | tx_queue_id); |
| 1824 | return err; |
| 1825 | } |
| 1826 | |
| 1827 | i40e_tx_queue_release_mbufs(txq); |
| 1828 | i40e_reset_tx_queue(txq); |
| 1829 | dev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STOPPED; |
| 1830 | |
| 1831 | return 0; |
| 1832 | } |
| 1833 | |
| 1834 | const uint32_t * |
| 1835 | i40e_dev_supported_ptypes_get(struct rte_eth_dev *dev) |
no test coverage detected