Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Jul 2026 22:50:22 +0000
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc:        Abdelkader Boudih <freebsd@seuros.com>
Subject:   git: dd56711e8353 - main - firewire: replace magic numbers with named constants
Message-ID:  <6a5ea62e.320bd.15eafdb0@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=dd56711e83533ffe40f3f54b01565537f85381cc

commit dd56711e83533ffe40f3f54b01565537f85381cc
Author:     Abdelkader Boudih <freebsd@seuros.com>
AuthorDate: 2026-07-20 22:48:42 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2026-07-20 22:48:44 +0000

    firewire: replace magic numbers with named constants
    
    No functional change.
    
    Reviewed by:    adrian
    Differential Revision:  https://reviews.freebsd.org/D58311
---
 sys/dev/firewire/firewire.c    | 57 ++++++++++++++++++++++++++++--------------
 sys/dev/firewire/firewirereg.h | 15 +++++++++--
 sys/dev/firewire/fwdev.c       |  2 +-
 sys/dev/firewire/fwisound.c    |  2 +-
 sys/dev/firewire/fwisound.h    |  7 +++---
 sys/dev/firewire/fwmem.c       |  5 ++--
 sys/dev/firewire/fwohci.c      | 40 ++++++++++++++++++-----------
 sys/dev/firewire/fwohci_pci.c  | 10 +++++---
 sys/dev/firewire/if_fwe.c      |  6 ++---
 sys/dev/firewire/if_fwip.c     | 20 +++++++++------
 sys/dev/firewire/sbp.c         |  3 ++-
 sys/dev/firewire/sbp_targ.c    |  3 ++-
 12 files changed, 112 insertions(+), 58 deletions(-)

diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c
index e4624485e0c0..038ae1d1ba53 100644
--- a/sys/dev/firewire/firewire.c
+++ b/sys/dev/firewire/firewire.c
@@ -77,6 +77,23 @@ MALLOC_DEFINE(M_FWXFER, "fw_xfer", "XFER/FireWire");
 
 #define FW_MAXASYRTY 4
 
+/* Split timeout: 800 cycles (see IEEE 1394-1995 8.3.2.2.2) */
+#define FW_SPLIT_TIMEOUT_CYCLES	800
+/* Default available isochronous bandwidth units (IEEE 1394-1995 Table 8-4) */
+#define FW_BANDWIDTH_AVAILABLE	4915
+/* ROM header size in quads: bus info block (4) + CRC quad (1) */
+#define FW_ROM_HEADER_QUADS	5
+/* Maximum retries when exploring a remote node's CSR ROM */
+#define FW_EXPLORE_MAX_RETRIES	3
+/* maxrec value encoding 512-byte payload (2^(maxrec+1) = 512 => maxrec=8) */
+#define FW_MAXREC_512		8
+
+/* PHY configuration packet bit fields (IEEE 1394-1995 4.3.4.1) */
+#define FW_PHY_ROOT_BIT		(1 << 23)
+#define FW_PHY_ROOT_SHIFT	24
+#define FW_PHY_GAP_BIT		(1 << 22)
+#define FW_PHY_GAP_SHIFT	16
+
 devclass_t firewire_devclass;
 
 static void firewire_identify(driver_t *, device_t);
@@ -608,7 +625,7 @@ fw_drain_txq(struct firewire_comm *fc)
 	FW_GUNLOCK(fc);
 
 	mtx_lock(&fc->tlabel_lock);
