]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: port the code to uek2
authorDotan Barak <dotanb@dev.mellanox.co.il>
Tue, 3 Jul 2012 10:09:47 +0000 (13:09 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:53 +0000 (05:05 -0700)
Signed-off-by: Dotan Barak <dotanb@dev.mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp.h
drivers/infiniband/ulp/sdp/sdp_bcopy.c
drivers/infiniband/ulp/sdp/sdp_main.c
drivers/infiniband/ulp/sdp/sdp_proc.c
drivers/infiniband/ulp/sdp/sdp_rx.c
drivers/infiniband/ulp/sdp/sdp_tx.c

index 5fba626375630ee3c331b2adb1fb20f0adf3b55d..0017384d71af93e058c7c660b547ed24105f5e5b 100644 (file)
 #endif
 #endif
 
-#define inet_num(sk) inet_sk(sk)->num
-#define inet_sport(sk) inet_sk(sk)->sport
-#define inet_dport(sk) inet_sk(sk)->dport
-#define inet_saddr(sk) inet_sk(sk)->saddr
-#define sdp_inet_daddr(sk) inet_sk(sk)->daddr
-#define sdp_inet_rcv_saddr(sk) inet_sk(sk)->rcv_saddr
-
-#define sdp_sk_sleep(sk) (sk)->sk_sleep
+#define inet_num(sk) inet_sk(sk)->inet_num
+#define inet_sport(sk) inet_sk(sk)->inet_sport
+#define inet_dport(sk) inet_sk(sk)->inet_dport
+#define inet_saddr(sk) inet_sk(sk)->inet_saddr
+#define sdp_inet_daddr(sk) inet_sk(sk)->inet_daddr
+#define sdp_inet_rcv_saddr(sk) inet_sk(sk)->inet_rcv_saddr
+
+#define sdp_sk_sleep(sk) sk_sleep(sk)
 #define sk_ssk(ssk) ((struct sock *)ssk)
 
 /* Interval between sucessive polls in the Tx routine when polling is used
index afb2d102fe03c775f0dc6cd065105b68e980f0b7..508ac8490887ccea9ff5c08fd52f8c68478fcff9 100644 (file)
@@ -125,8 +125,8 @@ static inline int sdp_nagle_off(struct sdp_sock *ssk, struct sk_buff *skb)
                !ssk->nagle_last_unacked ||
                skb->next != (struct sk_buff *)&sk_ssk(ssk)->sk_write_queue ||
                skb->len + sizeof(struct sdp_bsdh) >= ssk->xmit_size_goal ||
-               (SDP_SKB_CB(skb)->flags & TCPCB_FLAG_PSH) ||
-               (SDP_SKB_CB(skb)->flags & TCPCB_FLAG_URG);
+               (SDP_SKB_CB(skb)->flags & TCPHDR_PSH) ||
+               (SDP_SKB_CB(skb)->flags & TCPHDR_URG);
 
        if (send_now) {
                unsigned long mseq = ring_head(ssk->tx_ring);
index bd2ff731c899080f6663354f6e6096810e6c10b8..1067f21ced78d78fa1f0aba9f9aa7fb52f9d9631 100644 (file)
@@ -589,10 +589,10 @@ static void sdp_destruct(struct sock *sk)
 
        if (sk->sk_wmem_queued || atomic_read(&sk->sk_rmem_alloc) || sk->sk_forward_alloc) {
                sdp_dbg(sk, "wmem_queued: 0x%x rmem_alloc: 0x%x forward: 0x%x "
-                               "proto: 0x%x\n", sk->sk_wmem_queued,
+                               "proto: 0x%lx\n", sk->sk_wmem_queued,
                                atomic_read(&sk->sk_rmem_alloc),
                                sk->sk_forward_alloc,
-                               atomic_read(sk->sk_prot->memory_allocated));
+                               atomic_long_read(sk->sk_prot->memory_allocated));
        }
 
        if (ssk->parent)
@@ -1348,7 +1348,7 @@ static void sdp_shutdown(struct sock *sk, int how)
 
 static void sdp_mark_push(struct sdp_sock *ssk, struct sk_buff *skb)
 {
-       SDP_SKB_CB(skb)->flags |= TCPCB_FLAG_PSH;
+       SDP_SKB_CB(skb)->flags |= TCPHDR_PSH;
        sdp_do_posts(ssk);
 }
 
@@ -1624,7 +1624,7 @@ static inline void sdp_mark_urg(struct sock *sk, int flags)
 {
        if (unlikely(flags & MSG_OOB)) {
                struct sk_buff *skb = sk->sk_write_queue.prev;
-               SDP_SKB_CB(skb)->flags |= TCPCB_FLAG_URG;
+               SDP_SKB_CB(skb)->flags |= TCPHDR_URG;
        }
 }
 
@@ -1985,7 +1985,7 @@ new_segment:
                        }
 
                        if (!copied)
-                               SDP_SKB_CB(skb)->flags &= ~TCPCB_FLAG_PSH;
+                               SDP_SKB_CB(skb)->flags &= ~TCPHDR_PSH;
 
                        ssk->write_seq += copy;
                        SDP_SKB_CB(skb)->end_seq += copy;
@@ -2599,7 +2599,7 @@ void sdp_urg(struct sdp_sock *ssk, struct sk_buff *skb)
 }
 
 static struct percpu_counter *sockets_allocated;
-static atomic_t memory_allocated;
+static atomic_long_t memory_allocated;
 static struct percpu_counter *orphan_count;
 static int memory_pressure;
 struct proto sdp_proto = {
@@ -2734,13 +2734,15 @@ static int sdp_create_ipvx_socket(struct net *net, struct socket *sock, int prot
 }
 
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-static int sdp_create_v6_socket(struct net *net, struct socket *sock, int protocol)
+static int sdp_create_v6_socket(struct net *net, struct socket *sock, int protocol,
+                               int kern)
 {
        return sdp_create_ipvx_socket(net, sock, protocol, &sdp_ipv6_proto_ops);
 }
 #endif
 
-static int sdp_create_v4_socket(struct net *net, struct socket *sock, int protocol)
+static int sdp_create_v4_socket(struct net *net, struct socket *sock, int protocol,
+                               int kern)
 {
        return sdp_create_ipvx_socket(net, sock, protocol, &sdp_ipv4_proto_ops);
 }
@@ -2988,9 +2990,9 @@ static void __exit sdp_exit(void)
 
        BUG_ON(!list_empty(&sock_list));
 
-       if (atomic_read(&memory_allocated))
-               sdp_dbg(NULL, "SDP detected memory leak. Memory_allocated: %d\n",
-                      atomic_read(&memory_allocated));
+       if (atomic_long_read(&memory_allocated))
+               sdp_dbg(NULL, "SDP detected memory leak. Memory_allocated: %ld\n",
+                      atomic_long_read(&memory_allocated));
 
        if (percpu_counter_sum(sockets_allocated))
                printk(KERN_WARNING "%s: sockets_allocated %lld\n", __func__,
index b7127d938acc033e021d6edcad41382f424c14ab..5dbd3fe94d3d4fac0d360ca2f22b0a43137d03ad 100644 (file)
@@ -716,12 +716,12 @@ static int sdp_ssk_hist_seq_show(struct seq_file *seq, void *v)
                        ssk->hst_idx, ARRAY_SIZE(ssk->hst));
 
        seq_printf(seq, "rmem: %d wmem: %d wqueue: %d "
-                       "fw: %d prot->alloc: %d\n",
+                       "fw: %d prot->alloc: %ld\n",
                        atomic_read(&sk->sk_rmem_alloc),
                        atomic_read(&sk->sk_wmem_alloc),
                        sk->sk_wmem_queued,
                        sk->sk_forward_alloc,
-                       atomic_read(sk->sk_prot->memory_allocated));
+                       atomic_long_read(sk->sk_prot->memory_allocated));
 
        for (i = 0; i < min(ssk->hst_idx, ARRAY_SIZE(ssk->hst)); ++i) {
                struct sdp_sock_hist *hst = &ssk->hst[i];
index 7b9d032662b2169cbe383985babbbe75dd57e1e1..7fa392d5955a83247fe7ab408be67d8fc8834c7e 100644 (file)
@@ -31,6 +31,7 @@
  */
 #include <linux/interrupt.h>
 #include <linux/dma-mapping.h>
+#include <linux/rcupdate.h>
 #include <rdma/ib_verbs.h>
 #include <rdma/rdma_cm.h>
 #include "sdp.h"
@@ -684,6 +685,7 @@ static void sdp_bzcopy_write_space(struct sdp_sock *ssk)
 {
        struct sock *sk = sk_ssk(ssk);
        struct socket *sock = sk->sk_socket;
+       struct socket_wq *wq;
 
        if (tx_credits(ssk) < ssk->min_bufs || !sock)
                return;
@@ -691,10 +693,13 @@ static void sdp_bzcopy_write_space(struct sdp_sock *ssk)
        clear_bit(SOCK_NOSPACE, &sock->flags);
        sdp_prf1(sk, NULL, "Waking up sleepers");
 
-       if (sdp_sk_sleep(sk) && waitqueue_active(sdp_sk_sleep(sk)))
-               wake_up_interruptible(sdp_sk_sleep(sk));
-       if (sock->fasync_list && !(sk->sk_shutdown & SEND_SHUTDOWN))
+       rcu_read_lock();
+       wq = rcu_dereference(sk->sk_wq);
+       if (wq_has_sleeper(wq))
+               wake_up_interruptible(&wq->wait);
+       if (wq && wq->fasync_list && !(sk->sk_shutdown & SEND_SHUTDOWN))
                sock_wake_async(sock, 2, POLL_OUT);
+       rcu_read_unlock();
 }
 
 int sdp_poll_rx_cq(struct sdp_sock *ssk)
index bde3ec626a807d4a77c24b027d129c149e332191..f99b87ec99ce655c39e5c6b2ec8d91783b6cfac7 100644 (file)
@@ -108,7 +108,7 @@ void sdp_post_send(struct sdp_sock *ssk, struct sk_buff *skb)
                TX_SRCAVAIL_STATE(skb)->mseq = mseq;
        }
 
-       if (unlikely(SDP_SKB_CB(skb)->flags & TCPCB_FLAG_URG))
+       if (unlikely(SDP_SKB_CB(skb)->flags & TCPHDR_URG))
                h->flags = SDP_OOB_PRES | SDP_OOB_PEND;
        else
                h->flags = 0;
@@ -168,7 +168,7 @@ void sdp_post_send(struct sdp_sock *ssk, struct sk_buff *skb)
        tx_wr.num_sge = frags + 1;
        tx_wr.opcode = IB_WR_SEND;
        tx_wr.send_flags = send_flags;
-       if (unlikely(SDP_SKB_CB(skb)->flags & TCPCB_FLAG_URG))
+       if (unlikely(SDP_SKB_CB(skb)->flags & TCPHDR_URG))
                tx_wr.send_flags |= IB_SEND_SOLICITED;
 
        rc = ib_post_send(ssk->qp, &tx_wr, &bad_wr);