PERFORCE change 135724 for review
Steve Wise
swise at FreeBSD.org
Tue Feb 19 15:44:30 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=135724
Change 135724 by swise at swise:vic10:iwarp on 2008/02/19 15:44:09
Set SO_NO_DDP for rdma sockets.
Affected files ...
.. //depot/projects/iwarp/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c#4 edit
.. //depot/projects/iwarp/sys/kern/uipc_socket.c#4 edit
Differences ...
==== //depot/projects/iwarp/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c#4 (text+ko) ====
@@ -647,6 +647,11 @@
goto err;
}
+ if (ep->com.so->so_rcv.sb_mb) {
+ printf("%s data after soreceive called! so %p sb_mb %p top %p\n",
+ __FUNCTION__, ep->com.so, ep->com.so->so_rcv.sb_mb, top);
+ }
+
m = top;
do {
/*
@@ -1282,6 +1287,9 @@
static int create_sock(struct iwch_ep_common *epc)
{
int err;
+ struct sockopt sopt;
+ int on=1;
+
err = socreate(AF_INET, &epc->so, SOCK_STREAM, IPPROTO_TCP,
epc->thread->td_ucred, epc->thread);
if (err)
@@ -1290,6 +1298,19 @@
epc->so->so_upcallarg = epc;
epc->so->so_rcv.sb_flags |= SB_UPCALL;
epc->so->so_state |= SS_NBIO;
+
+ PDBG("%s ep %p so %p state %s\n", __FUNCTION__, ep, ep->com.so, states[ep->com.state]);
+
+ sopt.sopt_dir = SOPT_SET;
+ sopt.sopt_level = SOL_SOCKET;
+ sopt.sopt_name = SO_NO_DDP;
+ sopt.sopt_val = (caddr_t)&on;
+ sopt.sopt_valsize = sizeof on;
+ sopt.sopt_td = NULL;
+ err = sosetopt(epc->so, &sopt);
+ if (err)
+ printf("%s can't set SO_NO_DDP err %d\n", __FUNCTION__, err);
+
return 0;
}
@@ -1526,8 +1547,9 @@
default:
if (ep->com.so->so_rcv.sb_cc)
printf("%s Unexpected streaming data."
- " ep %p state %d so %p\n",
- __FUNCTION__, ep, state_read(&ep->com), ep->com.so);
+ " ep %p state %d so %p so_state %x so_rcv.sb_cc %u so_rcv.sb_mb %p\n",
+ __FUNCTION__, ep, state_read(&ep->com), ep->com.so, ep->com.so->so_state,
+ ep->com.so->so_rcv.sb_cc, ep->com.so->so_rcv.sb_mb);
break;
}
return;
==== //depot/projects/iwarp/sys/kern/uipc_socket.c#4 (text+ko) ====
@@ -2015,6 +2015,8 @@
case SO_TIMESTAMP:
case SO_BINTIME:
case SO_NOSIGPIPE:
+ case SO_NO_DDP:
+ case SO_NO_OFFLOAD:
error = sooptcopyin(sopt, &optval, sizeof optval,
sizeof optval);
if (error)
More information about the p4-projects
mailing list