X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fionic%2Fionic_main.c;h=7301f53342e0b5cde0004b1ab1c5fb2bf54d8e9d;hb=7fbbc981d54fa59fb5f3242d0bf3210e9d23137b;hp=0d2e02fdd035d9fa7d72a2324a1bb3490b51db4e;hpb=be39f75cd47f590e801912c085f895d6f8143ec1;p=dpdk.git diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 0d2e02fdd0..7301f53342 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -197,6 +197,7 @@ ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) struct ionic_queue *q = &lif->adminqcq->qcq.q; 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); @@ -210,7 +211,14 @@ ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) 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); @@ -448,7 +456,8 @@ ionic_port_init(struct ionic_adapter *adapter) 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);