Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd65d87a authored by Ursula Braun's avatar Ursula Braun Committed by David S. Miller
Browse files

net/smc: enable fallback for connection abort in state INIT



If a linkgroup is terminated abnormally already due to failing
LLC CONFIRM LINK or LLC ADD LINK, fallback to TCP is still possible.
In this case do not switch to state SMC_PEERABORTWAIT and do not set
sk_err.

Signed-off-by: default avatarUrsula Braun <ubraun@linux.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1ca52fcf
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -100,15 +100,14 @@ static void smc_close_active_abort(struct smc_sock *smc)
	struct smc_cdc_conn_state_flags *txflags =
		&smc->conn.local_tx_ctrl.conn_state_flags;

	if (sk->sk_state != SMC_INIT && smc->clcsock && smc->clcsock->sk) {
		sk->sk_err = ECONNABORTED;
		if (smc->clcsock && smc->clcsock->sk) {
			smc->clcsock->sk->sk_err = ECONNABORTED;
			smc->clcsock->sk->sk_state_change(smc->clcsock->sk);
		}
	}
	switch (sk->sk_state) {
	case SMC_INIT:
		sk->sk_state = SMC_PEERABORTWAIT;
		break;
	case SMC_ACTIVE:
		sk->sk_state = SMC_PEERABORTWAIT;
		release_sock(sk);
@@ -143,6 +142,7 @@ static void smc_close_active_abort(struct smc_sock *smc)
	case SMC_PEERFINCLOSEWAIT:
		sock_put(sk); /* passive closing */
		break;
	case SMC_INIT:
	case SMC_PEERABORTWAIT:
	case SMC_CLOSED:
		break;