Module Name:    src
Committed By:   jdolecek
Date:           Tue Jul 14 11:44:53 UTC 2020

Modified Files:
        src/sys/dev/ic: ciss.c cissreg.h

Log Message:
remove ccb_sc to save memory, no need to store pointer to sc in ccb


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/dev/ic/ciss.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/ic/cissreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/ciss.c
diff -u src/sys/dev/ic/ciss.c:1.47 src/sys/dev/ic/ciss.c:1.48
--- src/sys/dev/ic/ciss.c:1.47	Tue Jul 14 11:39:02 2020
+++ src/sys/dev/ic/ciss.c	Tue Jul 14 11:44:52 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ciss.c,v 1.47 2020/07/14 11:39:02 jdolecek Exp $	*/
+/*	$NetBSD: ciss.c,v 1.48 2020/07/14 11:44:52 jdolecek Exp $	*/
 /*	$OpenBSD: ciss.c,v 1.68 2013/05/30 16:15:02 deraadt Exp $	*/
 
 /*
@@ -19,7 +19,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ciss.c,v 1.47 2020/07/14 11:39:02 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ciss.c,v 1.48 2020/07/14 11:44:52 jdolecek Exp $");
 
 #include "bio.h"
 
@@ -83,11 +83,11 @@ static int	ciss_sync(struct ciss_softc *
 static void	ciss_heartbeat(void *v);
 static void	ciss_shutdown(void *v);
 
-static struct ciss_ccb *ciss_get_ccb(struct ciss_softc *sc);
-static void	ciss_put_ccb(struct ciss_ccb *ccb);
-static int	ciss_cmd(struct ciss_ccb *ccb, int flags, int wait);
-static int	ciss_done(struct ciss_ccb *ccb);
-static int	ciss_error(struct ciss_ccb *ccb);
+static struct ciss_ccb *ciss_get_ccb(struct ciss_softc *);
+static void	ciss_put_ccb(struct ciss_softc *, struct ciss_ccb *);
+static int	ciss_cmd(struct ciss_softc *, struct ciss_ccb *, int, int);
+static int	ciss_done(struct ciss_softc *, struct ciss_ccb *);
+static int	ciss_error(struct ciss_softc *, struct ciss_ccb *);
 struct ciss_ld *ciss_pdscan(struct ciss_softc *sc, int ld);
 static int	ciss_inq(struct ciss_softc *sc, struct ciss_inquiry *inq);
 int	ciss_ldid(struct ciss_softc *, int, struct ciss_ldid *);
@@ -118,10 +118,8 @@ ciss_get_ccb(struct ciss_softc *sc)
 }
 
 static void
-ciss_put_ccb(struct ciss_ccb *ccb)
+ciss_put_ccb(struct ciss_softc *sc, struct ciss_ccb *ccb)
 {
-	struct ciss_softc *sc = ccb->ccb_sc;
-
 	ccb->ccb_state = CISS_CCB_FREE;
 	mutex_enter(&sc->sc_mutex);
 	STAILQ_INSERT_HEAD(&sc->sc_free_ccb, ccb, ccb_link);
@@ -354,7 +352,6 @@ ciss_attach(struct ciss_softc *sc)
 		cmd = &ccb->ccb_cmd;
 		pa = sc->cmdseg[0].ds_addr + i * sc->ccblen;
 
-		ccb->ccb_sc = sc;
 		ccb->ccb_cmdpa = pa + offsetof(struct ciss_ccb, ccb_cmd);
 		ccb->ccb_state = CISS_CCB_FREE;
 
@@ -631,7 +628,7 @@ ciss_poll(struct ciss_softc *sc, struct 
 			STAILQ_REMOVE_HEAD(&q, ccb_link);
 
 			KASSERT(ccb1->ccb_state == CISS_CCB_ONQ);
-			ciss_done(ccb1);
+			ciss_done(sc, ccb1);
 			if (ccb1 == ccb) {
 				KASSERT(STAILQ_EMPTY(&q));
 				return 0;
@@ -662,7 +659,7 @@ ciss_wait(struct ciss_softc *sc, struct 
 		}
 		mutex_exit(&sc->sc_mutex);
 		if (ccb->ccb_state == CISS_CCB_ONQ) {
-			ciss_done(ccb);
+			ciss_done(sc, ccb);
 			return 0;
 		}
 		tohz = etick - getticks();
@@ -679,9 +676,8 @@ ciss_wait(struct ciss_softc *sc, struct 
  * instead of busy loop waiting
  */
 static int
