]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/sdp: print queued rx and tx status to proc_fs implement SIOCOUTQ ioctl
authorAmi Perlmutter <amip@dev.mellanox.co.il>
Wed, 9 May 2007 09:16:08 +0000 (12:16 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:04:07 +0000 (05:04 -0700)
Signed-off-by: Ami Perlmutter <amip@dev.mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp.h
drivers/infiniband/ulp/sdp/sdp_bcopy.c
drivers/infiniband/ulp/sdp/sdp_main.c

index 70354151cecdc7d55136a0400410af1853e7fa82..7cfc9faebaca77687fd99b84af741677f86636f3 100644 (file)
@@ -106,6 +106,7 @@ struct sdp_sock {
        u32 rcv_nxt;
 
        int write_seq;
+       int snd_una;
        int pushed_seq;
        int xmit_size_goal;
        int nonagle;
index e5004b25c7717d0c7bb79d509e83268ab67fd3be..62206482a61be26b3c4dbef1fdc48d00a98552ac 100644 (file)
@@ -164,6 +164,7 @@ struct sk_buff *sdp_send_completion(struct sdp_sock *ssk, int mseq)
                                  DMA_TO_DEVICE);
        }
 
+       ssk->snd_una += TCP_SKB_CB(skb)->end_seq;
        ++ssk->tx_tail;
        return skb;
 }
index 7773c15bf906c1399c93cb6599e438ebbc2eea51..321ba92c4b2120f9c4a9d7bfc2644210b303d4c0 100644 (file)
@@ -699,6 +699,15 @@ static int sdp_ioctl(struct sock *sk, int cmd, unsigned long arg)
        case SIOCATMARK:
                answ = ssk->urg_data && ssk->urg_seq == ssk->copied_seq;
                break;
+       case SIOCOUTQ:
+               if (sk->sk_state == TCP_LISTEN)
+                       return -EINVAL;
+
+               if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV))
+                       answ = 0;
+               else
+                       answ = ssk->write_seq - ssk->snd_una;
+               break;
        default:
                return -ENOIOCTLCMD;
        }
@@ -1763,10 +1772,12 @@ static int sdp_seq_show(struct seq_file *seq, void *v)
        unsigned long inode;
        __u16 destp;
        __u16 srcp;
+       __u32 rx_queue, tx_queue;
 
        if (v == SEQ_START_TOKEN) {
                seq_printf(seq, "%-*s\n", TMPSZ - 1,
-                               "  sl  local_address rem_address        uid inode");
+                               "  sl  local_address rem_address        uid inode"
+                               "   rx_queue tx_queue");
                goto out;
        }
 
@@ -1778,8 +1789,12 @@ static int sdp_seq_show(struct seq_file *seq, void *v)
        srcp = ntohs(inet_sk(sk)->sport);
        uid = sock_i_uid(sk);
        inode = sock_i_ino(sk);
+       rx_queue = sdp_sk(sk)->rcv_nxt - sdp_sk(sk)->copied_seq;
+       tx_queue = sdp_sk(sk)->write_seq - sdp_sk(sk)->snd_una;
 
-       sprintf(tmpbuf, "%4d: %08X:%04X %08X:%04X %5d %lu", st->num, src, srcp, dest, destp, uid, inode);
+       sprintf(tmpbuf, "%4d: %08X:%04X %08X:%04X %5d %lu       %08X:%08X",
+               st->num, src, srcp, dest, destp, uid, inode,
+               rx_queue, tx_queue);
 
        seq_printf(seq, "%-*s\n", TMPSZ - 1, tmpbuf);