-	for (i = 0; i < 0x40; i++)
+	for (i = 0; i < FW_NUM_TLABELS; i++)
 		while ((xfer = STAILQ_FIRST(&fc->tlabels[i])) != NULL) {
 			if (firewire_debug)
 				printf("tl=%d flag=%d\n", i, xfer->flag);
@@ -638,18 +655,18 @@ fw_reset_csr(struct firewire_comm *fc)
 
 	fc->max_node = -1;
 
-	for (i = 2; i < 0x100 / 4 - 2; i++) {
+	for (i = 2; i < FW_MAX_NODES - 2; i++) {
 		CSRARC(fc, SPED_MAP + i * 4) = 0;
 	}
 	CSRARC(fc, STATE_CLEAR) = 1 << 23 | 0 << 17 | 1 << 16 | 1 << 15 | 1 << 14;
 	CSRARC(fc, STATE_SET) = CSRARC(fc, STATE_CLEAR);
 	CSRARC(fc, RESET_START) = 0;
 	CSRARC(fc, SPLIT_TIMEOUT_HI) = 0;
-	CSRARC(fc, SPLIT_TIMEOUT_LO) = 800 << 19;
+	CSRARC(fc, SPLIT_TIMEOUT_LO) = FW_SPLIT_TIMEOUT_CYCLES << 19;
 	CSRARC(fc, CYCLE_TIME) = 0x0;
 	CSRARC(fc, BUS_TIME) = 0x0;
-	CSRARC(fc, BUS_MGR_ID) = 0x3f;
-	CSRARC(fc, BANDWIDTH_AV) = 4915;
+	CSRARC(fc, BUS_MGR_ID) = FW_NO_BUS_MANAGER;
+	CSRARC(fc, BANDWIDTH_AV) = FW_BANDWIDTH_AVAILABLE;
 	CSRARC(fc, CHANNELS_AV_HI) = 0xffffffff;
 	CSRARC(fc, CHANNELS_AV_LO) = 0xffffffff;
 	CSRARC(fc, IP_CHANNELS) = (1U << 31);
@@ -870,7 +887,7 @@ void fw_init(struct firewire_comm *fc)
 
 	/* Initialize Async handlers */
 	STAILQ_INIT(&fc->binds);
-	for (i = 0; i < 0x40; i++) {
+	for (i = 0; i < FW_NUM_TLABELS; i++) {
 		STAILQ_INIT(&fc->tlabels[i]);
 	}
 
@@ -1248,9 +1265,11 @@ fw_phy_config(struct firewire_comm *fc, int root_node, int gap_count)
 	fp = &xfer->send.hdr;
 	fp->mode.ld[1] = 0;
 	if (root_node >= 0)
-		fp->mode.ld[1] |= (1 << 23) | (root_node & 0x3f) << 24;
+		fp->mode.ld[1] |= FW_PHY_ROOT_BIT |
+		    (root_node & FW_NODE_MASK) << FW_PHY_ROOT_SHIFT;
 	if (gap_count >= 0)
-		fp->mode.ld[1] |= (1 << 22) | (gap_count & 0x3f) << 16;
+		fp->mode.ld[1] |= FW_PHY_GAP_BIT |
+		    (gap_count & FW_NODE_MASK) << FW_PHY_GAP_SHIFT;
 	fp->mode.ld[2] = ~fp->mode.ld[1];
 	fp->mode.common.tcode |= FWTCODE_PHY;
 
@@ -1303,7 +1322,7 @@ void fw_sidrcv(struct firewire_comm *fc, uint32_t *sid, u_int len)
 	u_int i, j, node, c_port = 0, i_branch = 0;
 
 	fc->sid_cnt = len / (sizeof(uint32_t) * 2);
-	fc->max_node = fc->nodeid & 0x3f;
+	fc->max_node = fc->nodeid & FW_NODE_MASK;
 	CSRARC(fc, NODE_IDS) = ((uint32_t)fc->nodeid) << 16;
 	fc->status = FWBUSCYMELECT;
 	fc->topology_map->crc_len = 2;
@@ -1311,7 +1330,7 @@ void fw_sidrcv(struct firewire_comm *fc, uint32_t *sid, u_int len)
 	fc->topology_map->self_id_count = 0;
 	fc->topology_map->node_count= 0;
 	fc->speed_map->generation++;
-	fc->speed_map->crc_len = 1 + (64 * 64 + 3) / 4;
+	fc->speed_map->crc_len = 1 + (FW_MAX_NODES * FW_MAX_NODES + 3) / 4;
 	self_id = &fc->topology_map->self_id[0];
 	for (i = 0; i < fc->sid_cnt; i++) {
 		if (sid[1] != ~sid[0]) {
@@ -1377,7 +1396,7 @@ void fw_sidrcv(struct firewire_comm *fc, uint32_t *sid, u_int len)
 	    (fc->irm == -1) ? "Not IRM capable" : "cable IRM",
 	    fc->irm, (fc->irm == fc->nodeid) ? " (me) " : "");
 
-	if (try_bmr && (fc->irm != -1) && (CSRARC(fc, BUS_MGR_ID) == 0x3f)) {
+	if (try_bmr && (fc->irm != -1) && (CSRARC(fc, BUS_MGR_ID) == FW_NO_BUS_MANAGER)) {
 		if (fc->irm == fc->nodeid) {
 			fc->status = FWBUSMGRDONE;
 			CSRARC(fc, BUS_MGR_ID) = fc->set_bmr(fc, fc->irm);
@@ -1633,7 +1652,7 @@ fw_explore_node(struct fw_device *dfwdev)
 		fwdev->dst = node;
 		fwdev->status = FWDEVINIT;
 		/* unchanged ? */
-		if (bcmp(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5) == 0) {
+		if (bcmp(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * FW_ROM_HEADER_QUADS) == 0) {
 			if (!STAILQ_EMPTY(&fwdev->units)) {
 				if (firewire_debug)
 					device_printf(fc->dev,
@@ -1651,7 +1670,7 @@ fw_explore_node(struct fw_device *dfwdev)
 	bzero(&fwdev->csrrom[0], CROMSIZE);
 
 	/* copy first quad and bus info block */
-	bcopy(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5);
+	bcopy(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * FW_ROM_HEADER_QUADS);
 	fwdev->rommax = CSRROMOFF + sizeof(uint32_t) * 4;
 
 	err = fw_explore_csrblock(fwdev, 0x14, 1); /* root directory */
@@ -1690,7 +1709,7 @@ static void
 fw_explore(struct firewire_comm *fc)
 {
 	int node, err, i, todo, todo2, trys;
-	char nodes[63];
+	char nodes[FW_MAX_NODES - 1];
 	struct fw_device dfwdev;
 	union fw_self_id *fwsid;
 
@@ -1698,7 +1717,7 @@ fw_explore(struct firewire_comm *fc)
 	/* setup dummy fwdev */
 	dfwdev.fc = fc;
 	dfwdev.speed = 0;
-	dfwdev.maxrec = 8; /* 512 */
+	dfwdev.maxrec = FW_MAXREC_512;
 	dfwdev.status = FWDEVINIT;
 
 	for (node = 0; node <= fc->max_node; node++) {
@@ -1725,7 +1744,7 @@ fw_explore(struct firewire_comm *fc)
 		nodes[todo++] = node;
 	}
 
-	for (trys = 0; todo > 0 && trys < 3; trys++) {
+	for (trys = 0; todo > 0 && trys < FW_EXPLORE_MAX_RETRIES; trys++) {
 		todo2 = 0;
 		for (i = 0; i < todo; i++) {
 			dfwdev.dst = nodes[i];
@@ -1977,11 +1996,11 @@ fw_get_tlabel(struct firewire_comm *fc, struct fw_xfer *xfer)
 	u_int dst, new_tlabel;
 	struct fw_xfer *txfer;
 
-	dst = xfer->send.hdr.mode.hdr.dst & 0x3f;
+	dst = xfer->send.hdr.mode.hdr.dst & FW_NODE_MASK;
 	mtx_lock(&fc->tlabel_lock);
-	new_tlabel = (fc->last_tlabel[dst] + 1) & 0x3f;
+	new_tlabel = (fc->last_tlabel[dst] + 1) & FW_TLABEL_MASK;
 	STAILQ_FOREACH(txfer, &fc->tlabels[new_tlabel], tlabel)
-		if ((txfer->send.hdr.mode.hdr.dst & 0x3f) == dst)
+		if ((txfer->send.hdr.mode.hdr.dst & FW_NODE_MASK) == dst)
 			break;
 	if (txfer == NULL) {
 		fc->last_tlabel[dst] = new_tlabel;
diff --git a/sys/dev/firewire/firewirereg.h b/sys/dev/firewire/firewirereg.h
index 656b7e2a448e..f4043987c3fe 100644
--- a/sys/dev/firewire/firewirereg.h
+++ b/sys/dev/firewire/firewirereg.h
@@ -98,6 +98,17 @@ struct firewire_softc {
 #define FW_MAX_DEVCH FW_MAX_DMACH
 #define FW_XFERTIMEOUT 1
 
+/* 6-bit transaction label space (IEEE 1394 6.2.4.2) */
+#define FW_NUM_TLABELS	0x40
+#define FW_TLABEL_MASK	0x3f
+
+/* 6-bit node ID fields */
+#define FW_MAX_NODES	64
+#define FW_NODE_MASK	0x3f
+
+/* BUS_MGR_ID register value when no bus manager is elected */
+#define FW_NO_BUS_MANAGER 0x3f
+
 struct firewire_dev_comm {
 	device_t dev;
 	struct firewire_comm *fc;
@@ -145,8 +156,8 @@ struct firewire_comm {
 	struct fw_eui64 eui;
 	struct fw_xferq
 		*arq, *atq, *ars, *ats, *it[FW_MAX_DMACH],*ir[FW_MAX_DMACH];
-	struct fw_xferlist tlabels[0x40];
-	u_char last_tlabel[0x40];
+	struct fw_xferlist tlabels[FW_NUM_TLABELS];
+	u_char last_tlabel[FW_NUM_TLABELS];
 	struct mtx tlabel_lock;
 	STAILQ_HEAD(, fw_bind) binds;
 	STAILQ_HEAD(, fw_device) devices;
diff --git a/sys/dev/firewire/fwdev.c b/sys/dev/firewire/fwdev.c
index cea5ad3075ad..03e9eec5172c 100644
--- a/sys/dev/firewire/fwdev.c
+++ b/sys/dev/firewire/fwdev.c
@@ -408,7 +408,7 @@ fw_write_async(struct fw_drv1 *d, struct uio *uio, int ioflag)
 	xfer->fc = d->fc;
 	xfer->sc = NULL;
 	xfer->hand = fw_xferwake;
-	xfer->send.spd = 2 /* XXX */;
+	xfer->send.spd = FWSPD_S400;
 
 	if ((err = fw_asyreq(xfer->fc, -1, xfer)))
 		goto out;
diff --git a/sys/dev/firewire/fwisound.c b/sys/dev/firewire/fwisound.c
index 12a32fb25aab..da04ae9f034b 100644
--- a/sys/dev/firewire/fwisound.c
+++ b/sys/dev/firewire/fwisound.c
@@ -381,7 +381,7 @@ fwisound_iso_input(struct fw_xferq *xferq)
 		}
 
 		sample_count = ntohl(pay->sample_count);
-		if (sample_count == 0 || sample_count > 475) {
+		if (sample_count == 0 || sample_count > FWISOUND_MAX_SAMPLES) {
 			m_freem(m);
 			continue;
 		}
diff --git a/sys/dev/firewire/fwisound.h b/sys/dev/firewire/fwisound.h
index 47a9790e074c..02108237c8e8 100644
--- a/sys/dev/firewire/fwisound.h
+++ b/sys/dev/firewire/fwisound.h
@@ -32,17 +32,18 @@
 #define FWISOUND_AUDIO_ENABLE		(1u << 31)
 #define FWISOUND_RATE_48000		(1u << 31)
 
+#define FWISOUND_MAX_SAMPLES	475		/* max samples per ISO packet */
+#define FWISOUND_SIGNATURE	0x73676874u	/* "sght" */
+
 /* Apple FireWire audio ISO payload. */
 struct fwisound_payload {
 	uint32_t	sample_count;		/* samples in this packet */
 	uint32_t	signature;		/* 0x73676874 = "sght" */
 	uint32_t	sample_total;		/* running total (drop detect)*/
 	uint32_t	reserved;
-	int16_t		samples[2 * 475];	/* stereo S16BE; *2 valid */
+	int16_t		samples[2 * FWISOUND_MAX_SAMPLES]; /* stereo S16BE */
 };
 
-#define FWISOUND_SIGNATURE	0x73676874u	/* "sght" */
-
 /* ISO DMA parameters */
 #define FWISOUND_ISO_CHANNEL	1
 #define FWISOUND_ISO_NCHUNK	64
diff --git a/sys/dev/firewire/fwmem.c b/sys/dev/firewire/fwmem.c
index e2d114f69661..6941fc8ec513 100644
--- a/sys/dev/firewire/fwmem.c
+++ b/sys/dev/firewire/fwmem.c
@@ -61,7 +61,7 @@
 #include <dev/firewire/firewirereg.h>
 #include <dev/firewire/fwmem.h>
 
-static int fwmem_speed = 2, fwmem_debug = 0;
+static int fwmem_speed = FWSPD_S400, fwmem_debug = 0;
 static struct fw_eui64 fwmem_eui64;
 SYSCTL_DECL(_hw_firewire);
 static SYSCTL_NODE(_hw_firewire, OID_AUTO, fwmem,
@@ -78,7 +78,8 @@ SYSCTL_INT(_debug, OID_AUTO, fwmem_debug, CTLFLAG_RW, &fwmem_debug, 0,
 
 static MALLOC_DEFINE(M_FWMEM, "fwmem", "fwmem/FireWire");
 
-#define MAXLEN (512 << fwmem_speed)
+#define FW_MAXPKT_S100	512	/* S100 max async payload */
+#define MAXLEN (FW_MAXPKT_S100 << fwmem_speed)
 
 struct fwmem_softc {
 	struct fw_eui64 eui;
diff --git a/sys/dev/firewire/fwohci.c b/sys/dev/firewire/fwohci.c
index 1d5a4d686d81..dad9ff03ab6d 100644
--- a/sys/dev/firewire/fwohci.c
+++ b/sys/dev/firewire/fwohci.c
@@ -84,10 +84,20 @@ char fwohcicode[32][0x20]= {
 	"Undef", "Undef", "Undef", "ack tardy",
 	"Undef", "ack data_err", "ack type_err", ""};
 
-#define MAX_SPEED 3
+#define MAX_SPEED FWSPD_S800
 extern char *linkspeed[];
 uint32_t tagbit[4] = {1 << 28, 1 << 29, 1 << 30, 1 << 31};
 
+/* OHCI-local timing and protocol constants */
+#define FWOHCI_PHY_DELAY	100	/* us delay after PHY register write */
+#define FWOHCI_PHY_POLL_LIMIT	1000	/* poll iterations for bus manager CSR */
+#define FW_MAXREC_BASE		8	/* maxrec = speed + FW_MAXREC_BASE */
+#define FWOHCI_ATRETRY_MAX	0x0f	/* max AT retries (phy/resp/req) */
+#define FW_CYCLES_PER_SEC	8000	/* ISO cycles per second */
+#define FW_CYCLETIMER_CYCLE_SHIFT 12	/* shift to extract cycle from cycletimer */
+#define FW_CYCLETIMER_CYCLE_MASK  0x7fff /* mask after shift (2-bit sec + 13-bit cycle) */
+#define FWOHCI_MAX_CYCLE_LOST	10	/* max CYC_LOST events before disabling */
+
 static struct tcode_info tinfo[] = {
 /*		hdr_len block 	flag	valid_response */
 /* 0 WREQQ  */ {16,	FWTI_REQ | FWTI_TLABEL,	FWTCODE_WRES},
@@ -271,7 +281,7 @@ fwphy_wrdata(struct fwohci_softc *sc, uint32_t addr, uint32_t data)
 	fun = (PHYDEV_WRCMD | (addr << PHYDEV_REGADDR) |
 	      (data << PHYDEV_WRDATA));
 	OWRITE(sc, OHCI_PHYACCESS, fun);
-	DELAY(100);
+	DELAY(FWOHCI_PHY_DELAY);
 
 	return (fwphy_rddata(sc, addr));
 }
@@ -291,10 +301,10 @@ fwohci_set_bus_manager(struct firewire_comm *fc, u_int node)
 	OWRITE(sc, OHCI_CSR_DATA, node);
 	OWRITE(sc, OHCI_CSR_COMP, 0x3f);
 	OWRITE(sc, OHCI_CSR_CONT, OHCI_BUS_MANAGER_ID);
- 	for (i = 0; !(OREAD(sc, OHCI_CSR_CONT) & (1<<31)) && (i < 1000); i++)
+ 	for (i = 0; !(OREAD(sc, OHCI_CSR_CONT) & (1<<31)) && (i < FWOHCI_PHY_POLL_LIMIT); i++)
 		DELAY(10);
 	bm = OREAD(sc, OHCI_CSR_DATA);
-	if ((bm & 0x3f) == 0x3f)
+	if ((bm & FW_NODE_MASK) == FW_NO_BUS_MANAGER)
 		bm = node;
 	if (firewire_debug)
 		device_printf(sc->fc.dev, "%s: %d->%d (loop=%d)\n",
@@ -537,7 +547,7 @@ fwohci_reset(struct fwohci_softc *sc, device_t dev)
 	device_printf(dev, "Link %s, max_rec %d bytes.\n",
 			linkspeed[speed], MAXREC(max_rec));
 	/* XXX fix max_rec */
-	sc->fc.maxrec = sc->fc.speed + 8;
+	sc->fc.maxrec = sc->fc.speed + FW_MAXREC_BASE;
 	if (max_rec != sc->fc.maxrec) {
 		reg2 = (reg2 & 0xffff0fff) | (sc->fc.maxrec << 12);
 		device_printf(dev, "max_rec %d -> %d\n",
@@ -571,7 +581,7 @@ fwohci_reset(struct fwohci_softc *sc, device_t dev)
 	/* AT Retries */
 	OWRITE(sc, FWOHCI_RETRY,
 		/* CycleLimit   PhyRespRetries ATRespRetries ATReqRetries */
-		(0xffff << 16) | (0x0f << 8) | (0x0f << 4) | 0x0f);
+		(0xffff << 16) | (FWOHCI_ATRETRY_MAX << 8) | (FWOHCI_ATRETRY_MAX << 4) | FWOHCI_ATRETRY_MAX);
 
 	sc->atrq.top = STAILQ_FIRST(&sc->atrq.db_trq);
 	sc->atrs.top = STAILQ_FIRST(&sc->atrs.db_trq);
@@ -905,7 +915,7 @@ txloop:
 		hdr_len = 12;
 		ld[1] = fp->mode.ld[1];
 		ld[2] = fp->mode.ld[2];
-		ohcifp->mode.common.spd = 0;
+		ohcifp->mode.common.spd = FWSPD_S100;
 		ohcifp->mode.common.tcode = FWOHCITCODE_PHY;
 	} else {
 		ohcifp->mode.asycomm.dst = fp->mode.hdr.dst;
@@ -1450,14 +1460,14 @@ fwohci_next_cycle(struct firewire_comm *fc, int cycle_now)
 #define CYCLE_MOD	0x10
 #define CYCLE_DELAY	8	/* min delay to start DMA */
 	cycle = cycle + CYCLE_DELAY;
-	if (cycle >= 8000) {
+	if (cycle >= FW_CYCLES_PER_SEC) {
 		sec++;
-		cycle -= 8000;
+		cycle -= FW_CYCLES_PER_SEC;
 	}
 	cycle = roundup2(cycle, CYCLE_MOD);
-	if (cycle >= 8000) {
+	if (cycle >= FW_CYCLES_PER_SEC) {
 		sec++;
-		if (cycle == 8000)
+		if (cycle == FW_CYCLES_PER_SEC)
 			cycle = 0;
 		else
 			cycle = CYCLE_MOD;
@@ -1541,7 +1551,7 @@ fwohci_itxbuf_enable(struct firewire_comm *fc, int dmach)
 		OWRITE(sc, OHCI_ITCTLCLR(dmach), 0xffff0000);
 
 		/* 2bit second + 13bit cycle */
-		cycle_now = (fc->cyctimer(fc) >> 12) & 0x7fff;
+		cycle_now = (fc->cyctimer(fc) >> FW_CYCLETIMER_CYCLE_SHIFT) & FW_CYCLETIMER_CYCLE_MASK;
 		cycle_match = fwohci_next_cycle(fc, cycle_now);
 
 		OWRITE(sc, OHCI_ITCTL(dmach),
@@ -1900,7 +1910,7 @@ fwohci_intr_dma(struct fwohci_softc *sc, uint32_t stat, int count)
 	if (stat & OHCI_INT_CYC_LOST) {
 		if (sc->cycle_lost >= 0)
 			sc->cycle_lost++;
-		if (sc->cycle_lost > 10) {
+		if (sc->cycle_lost > FWOHCI_MAX_CYCLE_LOST) {
 			sc->cycle_lost = -1;
 			OWRITE(sc, FWOHCI_INTMASKCLR, OHCI_INT_CYC_LOST);
 			device_printf(fc->dev, "too many cycles lost, "
@@ -2439,10 +2449,10 @@ fwohci_txbufdb(struct fwohci_softc *sc, int dmach, struct fw_bulkxfer *bulkxfer)
 		fp = (struct fw_pkt *)db_tr->buf;
 		ohcifp = (struct fwohci_txpkthdr *) db[1].db.immed;
 		ohcifp->mode.ld[0] = fp->mode.ld[0];
-		ohcifp->mode.common.spd = 0 & 0x7;
+		ohcifp->mode.common.spd = FWSPD_S100;
 		ohcifp->mode.stream.len = fp->mode.stream.len;
 		ohcifp->mode.stream.chtag = chtag;
-		ohcifp->mode.stream.tcode = 0xa;
+		ohcifp->mode.stream.tcode = FWTCODE_STREAM;
 #if BYTE_ORDER == BIG_ENDIAN
 		FWOHCI_DMA_WRITE(db[1].db.immed[0], db[1].db.immed[0]);
 		FWOHCI_DMA_WRITE(db[1].db.immed[1], db[1].db.immed[1]);
diff --git a/sys/dev/firewire/fwohci_pci.c b/sys/dev/firewire/fwohci_pci.c
index 609651aad849..d15e4deafb1d 100644
--- a/sys/dev/firewire/fwohci_pci.c
+++ b/sys/dev/firewire/fwohci_pci.c
@@ -60,6 +60,10 @@
 #include <dev/firewire/fwohcireg.h>
 #include <dev/firewire/fwohcivar.h>
 
+#define FWOHCI_DMA_MAXSIZE	0x100000	/* 1MB */
+#define FWOHCI_DMA_NSEG		0x20		/* 32 segments */
+#define FWOHCI_DMA_MAXSEGSZ	0x8000		/* 32KB per segment */
+
 static int fwohci_pci_attach(device_t self);
 static int fwohci_pci_detach(device_t self);
 
@@ -284,9 +288,9 @@ fwohci_pci_attach(device_t self)
 #endif
 				/*highaddr*/BUS_SPACE_MAXADDR,
 				/*filter*/NULL, /*filterarg*/NULL,
-				/*maxsize*/0x100000,
-				/*nsegments*/0x20,
-				/*maxsegsz*/0x8000,
+				/*maxsize*/FWOHCI_DMA_MAXSIZE,
+				/*nsegments*/FWOHCI_DMA_NSEG,
+				/*maxsegsz*/FWOHCI_DMA_MAXSEGSZ,
 				/*flags*/BUS_DMA_ALLOCNOW,
 				/*lockfunc*/busdma_lock_mutex,
 				/*lockarg*/FW_GMTX(&sc->fc),
diff --git a/sys/dev/firewire/if_fwe.c b/sys/dev/firewire/if_fwe.c
index bf7ed29fc5b4..322410b140c4 100644
--- a/sys/dev/firewire/if_fwe.c
+++ b/sys/dev/firewire/if_fwe.c
@@ -78,7 +78,7 @@ static void fwe_as_input (struct fw_xferq *);
 
 static int fwedebug = 0;
 static int stream_ch = 1;
-static int tx_speed = 2;
+static int tx_speed = FWSPD_S400;
 static int rx_queue_len = FWMAXQUEUE;
 
 static MALLOC_DEFINE(M_FWE, "if_fwe", "Ethernet over FireWire interface");
@@ -269,7 +269,7 @@ fwe_init(void *arg)
 
 	FWEDEBUG(ifp, "initializing\n");
 
-	/* XXX keep promiscoud mode */
+	/* keep promiscuous mode */
 	if_setflagbits(ifp, IFF_PROMISC, 0);
 
 	fc = fwe->fd.fc;
@@ -338,7 +338,7 @@ fwe_ioctl(if_t ifp, u_long cmd, caddr_t data)
 				if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 					fwe_stop(fwe);
 			}
-			/* XXX keep promiscoud mode */
+			/* keep promiscuous mode */
 			if_setflagbits(ifp, IFF_PROMISC, 0);
 			break;
 		case SIOCADDMULTI:
diff --git a/sys/dev/firewire/if_fwip.c b/sys/dev/firewire/if_fwip.c
index 103ccf75b863..23e2e619a14e 100644
--- a/sys/dev/firewire/if_fwip.c
+++ b/sys/dev/firewire/if_fwip.c
@@ -91,9 +91,15 @@ static void fwip_start_send (void *, int);
 static void fwip_stream_input (struct fw_xferq *);
 static void fwip_unicast_input(struct fw_xfer *);
 
+/* tag field: bits [7:6] = 0b11 (broadcast), channel field: bits [5:0] = 31 */
+#define FWXFERQ_TAG_ALL		(3 << 6)
+#define FW_IP_CHANNEL		31
+/* GASP header: specifier_hi + specifier_lo/version + payload */
+#define FW_GASP_HDR_LEN		(3 * sizeof(uint32_t))
+
 static int fwipdebug = 0;
-static int broadcast_channel = 0xc0 | 0x1f; /*  tag | channel(XXX) */
-static int tx_speed = 2;
+static int broadcast_channel = FWXFERQ_TAG_ALL | FW_IP_CHANNEL;
+static int tx_speed = FWSPD_S400;
 static int rx_queue_len = FWMAXQUEUE;
 
 static MALLOC_DEFINE(M_FWIP, "if_fwip", "IP over FireWire interface");
@@ -548,9 +554,9 @@ fwip_async_output(struct fwip_softc *fwip, if_t ifp)
 			fp->mode.stream.chtag = broadcast_channel;
 			fp->mode.stream.tcode = FWTCODE_STREAM;
 			fp->mode.stream.sy = 0;
-			xfer->send.spd = 0;
+			xfer->send.spd = FWSPD_S100;
 			p[0] = htonl(nodeid << 16);
-			p[1] = htonl((0x5e << 24) | 1);
+			p[1] = htonl((CSRVAL_IETF << 24) | 1);
 		} else {
 			/*
 			 * Unicast packets are sent as block writes to the
@@ -702,7 +708,7 @@ fwip_stream_input(struct fw_xferq *xferq)
 		 * version.
 		 */
 		p = mtod(m, uint32_t *);
-		if ((((ntohl(p[1]) & 0xffff) << 8) | ntohl(p[2]) >> 24) != 0x00005e
+		if ((((ntohl(p[1]) & 0xffff) << 8) | ntohl(p[2]) >> 24) != CSRVAL_IETF
 		    || (ntohl(p[2]) & 0xffffff) != 1) {
 			FWIPDEBUG(ifp, "Unrecognised GASP header %#08x %#08x\n",
 			    ntohl(p[1]), ntohl(p[2]));
@@ -724,7 +730,7 @@ fwip_stream_input(struct fw_xferq *xferq)
 				struct fw_device *fd;
 				uint32_t *p = (uint32_t *) (mtag + 1);
 				fd = fw_noderesolve_nodeid(fwip->fd.fc,
-				    src & 0x3f);
+				    src & FW_NODE_MASK);
 				if (fd) {
 					p[0] = htonl(fd->eui.hi);
 					p[1] = htonl(fd->eui.lo);
@@ -739,7 +745,7 @@ fwip_stream_input(struct fw_xferq *xferq)
 		/*
 		 * Trim off the GASP header
 		 */
-		m_adj(m, 3*sizeof(uint32_t));
+		m_adj(m, FW_GASP_HDR_LEN);
 		m->m_pkthdr.rcvif = ifp;
 		firewire_input(ifp, m, src);
 		if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
diff --git a/sys/dev/firewire/sbp.c b/sys/dev/firewire/sbp.c
index 81f4ac50f5cf..8d5ad7e2ad8c 100644
--- a/sys/dev/firewire/sbp.c
+++ b/sys/dev/firewire/sbp.c
@@ -74,6 +74,7 @@
 #define SBP_LOGIN_SIZE sizeof(struct sbp_login_res)
 #define SBP_QUEUE_LEN ((SBP_DMA_SIZE - SBP_LOGIN_SIZE) / sizeof(struct sbp_ocb))
 #define SBP_NUM_OCB (SBP_QUEUE_LEN * SBP_NUM_TARGETS)
+#define SBP_MAX_XFER 5		/* max concurrent xfers per target */
 
 /*
  * STATUS FIFO addressing
@@ -1287,7 +1288,7 @@ sbp_write_cmd(struct sbp_dev *sdev, int tcode, int offset)
 	target = sdev->target;
 	xfer = STAILQ_FIRST(&target->xferlist);
 	if (xfer == NULL) {
-		if (target->n_xfer > 5 /* XXX */) {
+		if (target->n_xfer > SBP_MAX_XFER) {
 			printf("sbp: no more xfer for this target\n");
 			return (NULL);
 		}
diff --git a/sys/dev/firewire/sbp_targ.c b/sys/dev/firewire/sbp_targ.c
index 5c0897a2b570..120159ffdedb 100644
--- a/sys/dev/firewire/sbp_targ.c
+++ b/sys/dev/firewire/sbp_targ.c
@@ -82,6 +82,7 @@
 #define SBP_TARG_BIND_END	(((u_int64_t)SBP_TARG_BIND_HI << 32) | \
 				    SBP_TARG_BIND_LO(MAX_LOGINS))
 #define SBP_TARG_LOGIN_ID(lo)	(((lo) - SBP_TARG_BIND_LO(0))/0x20)
+#define SBP_TARG_MAX_CHUNK	2048	/* max DMA chunk per xfer */
 
 #define FETCH_MGM	0
 #define FETCH_CMD	1
@@ -931,7 +932,7 @@ sbp_targ_xfer_buf(struct orb_info *orbi, u_int offset,
 
 	while (size > 0) {
 		/* XXX assume dst_lo + off doesn't overflow */
-		len = MIN(size, 2048 /* XXX */);
+		len = MIN(size, SBP_TARG_MAX_CHUNK);
 		size -= len;
 		orbi->refcount ++;
 		if (ccb_dir == CAM_DIR_OUT) {


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a5ea62e.320bd.15eafdb0>