+static int
+fs_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx)
+{
+ struct rxq *rxq;
+
+ if (idx >= dev->data->nb_rx_queues) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+ rxq = dev->data->rx_queues[idx];
+ if (rxq == NULL || rxq->event_fd <= 0) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+ rxq->enable_events = 1;
+ return 0;
+}
+
+static int
+fs_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx)
+{
+ struct rxq *rxq;
+ uint64_t u64;
+
+ if (idx >= dev->data->nb_rx_queues) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+ rxq = dev->data->rx_queues[idx];
+ if (rxq == NULL || rxq->event_fd <= 0) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+ rxq->enable_events = 0;
+ /* Clear pending events */
+ while (read(rxq->event_fd, &u64, sizeof(uint64_t)) > 0)
+ ;
+ return 0;
+}
+