• Faisal Latif's avatar
    RDMA/nes: Handle MPA Reject message properly · 9d5ab133
    Faisal Latif authored
    While doing testing, there are failures as MPA Reject call is not
    handled.  To handle MPA Reject call, following changes are done:
    
    *Handle inbound/outbound MPA Reject response message.
    	When nes_reject() is called for pending MPA request reply,
    	send the MPA Reject message to its peer (active
    	side)cm_node. The peer cm_node (active side) will indicate
    	Reject message event for the pending Connect Request.
    
    *Handle MPA Reject response message for loopback connections and listener.
    	When MPA Request is rejected, check if it is a loopback
    	connection and if it is then it will send Reject message event
    	to its peer loopback node. Also when destroying listener,
    	check if the cm_nodes for that listener are loopback or not.
    
    *Add gracefull connection close with the MPA Reject response message.
    	Send gracefull close (FIN, FIN ACK..) to terminate the cm_nodes.
    
    *Some code re-org while making the above changes.
    	Removed recv_list and recv_list_lock from the cm_node
    	structure as there can be only one receive close entry on the
    	timer. Also implemented handle_recv_entry() as receive close
    	entry is processed from both nes_rem_ref_cm_node() as well as
    	nes_cm_timer_tick().
    Signed-off-by: default avatarFaisal Latif <faisal.latif@intel.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    9d5ab133
nes_cm.c 98.3 KB