Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Apr 2014 10:38:41 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r264036 - in projects/sendfile/sys/dev/cxgbe: iw_cxgbe tom
Message-ID:  <201404021038.s32AcfGk017209@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Wed Apr  2 10:38:41 2014
New Revision: 264036
URL: http://svnweb.freebsd.org/changeset/base/264036

Log:
  Use sbused() instead of access to sb_cc in cxgbe(4).

Modified:
  projects/sendfile/sys/dev/cxgbe/iw_cxgbe/cm.c
  projects/sendfile/sys/dev/cxgbe/tom/t4_cpl_io.c
  projects/sendfile/sys/dev/cxgbe/tom/t4_ddp.c

Modified: projects/sendfile/sys/dev/cxgbe/iw_cxgbe/cm.c
==============================================================================
--- projects/sendfile/sys/dev/cxgbe/iw_cxgbe/cm.c	Wed Apr  2 10:07:36 2014	(r264035)
+++ projects/sendfile/sys/dev/cxgbe/iw_cxgbe/cm.c	Wed Apr  2 10:38:41 2014	(r264036)
@@ -585,8 +585,8 @@ process_data(struct c4iw_ep *ep)
 {
 	struct sockaddr_in *local, *remote;
 
-	CTR5(KTR_IW_CXGBE, "%s: so %p, ep %p, state %s, sb_cc %d", __func__,
-	    ep->com.so, ep, states[ep->com.state], ep->com.so->so_rcv.sb_cc);
+	CTR5(KTR_IW_CXGBE, "%s: so %p, ep %p, state %s, sbused %d", __func__,
+	    ep->com.so, ep, states[ep->com.state], sbused(&ep->com.so->so_rcv));
 
 	switch (state_read(&ep->com)) {
 	case MPA_REQ_SENT:
@@ -602,11 +602,11 @@ process_data(struct c4iw_ep *ep)
 		process_mpa_request(ep);
 		break;
 	default:
-		if (ep->com.so->so_rcv.sb_cc)
-			log(LOG_ERR, "%s: Unexpected streaming data.  "
-			    "ep %p, state %d, so %p, so_state 0x%x, sb_cc %u\n",
+		if (sbused(&ep->com.so->so_rcv))
+			log(LOG_ERR, "%s: Unexpected streaming data. ep %p, "
+			    "state %d, so %p, so_state 0x%x, sbused %u\n",
 			    __func__, ep, state_read(&ep->com), ep->com.so,
-			    ep->com.so->so_state, ep->com.so->so_rcv.sb_cc);
+			    ep->com.so->so_state, sbused(&ep->com.so->so_rcv));
 		break;
 	}
 }

Modified: projects/sendfile/sys/dev/cxgbe/tom/t4_cpl_io.c
==============================================================================
--- projects/sendfile/sys/dev/cxgbe/tom/t4_cpl_io.c	Wed Apr  2 10:07:36 2014	(r264035)
+++ projects/sendfile/sys/dev/cxgbe/tom/t4_cpl_io.c	Wed Apr  2 10:38:41 2014	(r264036)
@@ -338,11 +338,11 @@ t4_rcvd(struct toedev *tod, struct tcpcb
 	INP_WLOCK_ASSERT(inp);
 
 	SOCKBUF_LOCK(sb);
-	KASSERT(toep->sb_cc >= sb->sb_cc,
+	KASSERT(toep->sb_cc >= sbused(sb),
 	    ("%s: sb %p has more data (%d) than last time (%d).",
-	    __func__, sb, sb->sb_cc, toep->sb_cc));
-	toep->rx_credits += toep->sb_cc - sb->sb_cc;
-	toep->sb_cc = sb->sb_cc;
+	    __func__, sb, sbused(sb), toep->sb_cc));
+	toep->rx_credits += toep->sb_cc - sbused(sb);
+	toep->sb_cc = sbused(sb);
 	credits = toep->rx_credits;
 	SOCKBUF_UNLOCK(sb);
 
@@ -863,15 +863,15 @@ do_peer_close(struct sge_iq *iq, const s
 		tp->rcv_nxt = be32toh(cpl->rcv_nxt);
 		toep->ddp_flags &= ~(DDP_BUF0_ACTIVE | DDP_BUF1_ACTIVE);
 
-		KASSERT(toep->sb_cc >= sb->sb_cc,
+		KASSERT(toep->sb_cc >= sbused(sb),
 		    ("%s: sb %p has more data (%d) than last time (%d).",
-		    __func__, sb, sb->sb_cc, toep->sb_cc));
-		toep->rx_credits += toep->sb_cc - sb->sb_cc;
+		    __func__, sb, sbused(sb), toep->sb_cc));
+		toep->rx_credits += toep->sb_cc - sbused(sb);
 #ifdef USE_DDP_RX_FLOW_CONTROL
 		toep->rx_credits -= m->m_len;	/* adjust for F_RX_FC_DDP */
 #endif
 		sbappendstream_locked(sb, m, 0);
