ethdev: fix device capability to string translation
[dpdk.git] / lib / ethdev / rte_ethdev.c
index 74de29c..a1d475a 100644 (file)
@@ -171,6 +171,8 @@ static const struct {
        {RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP, "RUNTIME_RX_QUEUE_SETUP"},
        {RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP, "RUNTIME_TX_QUEUE_SETUP"},
        {RTE_ETH_DEV_CAPA_RXQ_SHARE, "RXQ_SHARE"},
+       {RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP, "FLOW_RULE_KEEP"},
+       {RTE_ETH_DEV_CAPA_FLOW_SHARED_OBJECT_KEEP, "FLOW_SHARED_OBJECT_KEEP"},
 };
 
 /**
@@ -757,10 +759,13 @@ rte_eth_dev_owner_delete(const uint64_t owner_id)
        rte_spinlock_lock(&eth_dev_shared_data->ownership_lock);
 
        if (eth_is_valid_owner_id(owner_id)) {
-               for (port_id = 0; port_id < RTE_MAX_ETHPORTS; port_id++)
-                       if (rte_eth_devices[port_id].data->owner.id == owner_id)
-                               memset(&rte_eth_devices[port_id].data->owner, 0,
+               for (port_id = 0; port_id < RTE_MAX_ETHPORTS; port_id++) {
+                       struct rte_eth_dev_data *data =
+                               rte_eth_devices[port_id].data;
+                       if (data != NULL && data->owner.id == owner_id)
+                               memset(&data->owner, 0,
                                       sizeof(struct rte_eth_dev_owner));
+               }
                RTE_ETHDEV_LOG(NOTICE,
                        "All port owners owned by %016"PRIx64" identifier have removed\n",
                        owner_id);
@@ -4819,13 +4824,13 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data)
        }
 
        intr_handle = dev->intr_handle;
-       if (!intr_handle->intr_vec) {
+       if (rte_intr_vec_list_index_get(intr_handle, 0) < 0) {
                RTE_ETHDEV_LOG(ERR, "Rx Intr vector unset\n");
                return -EPERM;
        }
 
        for (qid = 0; qid < dev->data->nb_rx_queues; qid++) {
-               vec = intr_handle->intr_vec[qid];
+               vec = rte_intr_vec_list_index_get(intr_handle, qid);
                rc = rte_intr_rx_ctl(intr_handle, epfd, op, vec, data);
                if (rc && rc != -EEXIST) {
                        RTE_ETHDEV_LOG(ERR,
@@ -4860,15 +4865,15 @@ rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id)
        }
 
        intr_handle = dev->intr_handle;
-       if (!intr_handle->intr_vec) {
+       if (rte_intr_vec_list_index_get(intr_handle, 0) < 0) {
                RTE_ETHDEV_LOG(ERR, "Rx Intr vector unset\n");
                return -1;
        }
 
-       vec = intr_handle->intr_vec[queue_id];
+       vec = rte_intr_vec_list_index_get(intr_handle, queue_id);
        efd_idx = (vec >= RTE_INTR_VEC_RXTX_OFFSET) ?
                (vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
-       fd = intr_handle->efds[efd_idx];
+       fd = rte_intr_efds_index_get(intr_handle, efd_idx);
 
        return fd;
 }
@@ -5046,12 +5051,12 @@ rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
        }
 
        intr_handle = dev->intr_handle;
-       if (!intr_handle->intr_vec) {
+       if (rte_intr_vec_list_index_get(intr_handle, 0) < 0) {
                RTE_ETHDEV_LOG(ERR, "Rx Intr vector unset\n");
                return -EPERM;
        }
 
-       vec = intr_handle->intr_vec[queue_id];
+       vec = rte_intr_vec_list_index_get(intr_handle, queue_id);
        rc = rte_intr_rx_ctl(intr_handle, epfd, op, vec, data);
        if (rc && rc != -EEXIST) {
                RTE_ETHDEV_LOG(ERR,