diff options
Diffstat (limited to 'net/caif/caif_socket.c')
| -rw-r--r-- | net/caif/caif_socket.c | 35 | 
1 files changed, 3 insertions, 32 deletions
diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c index 37a4034dfc2..20212424e2e 100644 --- a/net/caif/caif_socket.c +++ b/net/caif/caif_socket.c @@ -519,43 +519,14 @@ static int transmit_skb(struct sk_buff *skb, struct caifsock *cf_sk,  			int noblock, long timeo)  {  	struct cfpkt *pkt; -	int ret, loopcnt = 0;  	pkt = cfpkt_fromnative(CAIF_DIR_OUT, skb);  	memset(cfpkt_info(pkt), 0, sizeof(struct caif_payload_info)); -	do { - -		ret = -ETIMEDOUT; -		/* Slight paranoia, probably not needed. */ -		if (unlikely(loopcnt++ > 1000)) { -			pr_warn("transmit retries failed, error = %d\n", ret); -			break; -		} +	if (cf_sk->layer.dn == NULL) +		return -EINVAL; -		if (cf_sk->layer.dn != NULL) -			ret = cf_sk->layer.dn->transmit(cf_sk->layer.dn, pkt); -		if (likely(ret >= 0)) -			break; -		/* if transmit return -EAGAIN, then retry */ -		if (noblock && ret == -EAGAIN) -			break; -		timeo = caif_wait_for_flow_on(cf_sk, 0, timeo, &ret); -		if (signal_pending(current)) { -			ret = sock_intr_errno(timeo); -			break; -		} -		if (ret) -			break; -		if (cf_sk->sk.sk_state != CAIF_CONNECTED || -			sock_flag(&cf_sk->sk, SOCK_DEAD) || -			(cf_sk->sk.sk_shutdown & RCV_SHUTDOWN)) { -			ret = -EPIPE; -			cf_sk->sk.sk_err = EPIPE; -			break; -		} -	} while (ret == -EAGAIN); -	return ret; +	return cf_sk->layer.dn->transmit(cf_sk->layer.dn, pkt);  }  /* Copied from af_unix:unix_dgram_sendmsg, and adapted to CAIF */  |