|
|
|
@ -502,7 +502,9 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb, |
|
|
|
|
static void nes_retrans_expired(struct nes_cm_node *cm_node) |
|
|
|
|
{ |
|
|
|
|
struct iw_cm_id *cm_id = cm_node->cm_id; |
|
|
|
|
switch (cm_node->state) { |
|
|
|
|
enum nes_cm_node_state state = cm_node->state; |
|
|
|
|
cm_node->state = NES_CM_STATE_CLOSED; |
|
|
|
|
switch (state) { |
|
|
|
|
case NES_CM_STATE_SYN_RCVD: |
|
|
|
|
case NES_CM_STATE_CLOSING: |
|
|
|
|
rem_ref_cm_node(cm_node->cm_core, cm_node); |
|
|
|
@ -511,7 +513,6 @@ static void nes_retrans_expired(struct nes_cm_node *cm_node) |
|
|
|
|
case NES_CM_STATE_FIN_WAIT1: |
|
|
|
|
if (cm_node->cm_id) |
|
|
|
|
cm_id->rem_ref(cm_id); |
|
|
|
|
cm_node->state = NES_CM_STATE_CLOSED; |
|
|
|
|
send_reset(cm_node, NULL); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
@ -1439,9 +1440,6 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb, |
|
|
|
|
break; |
|
|
|
|
case NES_CM_STATE_MPAREQ_RCVD: |
|
|
|
|
passive_state = atomic_add_return(1, &cm_node->passive_state); |
|
|
|
|
if (passive_state == NES_SEND_RESET_EVENT) |
|
|
|
|
create_event(cm_node, NES_CM_EVENT_RESET); |
|
|
|
|
cm_node->state = NES_CM_STATE_CLOSED; |
|
|
|
|
dev_kfree_skb_any(skb); |
|
|
|
|
break; |
|
|
|
|
case NES_CM_STATE_ESTABLISHED: |
|
|
|
@ -1456,6 +1454,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb, |
|
|
|
|
case NES_CM_STATE_CLOSED: |
|
|
|
|
drop_packet(skb); |
|
|
|
|
break; |
|
|
|
|
case NES_CM_STATE_FIN_WAIT2: |
|
|
|
|
case NES_CM_STATE_FIN_WAIT1: |
|
|
|
|
case NES_CM_STATE_LAST_ACK: |
|
|
|
|
cm_node->cm_id->rem_ref(cm_node->cm_id); |
|
|
|
@ -2777,6 +2776,12 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) |
|
|
|
|
return -EINVAL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
passive_state = atomic_add_return(1, &cm_node->passive_state); |
|
|
|
|
if (passive_state == NES_SEND_RESET_EVENT) { |
|
|
|
|
rem_ref_cm_node(cm_node->cm_core, cm_node); |
|
|
|
|
return -ECONNRESET; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* associate the node with the QP */ |
|
|
|
|
nesqp->cm_node = (void *)cm_node; |
|
|
|
|
cm_node->nesqp = nesqp; |
|
|
|
@ -2979,9 +2984,6 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) |
|
|
|
|
printk(KERN_ERR "%s[%u] OFA CM event_handler returned, " |
|
|
|
|
"ret=%d\n", __func__, __LINE__, ret); |
|
|
|
|
|
|
|
|
|
passive_state = atomic_add_return(1, &cm_node->passive_state); |
|
|
|
|
if (passive_state == NES_SEND_RESET_EVENT) |
|
|
|
|
create_event(cm_node, NES_CM_EVENT_RESET); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|