-		toep->sb_cc = sb->sb_cc;
+		toep->sb_cc = sbused(sb);
 	}
 	socantrcvmore_locked(so);	/* unlocks the sockbuf */
 
@@ -1281,12 +1281,12 @@ do_rx_data(struct sge_iq *iq, const stru
 		}
 	}
 
-	KASSERT(toep->sb_cc >= sb->sb_cc,
+	KASSERT(toep->sb_cc >= sbused(sb),
 	    ("%s: sb %p has more data (%d) than last time (%d).",
-	    __func__, sb, sb->sb_cc, toep->sb_cc));
-	toep->rx_credits += toep->sb_cc - sb->sb_cc;
+	    __func__, sb, sbused(sb), toep->sb_cc));
+	toep->rx_credits += toep->sb_cc - sbused(sb);
 	sbappendstream_locked(sb, m, 0);
-	toep->sb_cc = sb->sb_cc;
+	toep->sb_cc = sbused(sb);
 	sorwakeup_locked(so);
 	SOCKBUF_UNLOCK_ASSERT(sb);
 

Modified: projects/sendfile/sys/dev/cxgbe/tom/t4_ddp.c
==============================================================================
--- projects/sendfile/sys/dev/cxgbe/tom/t4_ddp.c	Wed Apr  2 10:07:36 2014	(r264035)
+++ projects/sendfile/sys/dev/cxgbe/tom/t4_ddp.c	Wed Apr  2 10:38:41 2014	(r264036)
@@ -224,15 +224,15 @@ insert_ddp_data(struct toepcb *toep, uin
 	tp->rcv_wnd -= n;
 #endif
 
-	KASSERT(toep->sb_cc >= sb->sb_cc,
+	KASSERT(toep->sb_cc >= sbused(sb),
 	    ("%s: sb %p has more data (%d) than last time (%d).",
-	    __func__, sb, sb->sb_cc, toep->sb_cc));
-	toep->rx_credits += toep->sb_cc - sb->sb_cc;
+	    __func__, sb, sbused(sb), toep->sb_cc));
+	toep->rx_credits += toep->sb_cc - sbused(sb);
 #ifdef USE_DDP_RX_FLOW_CONTROL
 	toep->rx_credits -= n;	/* adjust for F_RX_FC_DDP */
 #endif
 	sbappendstream_locked(sb, m, 0);
-	toep->sb_cc = sb->sb_cc;
+	toep->sb_cc = sbused(sb);
 }
 
 /* SET_TCB_FIELD sent as a ULP command looks like this */
@@ -459,15 +459,15 @@ handle_ddp_data(struct toepcb *toep, __b
 	else
 		discourage_ddp(toep);
 
-	KASSERT(toep->sb_cc >= sb->sb_cc,
+	KASSERT(toep->sb_cc >= sbused(sb),
 	    ("%s: sb %p has more data (%d) than last time (%d).",
-	    __func__, sb, sb->sb_cc, toep->sb_cc));
-	toep->rx_credits += toep->sb_cc - sb->sb_cc;
+	    __func__, sb, sbused(sb), toep->sb_cc));
+	toep->rx_credits += toep->sb_cc - sbused(sb);
 #ifdef USE_DDP_RX_FLOW_CONTROL
 	toep->rx_credits -= len;	/* adjust for F_RX_FC_DDP */
 #endif
 	sbappendstream_locked(sb, m, 0);
