From: Faisal Latif Date: Mon, 27 Apr 2009 20:41:06 +0000 (-0700) Subject: RDMA/nes: Fix hang issues for large cluster dynamic connections X-Git-Tag: v2.6.30-rc4~5^2^5~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=109d67e4f12b828113ca8ccf4a735972dd984f40;p=pandora-kernel.git RDMA/nes: Fix hang issues for large cluster dynamic connections Running large cluster setup, we are hanging after many hours of testing. Fixing this required going over the code and making sure the rexmit entry was properly removed based on the cm_node's state and packet received. Also when receiving a FIN packet, check seq# and make sure there were no errors before calling handle_fin(). Following are the changes done in nes_cm.c: * handle_ack_pkt() needs to return error value, so in case of error, handle_fin() is not called. Some cleanup done while going over the code. * handle_rst_pkt(), handling of cm_node's NES_CM_STATE_LAST_ACK is missing. * process_packet(), in case of FIN only packet is received, call check_seq() before processing. * in handle_fin_pkt(), we are calling cleanup_retrans_entry() for all conditions, even if the packets need to be dropped. Signed-off-by: Faisal Latif Signed-off-by: Roland Dreier --- Reading git-diff-tree failed