do { (void) (priv); } while (0)
#endif /* CONFIG_INFINIBAND_SDP_DEBUG */
+#ifdef CONFIG_INFINIBAND_SDP_DEBUG_DATA
+extern int sdp_data_debug_level;
+#define sdp_dbg_data(sk, format, arg...) \
+ do { \
+ if (sdp_data_debug_level > 0) \
+ sdp_printk(KERN_DEBUG, sk, format , ## arg); \
+ } while (0)
+#else
+#define sdp_dbg_data(priv, format, arg...) \
+ do { (void) (priv); } while (0)
+#endif
+
#define SDP_RESOLVE_TIMEOUT 1000
#define SDP_ROUTE_TIMEOUT 1000
#define SDP_RETRY_COUNT 5
void sdp_post_sends(struct sdp_sock *ssk, int nonagle)
{
- /* TODO: nonagle */
+ /* TODO: nonagle? */
struct sk_buff *skb;
int c;
wake_up(&ssk->wq);
} else {
/* TODO: handle msg < bsdh */
- sdp_dbg(&ssk->isk.sk,
- "Recv completion. ID %d Length %d\n",
- (int)wc->wr_id, wc->byte_len);
+ sdp_dbg_data(&ssk->isk.sk,
+ "Recv completion. ID %d Length %d\n",
+ (int)wc->wr_id, wc->byte_len);
skb->len = wc->byte_len;
skb->data_len = wc->byte_len - sizeof(struct sdp_bsdh);
if (unlikely(skb->data_len < 0)) {
struct ib_cq *cq;
int n, i;
- sdp_dbg(sk, "%s\n", __func__);
+ sdp_dbg_data(sk, "%s\n", __func__);
cq = ssk->cq;
if (unlikely(!cq))
module_param_named(debug_level, sdp_debug_level, int, 0644);
MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0.");
#endif
+#ifdef CONFIG_INFINIBAND_SDP_DEBUG
+int sdp_data_debug_level;
+
+module_param_named(data_debug_level, sdp_data_debug_level, int, 0644);
+MODULE_PARM_DESC(data_debug_level, "Enable data path debug tracing if > 0.");
+#endif
struct workqueue_struct *sdp_workqueue;
long timeo;
lock_sock(sk);
- sdp_dbg(sk, "%s\n", __func__);
+ sdp_dbg_data(sk, "%s\n", __func__);
flags = msg->msg_flags;
timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT);
int urg_data = 0;
lock_sock(sk);
- sdp_dbg(sk, "%s\n", __func__);
+ sdp_dbg_data(sk, "%s\n", __func__);
err = -ENOTCONN;
if (sk->sk_state == TCP_LISTEN)
release_sock(sk);
lock_sock(sk);
} else {
- sdp_dbg(sk, "%s: sk_wait_data %ld\n", __func__, timeo);
+ sdp_dbg_data(sk, "%s: sk_wait_data %ld\n", __func__, timeo);
sk_wait_data(sk, &timeo);
}
continue;
found_ok_skb:
- sdp_dbg(sk, "%s: found_ok_skb len %d\n", __func__, skb->len);
- sdp_dbg(sk, "%s: len %Zd offset %d\n", __func__, len, offset);
- sdp_dbg(sk, "%s: copied %d target %d\n", __func__, copied, target);
+ sdp_dbg_data(sk, "%s: found_ok_skb len %d\n", __func__, skb->len);
+ sdp_dbg_data(sk, "%s: len %Zd offset %d\n", __func__, len, offset);
+ sdp_dbg_data(sk, "%s: copied %d target %d\n", __func__, copied, target);
urg_data = sdp_has_urgent_data(skb);
used = skb->len - offset;
if (len < used)
used = len;
- sdp_dbg(sk, "%s: used %ld\n", __func__, used);
+ sdp_dbg_data(sk, "%s: used %ld\n", __func__, used);
if (!(flags & MSG_TRUNC)) {
int err;
copied += used;
len -= used;
offset += used;
- sdp_dbg(sk, "%s: done copied %d target %d\n", __func__, copied, target);
+ sdp_dbg_data(sk, "%s: done copied %d target %d\n", __func__, copied, target);
sdp_rcv_space_adjust(sk);
struct poll_table_struct *wait)
{
int mask;
- sdp_dbg(socket->sk, "%s\n", __func__);
+ sdp_dbg_data(socket->sk, "%s\n", __func__);
mask = datagram_poll(file, socket, wait);
/* TODO: Slightly ugly: it would be nicer if there was function