-	toep->sb_cc = sb->sb_cc;
+	toep->sb_cc = sbused(sb);
 wakeup:
 	KASSERT(toep->ddp_flags & db_flag,
 	    ("%s: DDP buffer not active. toep %p, ddp_flags 0x%x, report 0x%x",
@@ -897,7 +897,7 @@ handle_ddp(struct socket *so, struct uio
 #endif
 
 	/* XXX: too eager to disable DDP, could handle NBIO better than this. */
-	if (sb->sb_cc >= uio->uio_resid || uio->uio_resid < sc->tt.ddp_thres ||
+	if (sbused(sb) >= uio->uio_resid || uio->uio_resid < sc->tt.ddp_thres ||
 	    uio->uio_resid > MAX_DDP_BUFFER_SIZE || uio->uio_iovcnt > 1 ||
 	    so->so_state & SS_NBIO || flags & (MSG_DONTWAIT | MSG_NBIO) ||
 	    error || so->so_error || sb->sb_state & SBS_CANTRCVMORE)
@@ -935,7 +935,7 @@ handle_ddp(struct socket *so, struct uio
 	 * payload.
 	 */
 	ddp_flags = select_ddp_flags(so, flags, db_idx);
-	wr = mk_update_tcb_for_ddp(sc, toep, db_idx, sb->sb_cc, ddp_flags);
+	wr = mk_update_tcb_for_ddp(sc, toep, db_idx, sbused(sb), ddp_flags);
 	if (wr == NULL) {
 		/*
 		 * Just unhold the pages.  The DDP buffer's software state is
@@ -960,8 +960,9 @@ handle_ddp(struct socket *so, struct uio
 	 */
 	rc = sbwait(sb);
 	while (toep->ddp_flags & buf_flag) {
+		/* XXXGL: shouldn't here be sbwait() call? */
 		sb->sb_flags |= SB_WAIT;
-		msleep(&sb->sb_cc, &sb->sb_mtx, PSOCK , "sbwait", 0);
+		msleep(&sb->sb_acc, &sb->sb_mtx, PSOCK , "sbwait", 0);
 	}
 	unwire_ddp_buffer(db);
 	return (rc);
@@ -1123,8 +1124,8 @@ restart:
 
 		/* uio should be just as it was at entry */
 		KASSERT(oresid == uio->uio_resid,
-		    ("%s: oresid = %d, uio_resid = %zd, sb_cc = %d",
-		    __func__, oresid, uio->uio_resid, sb->sb_cc));
+		    ("%s: oresid = %d, uio_resid = %zd, sbused = %d",
+		    __func__, oresid, uio->uio_resid, sbused(sb)));
 
 		error = handle_ddp(so, uio, flags, 0);
 		ddp_handled = 1;
@@ -1134,7 +1135,7 @@ restart:
 
 	/* Abort if socket has reported problems. */
 	if (so->so_error) {
-		if (sb->sb_cc > 0)
+		if (sbused(sb))
 			goto deliver;
 		if (oresid > uio->uio_resid)
 			goto out;
@@ -1146,32 +1147,32 @@ restart:
 
 	/* Door is closed.  Deliver what is left, if any. */
 	if (sb->sb_state & SBS_CANTRCVMORE) {
-		if (sb->sb_cc > 0)
+		if (sbused(sb))
 			goto deliver;
 		else
 			goto out;
 	}
 
 	/* Socket buffer is empty and we shall not block. */
-	if (sb->sb_cc == 0 &&
+	if (sbused(sb) == 0 &&
 	    ((so->so_state & SS_NBIO) || (flags & (MSG_DONTWAIT|MSG_NBIO)))) {
 		error = EAGAIN;
 		goto out;
 	}
 
 	/* Socket buffer got some data that we shall deliver now. */
-	if (sb->sb_cc > 0 && !(flags & MSG_WAITALL) &&
+	if (sbused(sb) && !(flags & MSG_WAITALL) &&
 	    ((sb->sb_flags & SS_NBIO) ||
 	     (flags & (MSG_DONTWAIT|MSG_NBIO)) ||
-	     sb->sb_cc >= sb->sb_lowat ||
-	     sb->sb_cc >= uio->uio_resid ||
-	     sb->sb_cc >= sb->sb_hiwat) ) {
+	     sbused(sb) >= sb->sb_lowat ||
+	     sbused(sb) >= uio->uio_resid ||
+	     sbused(sb) >= sb->sb_hiwat) ) {
 		goto deliver;
 	}
 
 	/* On MSG_WAITALL we must wait until all data or error arrives. */
 	if ((flags & MSG_WAITALL) &&
-	    (sb->sb_cc >= uio->uio_resid || sb->sb_cc >= sb->sb_lowat))
+	    (sbused(sb) >= uio->uio_resid || sbused(sb) >= sb->sb_lowat))
 		goto deliver;
 
 	/*
@@ -1190,7 +1191,7 @@ restart:
 
 deliver:
 	SOCKBUF_LOCK_ASSERT(&so->so_rcv);
-	KASSERT(sb->sb_cc > 0, ("%s: sockbuf empty", __func__));
+	KASSERT(sbused(sb) > 0, ("%s: sockbuf empty", __func__));
 	KASSERT(sb->sb_mb != NULL, ("%s: sb_mb == NULL", __func__));
 
 	if (sb->sb_flags & SB_DDP_INDICATE && !ddp_handled)
@@ -1201,7 +1202,7 @@ deliver:
 		uio->uio_td->td_ru.ru_msgrcv++;
 
 	/* Fill uio until full or current end of socket buffer is reached. */
-	len = min(uio->uio_resid, sb->sb_cc);
+	len = min(uio->uio_resid, sbused(sb));
 	if (mp0 != NULL) {
 		/* Dequeue as many mbufs as possible. */
 		if (!(flags & MSG_PEEK) && len >= sb->sb_mb->m_len) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404021038.s32AcfGk017209>