X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmemif%2Fmemif_socket.c;h=67794cb6fa8c9d50e183d8daebb542044785bb35;hb=06123fdd6063e411ea78ed353f0d6114e500b1b3;hp=8ce2cc9fafab00c50e1fb60bef8f12c62d7e941e;hpb=cbbbbd3365d299f55233b8f9a09ce0d9e43ec3ad;p=dpdk.git diff --git a/drivers/net/memif/memif_socket.c b/drivers/net/memif/memif_socket.c index 8ce2cc9faf..67794cb6fa 100644 --- a/drivers/net/memif/memif_socket.c +++ b/drivers/net/memif/memif_socket.c @@ -204,6 +204,13 @@ memif_msg_receive_init(struct memif_control_channel *cc, memif_msg_t *msg) pmd = dev->data->dev_private; if (((pmd->flags & ETH_MEMIF_FLAG_DISABLED) == 0) && (pmd->id == i->id) && (pmd->role == MEMIF_ROLE_MASTER)) { + if (pmd->flags & (ETH_MEMIF_FLAG_CONNECTING | + ETH_MEMIF_FLAG_CONNECTED)) { + memif_msg_enq_disconnect(cc, + "Already connected", 0); + return -1; + } + /* assign control channel to device */ cc->dev = dev; pmd->cc = cc; @@ -215,12 +222,6 @@ memif_msg_receive_init(struct memif_control_channel *cc, memif_msg_t *msg) return -1; } - if (pmd->flags & (ETH_MEMIF_FLAG_CONNECTING | - ETH_MEMIF_FLAG_CONNECTED)) { - memif_msg_enq_disconnect(pmd->cc, - "Already connected", 0); - return -1; - } strlcpy(pmd->remote_name, (char *)i->name, sizeof(pmd->remote_name)); @@ -772,6 +773,7 @@ memif_intr_handler(void *arg) ret = memif_msg_receive(cc); /* if driver failed to assign device */ if (cc->dev == NULL) { + memif_msg_send_from_queue(cc); ret = rte_intr_callback_unregister_pending(&cc->intr_handle, memif_intr_handler, cc,