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
5f2188b
..
9b0439b
100644
(file)
--- a/
drivers/net/enic/enic_main.c
+++ b/
drivers/net/enic/enic_main.c
@@
-202,20
+202,19
@@
void enic_del_mac_address(struct enic *enic, int mac_index)
dev_err(enic, "del mac addr failed\n");
}
dev_err(enic, "del mac addr failed\n");
}
-
void
enic_set_mac_address(struct enic *enic, uint8_t *mac_addr)
+
int
enic_set_mac_address(struct enic *enic, uint8_t *mac_addr)
{
int err;
if (!is_eth_addr_valid(mac_addr)) {
dev_err(enic, "invalid mac address\n");
{
int err;
if (!is_eth_addr_valid(mac_addr)) {
dev_err(enic, "invalid mac address\n");
- return;
+ return
-EINVAL
;
}
err = vnic_dev_add_addr(enic->vdev, mac_addr);
}
err = vnic_dev_add_addr(enic->vdev, mac_addr);
- if (err)
{
+ if (err)
dev_err(enic, "add mac addr failed\n");
dev_err(enic, "add mac addr failed\n");
- return;
- }
+ return err;
}
static void
}
static void
@@
-369,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;
@@
-431,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);
}
@@
-1181,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",
@@
-1226,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();
@@
-1315,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 */
@@
-1329,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;