u32 sendmsg_seglen[25];
u32 send_size[25];
u32 post_recv;
- u32 rx_int_count;
- u32 tx_int_count;
+ u32 int_count;
u32 bzcopy_poll_miss;
u32 send_wait_for_mem;
u32 send_miss_no_credits;
#define SDP_OP_RECV 0x800000000LL
#define SDP_OP_SEND 0x400000000LL
+#ifndef MIN
+#define MIN(a, b) (a < b ? a : b)
+#endif
+
extern struct list_head sock_list;
extern spinlock_t sock_list_lock;
goto err_cq;
}
- ib_req_notify_cq(cq, IB_CQ_NEXT_COMP);
+ rc = ib_modify_cq(cq, 10, 200);
+ if (rc) {
+ sdp_warn(sk, "Unable to modify RX CQ: %d.\n", rc);
+ goto err_qp;
+ }
+ sdp_warn(sk, "Initialized CQ moderation\n");
qp_init_attr.send_cq = qp_init_attr.recv_cq = cq;
sizeof(struct sdp_bsdh);
sdp_sk(child)->send_frags = PAGE_ALIGN(sdp_sk(child)->xmit_size_goal) /
PAGE_SIZE;
- sdp_init_buffers(sdp_sk(child), ntohl(h->desremrcvsz));
+ sdp_init_buffers(sdp_sk(child), rcvbuf_initial_size);
- sdp_dbg(child, "%s bufs %d xmit_size_goal %d send trigger %d\n",
+ sdp_dbg(child, "%s recv_frags: %d bufs %d xmit_size_goal %d send trigger %d\n",
__func__,
+ sdp_sk(child)->recv_frags,
sdp_sk(child)->bufs,
sdp_sk(child)->xmit_size_goal,
sdp_sk(child)->min_bufs);
sdp_sk(sk)->min_bufs = sdp_sk(sk)->bufs / 4;
sdp_sk(sk)->xmit_size_goal = ntohl(h->actrcvsz) -
sizeof(struct sdp_bsdh);
- sdp_sk(sk)->send_frags = PAGE_ALIGN(sdp_sk(sk)->xmit_size_goal) /
- PAGE_SIZE;
+ sdp_sk(sk)->send_frags = MIN(PAGE_ALIGN(sdp_sk(sk)->xmit_size_goal) /
+ PAGE_SIZE, SDP_MAX_SEND_SKB_FRAGS);
+ sdp_sk(sk)->xmit_size_goal = MIN(sdp_sk(sk)->xmit_size_goal,
+ sdp_sk(sk)->send_frags * PAGE_SIZE);
- sdp_dbg(sk, "%s bufs %d xmit_size_goal %d send trigger %d\n",
+ sdp_dbg(sk, "%s bufs %d xmit_size_goal %d send_frags: %d send trigger %d\n",
__func__,
sdp_sk(sk)->bufs,
sdp_sk(sk)->xmit_size_goal,
+ sdp_sk(sk)->send_frags,
sdp_sk(sk)->min_bufs);
sdp_sk(sk)->poll_cq = 1;
seq_printf(seq, "tx_poll_miss \t\t: %d\n", sdpstats.tx_poll_miss);
seq_printf(seq, "CQ stats:\n");
- seq_printf(seq, "- RX interrupts\t\t: %d\n", sdpstats.rx_int_count);
- seq_printf(seq, "- TX interrupts\t\t: %d\n", sdpstats.tx_int_count);
+ seq_printf(seq, "- interrupts\t\t: %d\n", sdpstats.int_count);
return 0;
}