]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/caif/caif_socket.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-3.6
[karo-tx-linux.git] / net / caif / caif_socket.c
index 37a4034dfc29ddbc8a1185bd3daf42ab617e30d3..20212424e2e8a9cc1ba2e0058c2f440c88634723 100644 (file)
@@ -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 */