summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/firewire.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2003-01-23 13:34:40 +0000
committersimokawa <simokawa@FreeBSD.org>2003-01-23 13:34:40 +0000
commitb4946c8e8331f0672fb9b64bf846e42fa3e2dc34 (patch)
tree97076855c3bf3cc2174c4e64c7a395fc202aa9ba /sys/dev/firewire/firewire.c
parentd0a96d218114db1296cc5805e7ba77e524fc7039 (diff)
downloadFreeBSD-src-b4946c8e8331f0672fb9b64bf846e42fa3e2dc34.zip
FreeBSD-src-b4946c8e8331f0672fb9b64bf846e42fa3e2dc34.tar.gz
- Add sysctl knob for bus manager. (hw.firewire.try_bmr)
- Check invalid SID length. - Add some debug messages.
Diffstat (limited to 'sys/dev/firewire/firewire.c')
-rw-r--r--sys/dev/firewire/firewire.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c
index bf40104..eb31387 100644
--- a/sys/dev/firewire/firewire.c
+++ b/sys/dev/firewire/firewire.c
@@ -57,10 +57,12 @@
#include <dev/firewire/iec13213.h>
#include <dev/firewire/iec68113.h>
-int firewire_debug=0;
-SYSCTL_NODE(_hw, OID_AUTO, firewire, CTLFLAG_RD, 0, "FireWire Subsystem");
+int firewire_debug=0, try_bmr=1;
SYSCTL_INT(_debug, OID_AUTO, firewire_debug, CTLFLAG_RW, &firewire_debug, 0,
"FireWire driver debug flag");
+SYSCTL_NODE(_hw, OID_AUTO, firewire, CTLFLAG_RD, 0, "FireWire Subsystem");
+SYSCTL_INT(_hw_firewire, OID_AUTO, try_bmr, CTLFLAG_RW, &try_bmr, 0,
+ "Try to be a bus manager");
#define FW_MAXASYRTY 4
#define FW_MAXDEVRCNT 4
@@ -1195,32 +1197,29 @@ void fw_sidrcv(struct firewire_comm* fc, caddr_t buf, u_int len, u_int off)
printf("\n");
}
- if((fc->irm != -1) && (CSRARC(fc, BUS_MGR_ID) == 0x3f) ){
- if(fc->irm == ((CSRARC(fc, NODE_IDS) >> 16 ) & 0x3f)){
+ if (try_bmr && (fc->irm != -1) && (CSRARC(fc, BUS_MGR_ID) == 0x3f)) {
+ if (fc->irm == ((CSRARC(fc, NODE_IDS) >> 16 ) & 0x3f)) {
fc->status = FWBUSMGRDONE;
CSRARC(fc, BUS_MGR_ID) = fc->set_bmr(fc, fc->irm);
- }else{
+ } else {
fc->status = FWBUSMGRELECT;
- fc->bmrhandle = timeout((timeout_t *)fw_try_bmr,(void *)fc, hz / 8);
+ fc->bmrhandle = timeout((timeout_t *)fw_try_bmr,
+ (void *)fc, hz / 8);
}
- }else{
+ } else {
fc->status = FWBUSMGRDONE;
+#if 0
device_printf(fc->bdev, "BMR = %x\n",
CSRARC(fc, BUS_MGR_ID));
+#endif
}
free(buf, M_DEVBUF);
-#if 1
- /* XXX optimize gap_count, if I am BMGR */
+ /* Optimize gap_count, if I am BMGR */
if(fc->irm == ((CSRARC(fc, NODE_IDS) >> 16 ) & 0x3f)){
fw_phy_config(fc, -1, gap_cnt[fc->max_hop]);
}
-#endif
-#if 1
callout_reset(&fc->busprobe_callout, hz/4,
(void *)fw_bus_probe, (void *)fc);
-#else
- fw_bus_probe(fc);
-#endif
}
/*
OpenPOWER on IntegriCloud