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
event/cnxk: support vectorized Rx event fast path
[dpdk.git]
/
drivers
/
net
/
ionic
/
ionic_main.c
diff --git
a/drivers/net/ionic/ionic_main.c
b/drivers/net/ionic/ionic_main.c
index
167a97d
..
7301f53
100644
(file)
--- a/
drivers/net/ionic/ionic_main.c
+++ b/
drivers/net/ionic/ionic_main.c
@@
-194,9
+194,10
@@
ionic_adminq_service(struct ionic_cq *cq, uint16_t cq_desc_index,
static int
ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
{
static int
ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
{
- struct ionic_queue *q = &lif->adminqcq->q;
+ struct ionic_queue *q = &lif->adminqcq->q
cq.q
;
struct ionic_admin_cmd *q_desc_base = q->base;
struct ionic_admin_cmd *q_desc;
struct ionic_admin_cmd *q_desc_base = q->base;
struct ionic_admin_cmd *q_desc;
+ void **info;
int err = 0;
rte_spinlock_lock(&lif->adminq_lock);
int err = 0;
rte_spinlock_lock(&lif->adminq_lock);
@@
-210,7
+211,14
@@
ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
memcpy(q_desc, &ctx->cmd, sizeof(ctx->cmd));
memcpy(q_desc, &ctx->cmd, sizeof(ctx->cmd));
- ionic_q_post(q, true, ctx);
+ info = IONIC_INFO_PTR(q, q->head_idx);
+ info[0] = ctx;
+
+ q->head_idx = Q_NEXT_TO_POST(q, 1);
+
+ /* Ring doorbell */
+ rte_wmb();
+ ionic_q_flush(q);
err_out:
rte_spinlock_unlock(&lif->adminq_lock);
err_out:
rte_spinlock_unlock(&lif->adminq_lock);
@@
-234,7
+242,7
@@
ionic_adminq_wait_for_completion(struct ionic_lif *lif,
*/
rte_spinlock_lock(&lif->adminq_service_lock);
*/
rte_spinlock_lock(&lif->adminq_service_lock);
- ionic_qcq_service(
lif->admin
qcq, budget,
+ ionic_qcq_service(
&lif->adminqcq->
qcq, budget,
ionic_adminq_service, NULL);
rte_spinlock_unlock(&lif->adminq_service_lock);
ionic_adminq_service, NULL);
rte_spinlock_unlock(&lif->adminq_service_lock);
@@
-448,7
+456,8
@@
ionic_port_init(struct ionic_adapter *adapter)
if (idev->port_info)
return 0;
if (idev->port_info)
return 0;
- idev->port_info_sz = RTE_ALIGN(sizeof(*idev->port_info), PAGE_SIZE);
+ idev->port_info_sz = RTE_ALIGN(sizeof(*idev->port_info),
+ rte_mem_page_size());
snprintf(z_name, sizeof(z_name), "%s_port_%s_info",
IONIC_DRV_NAME, adapter->name);
snprintf(z_name, sizeof(z_name), "%s_port_%s_info",
IONIC_DRV_NAME, adapter->name);