git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/mrvl: support jumbo frame
[dpdk.git]
/
drivers
/
net
/
enic
/
enic_main.c
diff --git
a/drivers/net/enic/enic_main.c
b/drivers/net/enic/enic_main.c
index
d026241
..
9b0439b
100644
(file)
--- a/
drivers/net/enic/enic_main.c
+++ b/
drivers/net/enic/enic_main.c
@@
-368,6
+368,7
@@
enic_alloc_consistent(void *priv, size_t size,
pr_err("%s : Failed to allocate memory for memzone list\n",
__func__);
rte_memzone_free(rz);
pr_err("%s : Failed to allocate memory for memzone list\n",
__func__);
rte_memzone_free(rz);
+ return NULL;
}
mze->rz = rz;
}
mze->rz = rz;
@@
-430,7
+431,7
@@
enic_intr_handler(void *arg)
vnic_intr_return_all_credits(&enic->intr);
enic_link_update(enic);
vnic_intr_return_all_credits(&enic->intr);
enic_link_update(enic);
- _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL);
+ _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL
, NULL
);
enic_log_q_error(enic);
}
enic_log_q_error(enic);
}
@@
-1180,6
+1181,9
@@
int enic_set_mtu(struct enic *enic, uint16_t new_mtu)
old_mtu = eth_dev->data->mtu;
config_mtu = enic->config.mtu;
old_mtu = eth_dev->data->mtu;
config_mtu = enic->config.mtu;
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return -E_RTE_SECONDARY;
+
if (new_mtu > enic->max_mtu) {
dev_err(enic,
"MTU not updated: requested (%u) greater than max (%u)\n",
if (new_mtu > enic->max_mtu) {
dev_err(enic,
"MTU not updated: requested (%u) greater than max (%u)\n",
@@
-1225,7
+1229,7
@@
int enic_set_mtu(struct enic *enic, uint16_t new_mtu)
}
}
}
}
- /* replace Rx func
it
on with a no-op to avoid getting stale pkts */
+ /* replace Rx func
ti
on with a no-op to avoid getting stale pkts */
eth_dev->rx_pkt_burst = enic_dummy_recv_pkts;
rte_mb();
eth_dev->rx_pkt_burst = enic_dummy_recv_pkts;
rte_mb();
@@
-1314,6
+1318,9
@@
static int enic_dev_init(struct enic *enic)
vnic_dev_set_reset_flag(enic->vdev, 0);
vnic_dev_set_reset_flag(enic->vdev, 0);
+ LIST_INIT(&enic->flows);
+ rte_spinlock_init(&enic->flows_lock);
+
/* set up link status checking */
vnic_dev_notify_set(enic->vdev, -1); /* No Intr for notify */
/* set up link status checking */
vnic_dev_notify_set(enic->vdev, -1); /* No Intr for notify */
@@
-1328,6
+1335,10
@@
int enic_probe(struct enic *enic)
dev_debug(enic, " Initializing ENIC PMD\n");
dev_debug(enic, " Initializing ENIC PMD\n");
+ /* if this is a secondary process the hardware is already initialized */
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return 0;
+
enic->bar0.vaddr = (void *)pdev->mem_resource[0].addr;
enic->bar0.len = pdev->mem_resource[0].len;
enic->bar0.vaddr = (void *)pdev->mem_resource[0].addr;
enic->bar0.len = pdev->mem_resource[0].len;