-ciss_cmd(struct ciss_ccb *ccb, int flags, int wait)
+ciss_cmd(struct ciss_softc *sc, struct ciss_ccb *ccb, int flags, int wait)
 {
-	struct ciss_softc *sc = ccb->ccb_sc;
 	struct ciss_cmd *cmd = &ccb->ccb_cmd;
 	bus_dmamap_t dmap = ccb->ccb_dmamap;
 	u_int64_t addr;
@@ -704,7 +700,7 @@ ciss_cmd(struct ciss_ccb *ccb, int flags
 				printf("more than %d dma segs\n", sc->maxsg);
 			else
 				printf("error %d loading dma map\n", error);
-			ciss_put_ccb(ccb);
+			ciss_put_ccb(sc, ccb);
 			return (error);
 		}
 		cmd->sgin = dmap->dm_nsegs;
@@ -807,7 +803,7 @@ ciss_cmd(struct ciss_ccb *ccb, int flags
 		if (ccb->ccb_state != CISS_CCB_FREE) {
 			KASSERT(error);
 			ccb->ccb_err.cmd_stat = CISS_ERR_TMO;
-			error = ciss_done(ccb);
+			error = ciss_done(sc, ccb);
 		}
 
 		CISS_DPRINTF(CISS_D_CMD, ("done %d:%d",
@@ -824,9 +820,8 @@ ciss_cmd(struct ciss_ccb *ccb, int flags
 }
 
 static int
-ciss_done(struct ciss_ccb *ccb)
+ciss_done(struct ciss_softc *sc, struct ciss_ccb *ccb)
 {
-	struct ciss_softc *sc = ccb->ccb_sc;
 	struct scsipi_xfer *xs = ccb->ccb_xs;
 	struct ciss_cmd *cmd;
 	int error = 0;
@@ -842,7 +837,7 @@ ciss_done(struct ciss_ccb *ccb)
 	ccb->ccb_state = CISS_CCB_READY;
 
 	if (ccb->ccb_cmd.id & CISS_CMD_ERR)
-		error = ciss_error(ccb);
+		error = ciss_error(sc, ccb);
 
 	cmd = &ccb->ccb_cmd;
 	if (ccb->ccb_data) {
@@ -854,7 +849,7 @@ ciss_done(struct ciss_ccb *ccb)
 		ccb->ccb_data = NULL;
 	}
 
-	ciss_put_ccb(ccb);
+	ciss_put_ccb(sc, ccb);
 
 	if (xs) {
 		xs->resid = 0;
@@ -874,9 +869,8 @@ ciss_done(struct ciss_ccb *ccb)
 }
 
 static int
-ciss_error(struct ciss_ccb *ccb)
+ciss_error(struct ciss_softc *sc, struct ciss_ccb *ccb)
 {
-	struct ciss_softc *sc = ccb->ccb_sc;
 	struct ciss_error *err = &ccb->ccb_err;
 	struct scsipi_xfer *xs = ccb->ccb_xs;
 	int rv;
@@ -976,7 +970,7 @@ ciss_inq(struct ciss_softc *sc, struct c
 	cmd->cdb[7] = sizeof(*inq) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*inq) & 0xff;
 
-	return ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
+	return ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
 }
 
 static int
@@ -1007,7 +1001,7 @@ ciss_ldmap(struct ciss_softc *sc)
 	cmd->cdb[8] = total >> 8;	/* biiiig endian */
 	cmd->cdb[9] = total & 0xff;
 
-	rv = ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
+	rv = ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
 
 	if (rv) {
 		mutex_exit(&sc->sc_mutex_scratch);
@@ -1050,7 +1044,7 @@ ciss_sync(struct ciss_softc *sc)
 	cmd->cdb[7] = sizeof(*flush) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*flush) & 0xff;
 
-	rv = ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
+	rv = ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL|XS_CTL_NOSLEEP);
 	mutex_exit(&sc->sc_mutex_scratch);
 
 	return rv;
@@ -1081,7 +1075,7 @@ ciss_ldid(struct ciss_softc *sc, int tar
 	cmd->cdb[7] = sizeof(*id) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*id) & 0xff;
 
-	return ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL | sc->sc_waitflag);
+	return ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL | sc->sc_waitflag);
 }
 
 int
@@ -1109,7 +1103,7 @@ ciss_ldstat(struct ciss_softc *sc, int t
 	cmd->cdb[7] = sizeof(*stat) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*stat) & 0xff;
 
-	return ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL | sc->sc_waitflag);
+	return ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL | sc->sc_waitflag);
 }
 
 int
