i40iw: Move MPA request event for loopback after connect
For loopback, a MPA request event is generated when cm_node
is initialized, which allows applications to act on the
connect request before i40iw_connect() has completed.
In some cases, the reject flow executes in parallel with
the connect flow and doesn't delete an APBVT entry,
because the apbvt_set variable is still not set by the
connect flow. Move the MPA request event to the end of
i40iw_connect() to notify application for a connect
request, after connect has completed.
Fixes: f27b4746f3
("i40iw: add connection management code")
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Signed-off-by: Henry Orosco <henry.orosco@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
a283cdc4d3
commit
8bb45252bb
|
@ -2947,8 +2947,6 @@ static struct i40iw_cm_node *i40iw_create_cm_node(
|
|||
loopback_remotenode->tcp_cntxt.snd_wnd = cm_node->tcp_cntxt.rcv_wnd;
|
||||
cm_node->tcp_cntxt.snd_wscale = loopback_remotenode->tcp_cntxt.rcv_wscale;
|
||||
loopback_remotenode->tcp_cntxt.snd_wscale = cm_node->tcp_cntxt.rcv_wscale;
|
||||
loopback_remotenode->state = I40IW_CM_STATE_MPAREQ_RCVD;
|
||||
i40iw_create_event(loopback_remotenode, I40IW_CM_EVENT_MPA_REQ);
|
||||
}
|
||||
return cm_node;
|
||||
}
|
||||
|
@ -3864,6 +3862,12 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
|||
goto err;
|
||||
}
|
||||
|
||||
if (cm_node->loopbackpartner) {
|
||||
cm_node->loopbackpartner->state = I40IW_CM_STATE_MPAREQ_RCVD;
|
||||
i40iw_create_event(cm_node->loopbackpartner,
|
||||
I40IW_CM_EVENT_MPA_REQ);
|
||||
}
|
||||
|
||||
i40iw_debug(cm_node->dev,
|
||||
I40IW_DEBUG_CM,
|
||||
"Api - connect(): port=0x%04x, cm_node=%p, cm_id = %p.\n",
|
||||
|
|
Loading…
Reference in New Issue