From: Tetsuya Mukawa <mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
To: "Zhang,
Helin" <helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>
Cc: "nakajima.yoshihiro-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org"
<nakajima.yoshihiro-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>,
"masutani.hitoshi-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org"
<masutani.hitoshi-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>,
"menrigh-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org"
<menrigh-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH v2 02/28] ethdev: Remove assumption that port will not be detached
Date: Tue, 09 Dec 2014 15:06:07 +0900 [thread overview]
Message-ID: <5486914F.7070204@igel.co.jp> (raw)
In-Reply-To: <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CFD71-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
Hi Zhang,
Thanks to your comment.
I will submit again soon.
Thanks,
Tetsuya
(2014/12/09 14:07), Zhang, Helin wrote:
>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Tetsuya Mukawa
>> Sent: Tuesday, December 9, 2014 11:42 AM
>> To: dev-VfR2kkLFssw@public.gmane.org
>> Cc: nakajima.yoshihiro-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org; menrigh-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org;
>> masutani.hitoshi-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org
>> Subject: [dpdk-dev] [PATCH v2 02/28] ethdev: Remove assumption that port will
>> not be detached
>>
>> To remove assumption, do like followings.
>>
>> - Add 'attached' member to rte_eth_dev structure.
>> This member is used for indicating the port is attached, or not.
>> - Add rte_eth_dev_allocate_new_port().
>> This function is used for allocating new port.
>>
>> Signed-off-by: Tetsuya Mukawa <mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
>> ---
>> lib/librte_ether/rte_ethdev.c | 248 ++++++++++++++++++++++++------------------
>> lib/librte_ether/rte_ethdev.h | 5 +
>> 2 files changed, 149 insertions(+), 104 deletions(-)
>>
>> diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index
>> 95f2ceb..9f713ae 100644
>> --- a/lib/librte_ether/rte_ethdev.c
>> +++ b/lib/librte_ether/rte_ethdev.c
>> @@ -175,6 +175,16 @@ enum {
>> STAT_QMAP_RX
>> };
>>
>> +enum {
>> + DEV_VALID = 0,
>> + DEV_INVALID
>> +};
> Would it be safer to define DEV_INVALID = 0, then DEV_VALID after it?
> Or even as below?
> Enum {
> DEV_UNKNOWN = 0,
> DEV_VALID,
> DEV_INVALID
> };
>
> Regards,
> Helin
>
>> +
>> +enum {
>> + DEV_DISCONNECTED = 0,
>> + DEV_CONNECTED
>> +};
>> +
>> static inline void
>> rte_eth_dev_data_alloc(void)
>> {
>> @@ -201,19 +211,34 @@ rte_eth_dev_allocated(const char *name) {
>> unsigned i;
>>
>> - for (i = 0; i < nb_ports; i++) {
>> - if (strcmp(rte_eth_devices[i].data->name, name) == 0)
>> + for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
>> + if ((rte_eth_devices[i].attached == DEV_CONNECTED)
>> + && strcmp(rte_eth_devices[i].data->name,
>> + name) == 0)
>> return &rte_eth_devices[i];
>> }
>> return NULL;
>> }
>>
>> +static uint8_t
>> +rte_eth_dev_allocate_new_port(void)
>> +{
>> + unsigned i;
>> +
>> + for (i = 0; i < RTE_MAX_ETHPORTS; i++)
>> + if (rte_eth_devices[i].attached == DEV_DISCONNECTED)
>> + return i;
>> + return RTE_MAX_ETHPORTS;
>> +}
>> +
>> struct rte_eth_dev *
>> rte_eth_dev_allocate(const char *name)
>> {
>> + uint8_t port_id;
>> struct rte_eth_dev *eth_dev;
>>
>> - if (nb_ports == RTE_MAX_ETHPORTS) {
>> + port_id = rte_eth_dev_allocate_new_port();
>> + if (port_id == RTE_MAX_ETHPORTS) {
>> PMD_DEBUG_TRACE("Reached maximum number of Ethernet
>> ports\n");
>> return NULL;
>> }
>> @@ -226,10 +251,12 @@ rte_eth_dev_allocate(const char *name)
>> return NULL;
>> }
>>
>> - eth_dev = &rte_eth_devices[nb_ports];
>> - eth_dev->data = &rte_eth_dev_data[nb_ports];
>> + eth_dev = &rte_eth_devices[port_id];
>> + eth_dev->data = &rte_eth_dev_data[port_id];
>> snprintf(eth_dev->data->name, sizeof(eth_dev->data->name), "%s",
>> name);
>> - eth_dev->data->port_id = nb_ports++;
>> + eth_dev->data->port_id = port_id;
>> + eth_dev->attached = DEV_CONNECTED;
>> + nb_ports++;
>> return eth_dev;
>> }
>>
>> @@ -283,6 +310,7 @@ rte_eth_dev_init(struct rte_pci_driver *pci_drv,
>> (unsigned) pci_dev->id.device_id);
>> if (rte_eal_process_type() == RTE_PROC_PRIMARY)
>> rte_free(eth_dev->data->dev_private);
>> + eth_dev->attached = DEV_DISCONNECTED;
>> nb_ports--;
>> return diag;
>> }
>> @@ -308,10 +336,22 @@ rte_eth_driver_register(struct eth_driver *eth_drv)
>> rte_eal_pci_register(ð_drv->pci_drv);
>> }
>>
>> +static int
>> +rte_eth_dev_validate_port(uint8_t port_id) {
>> + if (port_id >= RTE_MAX_ETHPORTS)
>> + return DEV_INVALID;
>> +
>> + if (rte_eth_devices[port_id].attached == DEV_CONNECTED)
>> + return DEV_VALID;
>> + else
>> + return DEV_INVALID;
>> +}
>> +
>> int
>> rte_eth_dev_socket_id(uint8_t port_id)
>> {
>> - if (port_id >= nb_ports)
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID)
>> return -1;
>> return rte_eth_devices[port_id].pci_dev->numa_node;
>> }
>> @@ -369,7 +409,7 @@ rte_eth_dev_rx_queue_start(uint8_t port_id, uint16_t
>> rx_queue_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -395,7 +435,7 @@ rte_eth_dev_rx_queue_stop(uint8_t port_id, uint16_t
>> rx_queue_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -421,7 +461,7 @@ rte_eth_dev_tx_queue_start(uint8_t port_id, uint16_t
>> tx_queue_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -447,7 +487,7 @@ rte_eth_dev_tx_queue_stop(uint8_t port_id, uint16_t
>> tx_queue_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -662,7 +702,7 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t
>> nb_rx_q, uint16_t nb_tx_q,
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports || port_id >= RTE_MAX_ETHPORTS) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -847,7 +887,7 @@ rte_eth_dev_start(uint8_t port_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%" PRIu8 "\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -882,7 +922,7 @@ rte_eth_dev_stop(uint8_t port_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_RET();
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%" PRIu8 "\n", port_id);
>> return;
>> }
>> @@ -910,7 +950,7 @@ rte_eth_dev_set_link_up(uint8_t port_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -929,7 +969,7 @@ rte_eth_dev_set_link_down(uint8_t port_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -EINVAL;
>> }
>> @@ -948,7 +988,7 @@ rte_eth_dev_close(uint8_t port_id)
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_RET();
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -976,7 +1016,7 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t
>> rx_queue_id,
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -1049,7 +1089,7 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t
>> tx_queue_id,
>> * in a multi-process setup*/
>> PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
>>
>> - if (port_id >= RTE_MAX_ETHPORTS || port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -1082,7 +1122,7 @@ rte_eth_promiscuous_enable(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1098,7 +1138,7 @@ rte_eth_promiscuous_disable(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1114,7 +1154,7 @@ rte_eth_promiscuous_get(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -1;
>> }
>> @@ -1128,7 +1168,7 @@ rte_eth_allmulticast_enable(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1144,7 +1184,7 @@ rte_eth_allmulticast_disable(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1160,7 +1200,7 @@ rte_eth_allmulticast_get(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -1;
>> }
>> @@ -1188,7 +1228,7 @@ rte_eth_link_get(uint8_t port_id, struct
>> rte_eth_link *eth_link) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1208,7 +1248,7 @@ rte_eth_link_get_nowait(uint8_t port_id, struct
>> rte_eth_link *eth_link) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1228,7 +1268,7 @@ rte_eth_stats_get(uint8_t port_id, struct
>> rte_eth_stats *stats) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1245,7 +1285,7 @@ rte_eth_stats_reset(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1266,7 +1306,7 @@ rte_eth_xstats_get(uint8_t port_id, struct
>> rte_eth_xstats *xstats,
>> uint64_t val;
>> char *stats_ptr;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -1;
>> }
>> @@ -1335,7 +1375,7 @@ rte_eth_xstats_reset(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1357,7 +1397,7 @@ set_queue_stats_mapping(uint8_t port_id, uint16_t
>> queue_id, uint8_t stat_idx, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -1392,7 +1432,7 @@ rte_eth_dev_info_get(uint8_t port_id, struct
>> rte_eth_dev_info *dev_info) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1412,7 +1452,7 @@ rte_eth_macaddr_get(uint8_t port_id, struct
>> ether_addr *mac_addr) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return;
>> }
>> @@ -1426,7 +1466,7 @@ rte_eth_dev_get_mtu(uint8_t port_id, uint16_t
>> *mtu) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1442,7 +1482,7 @@ rte_eth_dev_set_mtu(uint8_t port_id, uint16_t
>> mtu)
>> int ret;
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1462,7 +1502,7 @@ rte_eth_dev_vlan_filter(uint8_t port_id, uint16_t
>> vlan_id, int on) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1487,7 +1527,7 @@ rte_eth_dev_set_vlan_strip_on_queue(uint8_t
>> port_id, uint16_t rx_queue_id, int o {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1509,7 +1549,7 @@ rte_eth_dev_set_vlan_ether_type(uint8_t port_id,
>> uint16_t tpid) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1529,7 +1569,7 @@ rte_eth_dev_set_vlan_offload(uint8_t port_id, int
>> offload_mask)
>> int mask = 0;
>> int cur, org = 0;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1574,7 +1614,7 @@ rte_eth_dev_get_vlan_offload(uint8_t port_id)
>> struct rte_eth_dev *dev;
>> int ret = 0;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1598,7 +1638,7 @@ rte_eth_dev_set_vlan_pvid(uint8_t port_id,
>> uint16_t pvid, int on) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1616,7 +1656,7 @@ rte_eth_dev_fdir_add_signature_filter(uint8_t
>> port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1650,7 +1690,7 @@ rte_eth_dev_fdir_update_signature_filter(uint8_t
>> port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1684,7 +1724,7 @@ rte_eth_dev_fdir_remove_signature_filter(uint8_t
>> port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1715,7 +1755,7 @@ rte_eth_dev_fdir_get_infos(uint8_t port_id, struct
>> rte_eth_fdir *fdir) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1740,7 +1780,7 @@ rte_eth_dev_fdir_add_perfect_filter(uint8_t port_id,
>> {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1780,7 +1820,7 @@ rte_eth_dev_fdir_update_perfect_filter(uint8_t
>> port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1818,7 +1858,7 @@ rte_eth_dev_fdir_remove_perfect_filter(uint8_t
>> port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1854,7 +1894,7 @@ rte_eth_dev_fdir_set_masks(uint8_t port_id, struct
>> rte_fdir_masks *fdir_mask) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1874,7 +1914,7 @@ rte_eth_dev_flow_ctrl_get(uint8_t port_id, struct
>> rte_eth_fc_conf *fc_conf) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1890,7 +1930,7 @@ rte_eth_dev_flow_ctrl_set(uint8_t port_id, struct
>> rte_eth_fc_conf *fc_conf) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -1910,7 +1950,7 @@ rte_eth_dev_priority_flow_ctrl_set(uint8_t port_id,
>> struct rte_eth_pfc_conf *pfc {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2019,7 +2059,7 @@ rte_eth_dev_rss_reta_query(uint8_t port_id,
>> struct rte_eth_dev *dev;
>> int ret;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -2040,7 +2080,7 @@ rte_eth_dev_rss_hash_update(uint8_t port_id,
>> struct rte_eth_rss_conf *rss_conf)
>> struct rte_eth_dev *dev;
>> uint16_t rss_hash_protos;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2062,7 +2102,7 @@ rte_eth_dev_rss_hash_conf_get(uint8_t port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2077,7 +2117,7 @@ rte_eth_dev_udp_tunnel_add(uint8_t port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -2103,7 +2143,7 @@ rte_eth_dev_udp_tunnel_delete(uint8_t port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -2128,7 +2168,7 @@ rte_eth_led_on(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2143,7 +2183,7 @@ rte_eth_led_off(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2183,7 +2223,7 @@ rte_eth_dev_mac_addr_add(uint8_t port_id, struct
>> ether_addr *addr,
>> int index;
>> uint64_t pool_mask;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2234,7 +2274,7 @@ rte_eth_dev_mac_addr_remove(uint8_t port_id,
>> struct ether_addr *addr)
>> struct rte_eth_dev *dev;
>> int index;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2268,7 +2308,7 @@ rte_eth_dev_set_vf_rxmode(uint8_t port_id,
>> uint16_t vf,
>> struct rte_eth_dev *dev;
>> struct rte_eth_dev_info dev_info;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("set VF RX mode:Invalid port_id=%d\n",
>> port_id);
>> return (-ENODEV);
>> @@ -2323,7 +2363,7 @@ rte_eth_dev_uc_hash_table_set(uint8_t port_id,
>> struct ether_addr *addr,
>> int ret;
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("unicast hash setting:Invalid port_id=%d\n",
>> port_id);
>> return (-ENODEV);
>> @@ -2376,7 +2416,7 @@ rte_eth_dev_uc_all_hash_table_set(uint8_t port_id,
>> uint8_t on) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("unicast hash setting:Invalid port_id=%d\n",
>> port_id);
>> return (-ENODEV);
>> @@ -2395,7 +2435,7 @@ rte_eth_dev_set_vf_rx(uint8_t port_id,uint16_t vf,
>> uint8_t on)
>> struct rte_eth_dev *dev;
>> struct rte_eth_dev_info dev_info;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2421,7 +2461,7 @@ rte_eth_dev_set_vf_tx(uint8_t port_id,uint16_t vf,
>> uint8_t on)
>> struct rte_eth_dev *dev;
>> struct rte_eth_dev_info dev_info;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("set pool tx:Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2446,7 +2486,7 @@ rte_eth_dev_set_vf_vlan_filter(uint8_t port_id,
>> uint16_t vlan_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("VF VLAN filter:invalid port id=%d\n",
>> port_id);
>> return (-ENODEV);
>> @@ -2477,7 +2517,7 @@ int rte_eth_set_queue_rate_limit(uint8_t port_id,
>> uint16_t queue_idx,
>> struct rte_eth_dev_info dev_info;
>> struct rte_eth_link link;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("set queue rate limit:invalid port id=%d\n",
>> port_id);
>> return -ENODEV;
>> @@ -2514,7 +2554,7 @@ int rte_eth_set_vf_rate_limit(uint8_t port_id,
>> uint16_t vf, uint16_t tx_rate,
>> if (q_msk == 0)
>> return 0;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("set VF rate limit:invalid port id=%d\n",
>> port_id);
>> return -ENODEV;
>> @@ -2548,7 +2588,7 @@ rte_eth_mirror_rule_set(uint8_t port_id, {
>> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2589,7 +2629,7 @@ rte_eth_mirror_rule_reset(uint8_t port_id, uint8_t
>> rule_id) {
>> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2614,7 +2654,7 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t
>> queue_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return 0;
>> }
>> @@ -2634,7 +2674,7 @@ rte_eth_tx_burst(uint8_t port_id, uint16_t
>> queue_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return 0;
>> }
>> @@ -2654,7 +2694,7 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t
>> queue_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return 0;
>> }
>> @@ -2668,7 +2708,7 @@ rte_eth_rx_descriptor_done(uint8_t port_id,
>> uint16_t queue_id, uint16_t offset) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2689,7 +2729,7 @@ rte_eth_dev_callback_register(uint8_t port_id,
>>
>> if (!cb_fn)
>> return (-EINVAL);
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -2729,7 +2769,7 @@ rte_eth_dev_callback_unregister(uint8_t port_id,
>>
>> if (!cb_fn)
>> return (-EINVAL);
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-EINVAL);
>> }
>> @@ -2789,7 +2829,7 @@ int rte_eth_dev_bypass_init(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2809,7 +2849,7 @@ rte_eth_dev_bypass_state_show(uint8_t port_id,
>> uint32_t *state) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2828,7 +2868,7 @@ rte_eth_dev_bypass_state_set(uint8_t port_id,
>> uint32_t *new_state) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2848,7 +2888,7 @@ rte_eth_dev_bypass_event_show(uint8_t port_id,
>> uint32_t event, uint32_t *state) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2868,7 +2908,7 @@ rte_eth_dev_bypass_event_store(uint8_t port_id,
>> uint32_t event, uint32_t state) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2888,7 +2928,7 @@ rte_eth_dev_wd_timeout_store(uint8_t port_id,
>> uint32_t timeout) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2908,7 +2948,7 @@ rte_eth_dev_bypass_ver_show(uint8_t port_id,
>> uint32_t *ver) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2928,7 +2968,7 @@ rte_eth_dev_bypass_wd_timeout_show(uint8_t
>> port_id, uint32_t *wd_timeout) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2948,7 +2988,7 @@ rte_eth_dev_bypass_wd_reset(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return (-ENODEV);
>> }
>> @@ -2970,7 +3010,7 @@ rte_eth_dev_add_syn_filter(uint8_t port_id, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -2985,7 +3025,7 @@ rte_eth_dev_remove_syn_filter(uint8_t port_id) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3004,7 +3044,7 @@ rte_eth_dev_get_syn_filter(uint8_t port_id,
>> if (filter == NULL || rx_queue == NULL)
>> return -EINVAL;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3020,7 +3060,7 @@ rte_eth_dev_add_ethertype_filter(uint8_t port_id,
>> uint16_t index, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3041,7 +3081,7 @@ rte_eth_dev_remove_ethertype_filter(uint8_t
>> port_id, uint16_t index) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3060,7 +3100,7 @@ rte_eth_dev_get_ethertype_filter(uint8_t port_id,
>> uint16_t index,
>> if (filter == NULL || rx_queue == NULL)
>> return -EINVAL;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3077,7 +3117,7 @@ rte_eth_dev_add_2tuple_filter(uint8_t port_id,
>> uint16_t index, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3099,7 +3139,7 @@ rte_eth_dev_remove_2tuple_filter(uint8_t port_id,
>> uint16_t index) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3118,7 +3158,7 @@ rte_eth_dev_get_2tuple_filter(uint8_t port_id,
>> uint16_t index,
>> if (filter == NULL || rx_queue == NULL)
>> return -EINVAL;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3134,7 +3174,7 @@ rte_eth_dev_add_5tuple_filter(uint8_t port_id,
>> uint16_t index, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3157,7 +3197,7 @@ rte_eth_dev_remove_5tuple_filter(uint8_t port_id,
>> uint16_t index) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3176,7 +3216,7 @@ rte_eth_dev_get_5tuple_filter(uint8_t port_id,
>> uint16_t index,
>> if (filter == NULL || rx_queue == NULL)
>> return -EINVAL;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3193,7 +3233,7 @@ rte_eth_dev_add_flex_filter(uint8_t port_id,
>> uint16_t index, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3208,7 +3248,7 @@ rte_eth_dev_remove_flex_filter(uint8_t port_id,
>> uint16_t index) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3227,7 +3267,7 @@ rte_eth_dev_get_flex_filter(uint8_t port_id,
>> uint16_t index,
>> if (filter == NULL || rx_queue == NULL)
>> return -EINVAL;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3243,7 +3283,7 @@ rte_eth_dev_filter_supported(uint8_t port_id,
>> enum rte_filter_type filter_type) {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> @@ -3260,7 +3300,7 @@ rte_eth_dev_filter_ctrl(uint8_t port_id, enum
>> rte_filter_type filter_type, {
>> struct rte_eth_dev *dev;
>>
>> - if (port_id >= nb_ports) {
>> + if (rte_eth_dev_validate_port(port_id) == DEV_INVALID) {
>> PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
>> return -ENODEV;
>> }
>> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index
>> f66805d..257de86 100644
>> --- a/lib/librte_ether/rte_ethdev.h
>> +++ b/lib/librte_ether/rte_ethdev.h
>> @@ -1565,6 +1565,7 @@ struct rte_eth_dev {
>> struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */
>> struct rte_pci_device *pci_dev; /**< PCI info. supplied by probing */
>> struct rte_eth_dev_cb_list callbacks; /**< User application callbacks */
>> + uint8_t attached; /**< Flag indicating the port is attached */
>> };
>>
>> struct rte_eth_dev_sriov {
>> @@ -1630,6 +1631,10 @@ extern struct rte_eth_dev rte_eth_devices[];
>> * initialized by the [matching] Ethernet driver during the PCI probing phase.
>> * All devices whose port identifier is in the range
>> * [0, rte_eth_dev_count() - 1] can be operated on by network applications.
>> + * immediately after invoking rte_eal_init().
>> + * If the application unplugs a port using hotplug function, The
>> + enabled port
>> + * numbers may be noncontiguous. In the case, the applications need to
>> + manage
>> + * enabled port by themselves.
>> *
>> * @return
>> * - The total number of usable Ethernet devices.
>> --
>> 1.9.1
next prev parent reply other threads:[~2014-12-09 6:06 UTC|newest]
Thread overview: 176+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-29 8:49 [RFC PATCH 00/25] Port Hotplug Framework Tetsuya Mukawa
[not found] ` <1414572576-21371-1-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-10-29 8:49 ` [RFC PATCH 01/25] eal/pci: Add a new flag indicating a driver can detach devices at runtime Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 02/25] ethdev: Remove assumption that port will not be detached Tetsuya Mukawa
[not found] ` <1414572576-21371-3-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-10-29 15:14 ` Bruce Richardson
2014-10-30 7:24 ` Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 03/25] eal/pci: Replace pci address comparison code by eal_compare_pci_addr Tetsuya Mukawa
[not found] ` <1414572576-21371-4-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-10-29 16:28 ` Bruce Richardson
2014-10-29 8:49 ` [RFC PATCH 04/25] ethdev: Add rte_eth_dev_free to free specified device Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 05/25] eal, ethdev: Add function pointer for closing a device Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 06/25] ethdev: Add rte_eth_dev_shutdown for closing PCI devices Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 07/25] ethdev: Add functions to know which port is attached or detached Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 08/25] ethdev: Add rte_eth_dev_get_addr_by_port Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 09/25] ethdev: Add rte_eth_dev_get_port_by_addr Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 10/25] ethdev: Add rte_eth_dev_get_name_by_port Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 11/25] ethdev: Add rte_eth_dev_check_detachable Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 12/25] ethdev: Change scope of rte_eth_dev_allocated to global Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 13/25] eal/pci: Prevent double registration for devargs_list Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 14/25] eal/pci: Add rte_eal_devargs_remove Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 15/25] eal/pci: Add probe and close function for virtual drivers Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 16/25] eal/pci: Add port hotplug functions for virtual devices Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 17/25] eal/linux/pci: Add functions for unmapping igb_uio resources Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 18/25] eal/pci: Prevent double registrations for pci_device_list Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 19/25] eal/pci: Change scope of rte_eal_pci_scan to global Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 20/25] eal/pci: Add rte_eal_pci_close_one_driver Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 21/25] eal/pci: Fix pci_probe_all_drivers to share code with closing function Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 22/25] eal/pci: Add pci_close_all_drivers Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 23/25] eal/pci: Add rte_eal_pci_probe_one and rte_eal_pci_close_one Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 24/25] eal/pci: Add port hotplug functions for physical devices Tetsuya Mukawa
2014-10-29 8:49 ` [RFC PATCH 25/25] eal: Enable port hotplug framework in Linux Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 00/25] Port Hotplug Framework Tetsuya Mukawa
[not found] ` <1415072748-31937-1-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-11-04 3:45 ` [RFC PATCH v2 01/28] eal/pci: Add a new flag indicating a driver can detach devices at runtime Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 02/28] ethdev: Remove assumption that port will not be detached Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 03/28] eal/pci: Replace pci address comparison code by eal_compare_pci_addr Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 04/28] ethdev: Add rte_eth_dev_free to free specified device Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 05/28] eal, ethdev: Add function pointer for closing a device Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 06/28] ethdev: Add rte_eth_dev_shutdown for closing PCI devices Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 07/28] ethdev: Add functions to know which port is attached or detached Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 08/28] ethdev: Add rte_eth_dev_get_addr_by_port Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 09/28] ethdev: Add rte_eth_dev_get_port_by_addr Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 10/28] ethdev: Add rte_eth_dev_get_name_by_port Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 11/28] ethdev: Add rte_eth_dev_check_detachable Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 12/28] ethdev: Change scope of rte_eth_dev_allocated to global Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 13/28] eal/pci: Prevent double registration for devargs_list Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 14/28] eal/pci: Add rte_eal_devargs_remove Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 15/28] eal/pci: Add probe and close function for virtual drivers Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 16/28] eal/pci: Add port hotplug functions for virtual devices Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 17/28] eal/linux/pci: Add functions for unmapping igb_uio resources Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 18/28] eal/pci: Prevent double registrations for pci_device_list Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 19/28] eal/pci: Change scope of rte_eal_pci_scan to global Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 20/28] eal/pci: Add rte_eal_pci_close_one_driver Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 21/28] eal/pci: Fix pci_probe_all_drivers to share code with closing function Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 22/28] eal/pci: Add pci_close_all_drivers Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 23/28] eal/pci: Add rte_eal_pci_probe_one and rte_eal_pci_close_one Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 24/28] eal/pci: Add port hotplug functions for physical devices Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 25/28] eal: Enable port hotplug framework in Linux Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 26/28] librte_pmd_pcap: Add support for port hotplug Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 27/28] testpmd: Add support for the port hotplug framework Tetsuya Mukawa
2014-11-04 3:45 ` [RFC PATCH v2 28/28] librte_pmd_e1000: Add workaround to test " Tetsuya Mukawa
2014-11-18 8:55 ` [RFC PATCH v2 00/25] Port Hotplug Framework Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH " Tetsuya Mukawa
[not found] ` <1416474399-16851-1-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-11-20 9:06 ` [PATCH 01/25] eal/pci: Add a new flag indicating a driver can detach devices at runtime Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 02/25] ethdev: Remove assumption that port will not be detached Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 03/25] eal/pci: Replace pci address comparison code by eal_compare_pci_addr Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 04/25] ethdev: Add rte_eth_dev_free to free specified device Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 05/25] eal, ethdev: Add function pointer for closing a device Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 06/25] ethdev: Add rte_eth_dev_shutdown for closing PCI devices Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 07/25] ethdev: Add functions to know which port is attached or detached Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 08/25] ethdev: Add rte_eth_dev_get_addr_by_port Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 09/25] ethdev: Add rte_eth_dev_get_port_by_addr Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 10/25] ethdev: Add rte_eth_dev_get_name_by_port Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 11/25] ethdev: Add rte_eth_dev_check_detachable Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 12/25] ethdev: Change scope of rte_eth_dev_allocated to global Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 13/25] eal/pci: Prevent double registration for devargs_list Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 14/25] eal/pci: Add rte_eal_devargs_remove Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 15/25] eal/pci: Add probe and close function for virtual drivers Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 16/25] eal/pci: Add port hotplug functions for virtual devices Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 17/25] eal/linux/pci: Add functions for unmapping igb_uio resources Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 18/25] eal/pci: Prevent double registrations for pci_device_list Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 19/25] eal/pci: Change scope of rte_eal_pci_scan to global Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 20/25] eal/pci: Add rte_eal_pci_close_one_driver Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 21/25] eal/pci: Fix pci_probe_all_drivers to share code with closing function Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 22/25] eal/pci: Add pci_close_all_drivers Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 23/25] eal/pci: Add rte_eal_pci_probe_one and rte_eal_pci_close_one Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 24/25] eal/pci: Add port hotplug functions for physical devices Tetsuya Mukawa
2014-11-20 9:06 ` [PATCH 25/25] eal: Enable port hotplug framework in Linux Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 00/28] Port Hotplug Framework Tetsuya Mukawa
[not found] ` <1418096571-27531-1-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-12-09 3:42 ` [PATCH v2 01/28] eal/pci: Add a new flag indicating a driver can detach devices at runtime Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 02/28] ethdev: Remove assumption that port will not be detached Tetsuya Mukawa
[not found] ` <1418096571-27531-3-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-12-09 5:07 ` Zhang, Helin
[not found] ` <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7CFD71-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-09 6:06 ` Tetsuya Mukawa [this message]
2014-12-09 3:42 ` [PATCH v2 03/28] eal/pci: Replace pci address comparison code by eal_compare_pci_addr Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 04/28] ethdev: Add rte_eth_dev_free to free specified device Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 05/28] eal, ethdev: Add function pointer for closing a device Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 06/28] ethdev: Add rte_eth_dev_shutdown for closing PCI devices Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 07/28] ethdev: Add functions to know which port is attached or detached Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 08/28] ethdev: Add rte_eth_dev_get_addr_by_port Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 09/28] ethdev: Add rte_eth_dev_get_port_by_addr Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 10/28] ethdev: Add rte_eth_dev_get_name_by_port Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 11/28] ethdev: Add rte_eth_dev_check_detachable Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 12/28] ethdev: Change scope of rte_eth_dev_allocated to global Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 13/28] eal/pci: Prevent double registration for devargs_list Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 14/28] eal/pci: Add rte_eal_devargs_remove Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 15/28] eal/pci: Add probe and close function for virtual drivers Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 16/28] eal/pci: Add port hotplug functions for virtual devices Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 17/28] eal/linux/pci: Add functions for unmapping igb_uio resources Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 18/28] eal/pci: Prevent double registrations for pci_device_list Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 19/28] eal/pci: Change scope of rte_eal_pci_scan to global Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 20/28] eal/pci: Add rte_eal_pci_close_one_driver Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 21/28] eal/pci: Fix pci_probe_all_drivers to share code with closing function Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 22/28] eal/pci: Add pci_close_all_drivers Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 23/28] eal/pci: Add rte_eal_pci_probe_one and rte_eal_pci_close_one Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 24/28] eal/pci: Add port hotplug functions for physical devices Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 25/28] eal/pci: Remove pci_probe/close_all_drivers() Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 26/28] eal/pci: Add rte_eal_dev_attach/detach() functions Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 27/28] eal/pci: Remove rte_eal_dev_attach/detach_pdev() and rte_eal_dev_attach/detach_vdev() Tetsuya Mukawa
2014-12-09 3:42 ` [PATCH v2 28/28] eal: Enable port hotplug framework in Linux Tetsuya Mukawa
2014-12-09 3:44 ` [PATCH v2] librte_pmd_pcap: Add port hotplug support Tetsuya Mukawa
2014-12-09 3:45 ` [PATCH v2] testpmd: " Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 00/28] Port Hotplug Framework Tetsuya Mukawa
[not found] ` <1418106629-22227-1-git-send-email-mukawa-AlSX/UN32fvPDbFq/vQRIQ@public.gmane.org>
2014-12-09 6:30 ` [PATCH v3 01/28] eal/pci: Add a new flag indicating a driver can detach devices at runtime Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 02/28] ethdev: Remove assumption that port will not be detached Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 03/28] eal/pci: Replace pci address comparison code by eal_compare_pci_addr Tetsuya Mukawa
2014-12-09 14:22 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9E1CB-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 3:11 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 04/28] ethdev: Add rte_eth_dev_free to free specified device Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 05/28] eal, ethdev: Add function pointer for closing a device Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 06/28] ethdev: Add rte_eth_dev_shutdown for closing PCI devices Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 07/28] ethdev: Add functions to know which port is attached or detached Tetsuya Mukawa
2014-12-09 14:39 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9E1E8-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 3:12 ` Tetsuya Mukawa
2014-12-11 3:35 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9EC10-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 4:57 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 08/28] ethdev: Add rte_eth_dev_get_addr_by_port Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 09/28] ethdev: Add rte_eth_dev_get_port_by_addr Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 10/28] ethdev: Add rte_eth_dev_get_name_by_port Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 11/28] ethdev: Add rte_eth_dev_check_detachable Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 12/28] ethdev: Change scope of rte_eth_dev_allocated to global Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 13/28] eal/pci: Prevent double registration for devargs_list Tetsuya Mukawa
2014-12-09 14:55 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9E203-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 4:57 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 14/28] eal/pci: Add rte_eal_devargs_remove Tetsuya Mukawa
2014-12-09 15:36 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9E22F-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 1:40 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 15/28] eal/pci: Add probe and close function for virtual drivers Tetsuya Mukawa
2014-12-09 15:51 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9E24E-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 3:14 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 16/28] eal/pci: Add port hotplug functions for virtual devices Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 17/28] eal/linux/pci: Add functions for unmapping igb_uio resources Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 18/28] eal/pci: Prevent double registrations for pci_device_list Tetsuya Mukawa
2014-12-11 3:24 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9EBEA-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 5:33 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 19/28] eal/pci: Change scope of rte_eal_pci_scan to global Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 20/28] eal/pci: Add rte_eal_pci_close_one_driver Tetsuya Mukawa
2014-12-11 3:41 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9EC20-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 9:55 ` Bruce Richardson
2014-12-11 15:45 ` Qiu, Michael
2014-12-09 6:30 ` [PATCH v3 21/28] eal/pci: Fix pci_probe_all_drivers to share code with closing function Tetsuya Mukawa
2014-12-11 3:50 ` Qiu, Michael
2014-12-11 4:46 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9EC61-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 4:59 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 22/28] eal/pci: Add pci_close_all_drivers Tetsuya Mukawa
2014-12-11 5:23 ` Qiu, Michael
2014-12-09 6:30 ` [PATCH v3 23/28] eal/pci: Add rte_eal_pci_probe_one and rte_eal_pci_close_one Tetsuya Mukawa
2014-12-11 5:54 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9ECE7-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 7:20 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 24/28] eal/pci: Add port hotplug functions for physical devices Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 25/28] eal/pci: Remove pci_probe/close_all_drivers() Tetsuya Mukawa
2014-12-11 6:02 ` Qiu, Michael
[not found] ` <533710CFB86FA344BFBF2D6802E60286C9ECF7-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-11 7:20 ` Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 26/28] eal/pci: Add rte_eal_dev_attach/detach() functions Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 27/28] eal/pci: Remove rte_eal_dev_attach/detach_pdev() and rte_eal_dev_attach/detach_vdev() Tetsuya Mukawa
2014-12-09 6:30 ` [PATCH v3 28/28] eal: Enable port hotplug framework in Linux Tetsuya Mukawa
2014-12-09 6:32 ` [PATCH v3] librte_pmd_pcap: Add port hotplug support Tetsuya Mukawa
2014-12-09 6:33 ` [PATCH v3] testpmd: " Tetsuya Mukawa
2014-11-20 9:22 ` [PATCH] librte_pmd_pcap: " Tetsuya Mukawa
2014-11-20 9:22 ` [PATCH] testpmd: " Tetsuya Mukawa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5486914F.7070204@igel.co.jp \
--to=mukawa-alsx/un32fvpdbfq/vqriq@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=helin.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=masutani.hitoshi-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org \
--cc=menrigh-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org \
--cc=nakajima.yoshihiro-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.