#define PMD_DEBUG_TRACE(fmt, args...)
#endif
-/* define two macros for quick checking for restricting functions to primary
- * instance only. First macro is for functions returning an int - and therefore
- * an error code, second macro is for functions returning null.
- */
-#define PROC_PRIMARY_OR_ERR() do { \
+/* Macros for checking for restricting functions to primary instance only */
+#define PROC_PRIMARY_OR_ERR_RET(retval) do { \
if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \
- PMD_DEBUG_TRACE("Cannot run %s in secondary processes\n", \
- __func__); \
- return (-E_RTE_SECONDARY); \
- } \
+ PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \
+ return (retval); \
+ } \
} while(0)
-
#define PROC_PRIMARY_OR_RET() do { \
if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \
- PMD_DEBUG_TRACE("Cannot run %s in secondary processes\n", \
- __func__); \
+ PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \
return; \
} \
} while(0)
{
struct rte_eth_dev *eth_dev;
- if (nb_ports == RTE_MAX_ETHPORTS)
+ if (nb_ports == RTE_MAX_ETHPORTS) {
+ PMD_DEBUG_TRACE("Reached maximum number of ethernet ports\n");
return NULL;
+ }
if (rte_eth_dev_data == NULL)
rte_eth_dev_data_alloc();
if (eth_dev == NULL)
return -ENOMEM;
-
if (rte_eal_process_type() == RTE_PROC_PRIMARY){
eth_dev->data->dev_private = rte_zmalloc("ethdev private structure",
eth_drv->dev_private_size,
CACHE_LINE_SIZE);
if (eth_dev->data->dev_private == NULL)
- return -ENOMEM;
+ rte_panic("Cannot allocate memzone for private port data\n");
}
eth_dev->pci_dev = pci_dev;
eth_dev->driver = eth_drv;
/* This function is only safe when called from the primary process
* in a multi-process setup*/
- PROC_PRIMARY_OR_ERR();
+ PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
if (port_id >= nb_ports || port_id >= RTE_MAX_ETHPORTS) {
PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
if (dev->data->dev_started) {
PMD_DEBUG_TRACE(
- "port %d must be stopped to allow configuration", port_id);
- return -EBUSY;
+ "port %d must be stopped to allow configuration\n", port_id);
+ return (-EBUSY);
}
/*
*/
(*dev->dev_ops->dev_infos_get)(dev, &dev_info);
if (nb_rx_q > dev_info.max_rx_queues) {
- PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d",
+ PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_queues=%d > %d\n",
port_id, nb_rx_q, dev_info.max_rx_queues);
return (-EINVAL);
}
if (nb_rx_q == 0) {
- PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_q == 0", port_id);
+ PMD_DEBUG_TRACE("ethdev port_id=%d nb_rx_q == 0\n", port_id);
return (-EINVAL);
}
if (nb_tx_q > dev_info.max_tx_queues) {
- PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d",
+ PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_queues=%d > %d\n",
port_id, nb_tx_q, dev_info.max_tx_queues);
return (-EINVAL);
}
if (nb_tx_q == 0) {
- PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_q == 0", port_id);
+ PMD_DEBUG_TRACE("ethdev port_id=%d nb_tx_q == 0\n", port_id);
return (-EINVAL);
}
if (dev_conf->rxmode.max_rx_pkt_len >
dev_info.max_rx_pktlen) {
PMD_DEBUG_TRACE("ethdev port_id=%d max_rx_pkt_len %u"
- " > max valid value %u",
+ " > max valid value %u\n",
port_id,
(unsigned)dev_conf->rxmode.max_rx_pkt_len,
(unsigned)dev_info.max_rx_pktlen);
if (nb_rx_q != ETH_VMDQ_DCB_NUM_QUEUES) {
PMD_DEBUG_TRACE("ethdev port_id=%d VMDQ+DCB, nb_rx_q "
- "!= %d",
+ "!= %d\n",
port_id, ETH_VMDQ_DCB_NUM_QUEUES);
return (-EINVAL);
}
if (! (conf->nb_queue_pools == ETH_16_POOLS ||
conf->nb_queue_pools == ETH_32_POOLS)) {
PMD_DEBUG_TRACE("ethdev port_id=%d VMDQ+DCB selected, "
- "nb_queue_pools != %d or nb_queue_pools "
- "!= %d",
+ "nb_queue_pools must be %d or %d\n",
port_id, ETH_16_POOLS, ETH_32_POOLS);
return (-EINVAL);
}
/* This function is only safe when called from the primary process
* in a multi-process setup*/
- PROC_PRIMARY_OR_ERR();
+ PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
if (port_id >= nb_ports) {
PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
}
dev = &rte_eth_devices[port_id];
+
FUNC_PTR_OR_RET(*dev->dev_ops->dev_close);
dev->data->dev_started = 0;
(*dev->dev_ops->dev_close)(dev);
/* This function is only safe when called from the primary process
* in a multi-process setup*/
- PROC_PRIMARY_OR_ERR();
+ PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
if (port_id >= nb_ports) {
PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
if (dev->data->dev_started) {
PMD_DEBUG_TRACE(
- "port %d must be stopped to allow configuration", port_id);
+ "port %d must be stopped to allow configuration\n", port_id);
return -EBUSY;
}
/* This function is only safe when called from the primary process
* in a multi-process setup*/
- PROC_PRIMARY_OR_ERR();
+ PROC_PRIMARY_OR_ERR_RET(-E_RTE_SECONDARY);
if (port_id >= nb_ports) {
PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
if (dev->data->dev_started) {
PMD_DEBUG_TRACE(
- "port %d must be stopped to allow configuration", port_id);
+ "port %d must be stopped to allow configuration\n", port_id);
return -EBUSY;
}
PMD_DEBUG_TRACE("port %d: vlan-filtering disabled\n", port_id);
return (-ENOSYS);
}
+
if (vlan_id > 4095) {
PMD_DEBUG_TRACE("(port_id=%d) invalid vlan_id=%u > 4095\n",
port_id, (unsigned) vlan_id);
return (-EINVAL);
}
-
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->vlan_filter_set, -ENOTSUP);
(*dev->dev_ops->vlan_filter_set)(dev, vlan_id, on);
return (0);
|| fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
- "None l4type source & destinations ports " \
- "should be null!");
+ "None l4type, source & destinations ports " \
+ "should be null!\n");
return (-EINVAL);
}
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_add_signature_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_add_signature_filter)
- return (*dev->dev_ops->fdir_add_signature_filter)(dev,
- fdir_filter,
- queue);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
+ return (*dev->dev_ops->fdir_add_signature_filter)(dev, fdir_filter,
+ queue);
}
int
|| fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
- "None l4type source & destinations ports " \
- "should be null!");
+ "None l4type, source & destinations ports " \
+ "should be null!\n");
return (-EINVAL);
}
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_update_signature_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_update_signature_filter)
- return (*dev->dev_ops->fdir_update_signature_filter)(dev,
- fdir_filter,
- queue);
+ return (*dev->dev_ops->fdir_update_signature_filter)(dev, fdir_filter,
+ queue);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
}
int
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
"None l4type source & destinations ports " \
- "should be null!");
+ "should be null!\n");
return (-EINVAL);
}
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_remove_signature_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_remove_signature_filter)
- return (*dev->dev_ops->fdir_remove_signature_filter)(dev,
- fdir_filter);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
+ return (*dev->dev_ops->fdir_remove_signature_filter)(dev, fdir_filter);
}
int
}
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_infos_get, -ENOTSUP);
- if (*dev->dev_ops->fdir_infos_get) {
- (*dev->dev_ops->fdir_infos_get)(dev, fdir);
- return (0);
- }
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
+ (*dev->dev_ops->fdir_infos_get)(dev, fdir);
+ return (0);
}
int
|| fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
- "None l4type source & destinations ports " \
- "should be null!");
+ "None l4type, source & destinations ports " \
+ "should be null!\n");
return (-EINVAL);
}
return (-ENOTSUP);
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_add_perfect_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_add_perfect_filter)
- return (*dev->dev_ops->fdir_add_perfect_filter)(dev, fdir_filter,
+ return (*dev->dev_ops->fdir_add_perfect_filter)(dev, fdir_filter,
soft_id, queue,
drop);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
}
int
|| fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
- "None l4type source & destinations ports " \
- "should be null!");
+ "None l4type, source & destinations ports " \
+ "should be null!\n");
return (-EINVAL);
}
return (-ENOTSUP);
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_update_perfect_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_update_perfect_filter)
- return (*dev->dev_ops->fdir_update_perfect_filter)(dev,
- fdir_filter,
- soft_id,
- queue,
- drop);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return (-ENOTSUP);
+ return (*dev->dev_ops->fdir_update_perfect_filter)(dev, fdir_filter,
+ soft_id, queue, drop);
}
int
|| fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)
&& (fdir_filter->port_src || fdir_filter->port_dst)) {
PMD_DEBUG_TRACE(" Port are meaningless for SCTP and " \
- "None l4type source & destinations ports " \
- "should be null!");
+ "None l4type, source & destinations ports " \
+ "should be null!\n");
return (-EINVAL);
}
return (-ENOTSUP);
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_remove_perfect_filter, -ENOTSUP);
- if (*dev->dev_ops->fdir_remove_perfect_filter)
- return (*dev->dev_ops->fdir_remove_perfect_filter)(dev,
- fdir_filter,
- soft_id);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n", port_id);
- return -ENOTSUP;
+ return (*dev->dev_ops->fdir_remove_perfect_filter)(dev, fdir_filter,
+ soft_id);
}
int
return (-ENOTSUP);
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_set_masks, -ENOTSUP);
- if (*dev->dev_ops->fdir_set_masks)
- return (*dev->dev_ops->fdir_set_masks)(dev, fdir_mask);
-
- PMD_DEBUG_TRACE("port %d: FDIR feature not supported\n",
- port_id);
- return -ENOTSUP;
+ return (*dev->dev_ops->fdir_set_masks)(dev, fdir_mask);
}
int
}
dev = &rte_eth_devices[port_id];
-
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_led_on, -ENOTSUP);
return ((*dev->dev_ops->dev_led_on)(dev));
}
}
dev = &rte_eth_devices[port_id];
-
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_led_off, -ENOTSUP);
return ((*dev->dev_ops->dev_led_off)(dev));
}
return (-ENODEV);
}
dev = &rte_eth_devices[port_id];
-
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->mac_addr_add, -ENOTSUP);
+
if (is_zero_ether_addr(addr)) {
PMD_DEBUG_TRACE("port %d: Cannot add NULL MAC address\n", port_id);
return (-EINVAL);
return (-ENODEV);
}
dev = &rte_eth_devices[port_id];
-
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->mac_addr_remove, -ENOTSUP);
+
index = get_mac_addr_index(port_id, addr);
if (index == 0) {
PMD_DEBUG_TRACE("port %d: Cannot remove default MAC address\n", port_id);
return 0;
}
dev = &rte_eth_devices[port_id];
-
FUNC_PTR_OR_ERR_RET(*dev->rx_pkt_burst, -ENOTSUP);
if (queue_id >= dev->data->nb_rx_queues) {
PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", queue_id);