@@ -1137,7 +1131,7 @@ ciss_pdid(struct ciss_softc *sc, u_int8_
 	cmd->cdb[7] = sizeof(*id) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*id) & 0xff;
 
-	return ciss_cmd(ccb, BUS_DMA_NOWAIT, wait);
+	return ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, wait);
 }
 
 
@@ -1230,7 +1224,7 @@ ciss_scsi_cmd(struct scsipi_channel *cha
 			     cmd->cdb[0], cmd->cdb[1], cmd->cdb[2],
 			     cmd->cdb[3], cmd->cdb[4], cmd->cdb[5]));
 
-		if (ciss_cmd(ccb, BUS_DMA_WAITOK,
+		if (ciss_cmd(sc, ccb, BUS_DMA_WAITOK,
 		    xs->xs_control & (XS_CTL_POLL|XS_CTL_NOSLEEP))) {
 			printf("ciss driver stuffup in %s:%d: %s()\n",
 			       __FILE__, __LINE__, __func__);
@@ -1274,7 +1268,7 @@ ciss_completed_process(struct ciss_softc
 			cv_broadcast(&sc->sc_condvar);
 			mutex_exit(&sc->sc_mutex);
 		} else
-			ciss_done(ccb);
+			ciss_done(sc, ccb);
 	}
 }
 
@@ -1632,7 +1626,7 @@ ciss_blink(struct ciss_softc *sc, int ld
 	cmd->cdb[7] = sizeof(*blink) >> 8;	/* biiiig endian */
 	cmd->cdb[8] = sizeof(*blink) & 0xff;
 
-	return ciss_cmd(ccb, BUS_DMA_NOWAIT, XS_CTL_POLL);
+	return ciss_cmd(sc, ccb, BUS_DMA_NOWAIT, XS_CTL_POLL);
 }
 
 int

Index: src/sys/dev/ic/cissreg.h
diff -u src/sys/dev/ic/cissreg.h:1.7 src/sys/dev/ic/cissreg.h:1.8
--- src/sys/dev/ic/cissreg.h:1.7	Tue Jul 14 11:39:02 2020
+++ src/sys/dev/ic/cissreg.h	Tue Jul 14 11:44:52 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cissreg.h,v 1.7 2020/07/14 11:39:02 jdolecek Exp $	*/
+/*	$NetBSD: cissreg.h,v 1.8 2020/07/14 11:44:52 jdolecek Exp $	*/
 /*	$OpenBSD: cissreg.h,v 1.11 2010/06/03 01:02:13 dlg Exp $	*/
 
 /*
@@ -517,7 +517,6 @@ struct ciss_error {
 
 struct ciss_ccb {
 	STAILQ_ENTRY(ciss_ccb)	ccb_link;
-	struct ciss_softc	*ccb_sc;
 	paddr_t			ccb_cmdpa;
 	enum {
 		CISS_CCB_FREE	= 0x01,

Reply via email to