Commit Graph

224 Commits

Author SHA1 Message Date
simokawa
88eb0432d9 Reduce debug message. 2003-11-10 14:04:37 +00:00
simokawa
d78e17d18b * Improve sbp device probe in boot process.
- Notify BUS RESET to CAM in sbp_attach().
	- Use last bus reset time to determine login delay.

Tested by: imura

* Add some sysctl MIB and tunables.
2003-11-10 03:51:23 +00:00
tanimura
7eade05dfa - Implement selwakeuppri() which allows raising the priority of a
thread being waken up.  The thread waken up can run at a priority as
  high as after tsleep().

- Replace selwakeup()s with selwakeuppri()s and pass appropriate
  priorities.

- Add cv_broadcastpri() which raises the priority of the broadcast
  threads.  Used by selwakeuppri() if collision occurs.

Not objected in:	-arch, -current
2003-11-09 09:17:26 +00:00
simokawa
78a182b242 Allow shared open of /dev/fwmem* for read-only. 2003-11-07 12:39:39 +00:00
simokawa
8c5c585444 Respect a return code of fwmem_open(). 2003-11-07 12:30:57 +00:00
simokawa
3fbf59c91d Increase FWMAXQUEUE up to 128. 2003-11-07 09:01:41 +00:00
simokawa
377c274717 Add compatibility for 4-stable.
Submitted by: imura
2003-11-07 08:59:35 +00:00
simokawa
96ae8eeca7 Use if_printf() for FWEDEBUG. 2003-11-06 04:19:15 +00:00
simokawa
5a6591e38b - Change driver name to fix if_xname breakage in the previous revision.
- Don't call device_get_unit() twice.

Tested by: nork
2003-11-03 13:01:23 +00:00
dfr
590f57cc62 Remove explicit cardbus attachments from drivers where this is identical
to the pci attachment. Cardbus is a derived class of pci so all pci
drivers are automatically available for matching against cardbus devices.

Reviewed by: imp
2003-11-03 09:22:18 +00:00
brooks
f1e94c6f29 Replace the if_name and if_unit members of struct ifnet with new members
if_xname, if_dname, and if_dunit. if_xname is the name of the interface
and if_dname/unit are the driver name and instance.

This change paves the way for interface renaming and enhanced pseudo
device creation and configuration symantics.

Approved By:	re (in principle)
Reviewed By:	njl, imp
Tested On:	i386, amd64, sparc64
Obtained From:	NetBSD (if_xname)
2003-10-31 18:32:15 +00:00
simokawa
c544392c8d Add a new sysctl MIB to control exclusive login. 2003-10-31 12:05:55 +00:00
simokawa
fa2d8db5b8 Reject too large OHCI version number.
Invalid OHCI version indicates OHCI registers are not mapped
correctly in PCI or CardBus layer.
2003-10-31 05:05:12 +00:00
simokawa
1670caf40a Add a compatibility macro for FreeBSD-4. 2003-10-31 04:58:03 +00:00
simokawa
e7ca1c4552 Fix fwmem_strategy() race in 4-stable. 2003-10-25 15:05:59 +00:00
simokawa
ff63cdda69 Move validity check of 'xfer->fc != NULL' to right place. 2003-10-25 15:04:49 +00:00
simokawa
ba78730b1c Fix for FW_ASYREQ.
- set send.pay_len correctly.
- copy response only if needed.
- remove unnecessary 'err = 0'.
2003-10-24 13:55:51 +00:00
simokawa
b1bb573d38 Don't check timeout just after booted.
Some transactions could be considered wrongly to be timeout
bacause interrupts are disabled during boot process.
2003-10-24 07:42:21 +00:00
simokawa
08700a775a Reduce debug messages. 2003-10-23 01:55:03 +00:00
simokawa
8b6083e5fd Add SBP-II target mode driver.
Though this is still incomplete and has some missing features such as
exclusive login and event notification, it may be enough for someone
who wants to play with it.

This driver is supposed to work with firewire(4), targ(4) of CAM(4)
and scsi_target(8) which can be found in /usr/share/example/scsi_target.
This driver doesn't require sbp(4) which implements initiator mode.

Sample configuration:

Kernel: (you can use modules as well)
device	firewire
device	scbus
device	targ
device	sbp_targ

After reboot:
# mdconfig -a -t malloc -s 10m
md0
# scsi_target 0:0:0 /dev/md0
(Assuming sbp_targ0 on scbus0)

You should find the 10MB HDD on FreeBSD/MacOS X/WinXP or whatever connected
to the target using FireWire.

Manpage is not finished yet.
2003-10-18 05:41:31 +00:00
simokawa
f8104f75ff - Call sbp_reset_start() for mgm timeout.
- Change type of target->luns to allocate an array of LUNs dynamically.
	This allows targets to change their number of LUNs after each bus reset.
- Serialize ORB POINTER command for each LUN.
- Improve debug messages.
2003-10-18 04:59:47 +00:00
simokawa
d3d8c999a7 - Introduce hw.firewire.hold_count sysctl MIB by popular demand.
This MIB specifies how many bus resets should be observed before the
lost device entry is removed. The default value is 3.
You can set this value to 0 if you want a SBP device to be detached from CAM
layer as soon as the device is physically detached like USB.
2003-10-06 07:17:43 +00:00
simokawa
158d3bb0b0 - Implement sbp_poll() to enable kernel dump on SBP-2 device. 2003-10-06 05:40:47 +00:00
simokawa
0becc96ab6 - Fix timeout for unodered excution.
In unodered excution case, we cannot detect link-chain end only
	by prev == NULL if lastest ORB is executed earlyer than the former
	ORBs. Use ORB_LINK_DEAD flag for this case.

- Don't reset agent for management ORB.
- Improve debug messages.

Spotted by: sbp target mode
2003-10-06 03:44:37 +00:00
simokawa
5dd11b6b7a Remove wrong usage of BUF_REFCNT().
Spotted by: phk
2003-10-02 14:33:30 +00:00
simokawa
db5d831317 MFp4: Change struct fw_xfer to reduce memory copy in fwmem_*() functions.
And many changes.

* all
	- Major change of struct fw_xfer.
		o {send,recv}.buf is splitted into hdr and payload.
		o Remove unnecessary fields.
		o spd is moved under send and recv.
	- Remove unnecessary 'volatile' keyword.
	- Add definition of rtcode and extcode.

* firewire.c
	- Ignore FWDEVINVAL devices in fw_noderesolve_nodeid().
	- Check the existance of the bind before call STAILQ_REMOVE().
	- Fix bug in the fw_bindadd().
	- Change element of struct fw_bind for simplicity.
	- Check rtcode of response packet.
	- Reduce split transaction timeout to 200 msec.
		(100msec is the default value in the spec.)
	- Set watchdog timer cycle to 10 Hz.
	- Set xfer->tv just before calling fw_get_tlabel().

* fwohci.c
	- Simplifies fwohci_get_plen().

* sbp.c
	- Fix byte order of multibyte scsi_status informations.
	- Split sbp.c and sbp.h.
	- Unit number is not necessary for FIFO¤ address.
	- Reduce LOGIN_DELAY and SCAN_DELAY to 1 sec.
	- Add some constants defineded in SBP-2 spec.

* fwmem.c
	- Introduce fwmem_strategy() and reduce memory copy.
2003-10-02 04:06:56 +00:00
simokawa
52f3ed4716 Fix a bug in fwdev_clone().
Spotted by: grog
2003-10-01 06:04:30 +00:00
simokawa
dfaa0f994d Phy register map. 2003-09-25 09:27:05 +00:00
simokawa
56896e3e65 Fix byte order of multi-byte scsi_status information. 2003-08-29 13:36:17 +00:00
obrien
c63dab466c Use __FBSDID().
Also some minor style cleanups.
2003-08-24 17:55:58 +00:00
simokawa
65a4971103 Make this compiled on RELENG_4. 2003-08-22 07:33:20 +00:00
simokawa
ae2b85209f Comment out verbose debug messages. 2003-08-22 07:30:41 +00:00
imp
c23aaeeba4 Prefer new location of pci include files (which have only been in the
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.
2003-08-22 05:54:52 +00:00
simokawa
1c5a183b7d Include order bit in sdev->type. 2003-08-21 08:40:31 +00:00
simokawa
d369701769 Fill reserved fields of transmitting packets header with zero.
This fixes the if_fwe problem with 1394b chip.

PR and Tested by: nork
2003-08-20 03:11:37 +00:00
simokawa
472beeeb6d Remove unused code. 2003-08-19 08:59:07 +00:00
simokawa
3f81cfafbe Drop too short packets. 2003-08-19 08:50:35 +00:00
simokawa
c05232c451 Allow to access phy registers via ioctl(). 2003-08-19 08:47:49 +00:00
simokawa
81168c64d4 Validate number of iso. DMA channels. 2003-08-12 13:01:27 +00:00
simokawa
2e2a46ee29 Change device name notation.
- /dev/fw{,mem}X.Y represents the Y'th unit on the X'th bus.
- /dev/fw{,mem}X is an alias of fw{,mem}X.0 for compatibility.
- Clone devices.
2003-08-05 03:11:39 +00:00
simokawa
ab808e6a79 - Don't mess with TX queue in fwohci_stop() if we failed to attach the device.
Tested by: wilko

- Detect memory mapping failure of registers by checking OHCI version.

Tested by: KONDOU, Kazuhiro <kazuhiro@alib.jp>
2003-08-04 05:43:02 +00:00
simokawa
e43686a8dc Workaround for gcc on alpha/ia64.
(warning: `xferq' might be used uninitialized in this function)
2003-08-01 17:19:12 +00:00
simokawa
5bab2bb89d Clean up fwdev.
Allocate iso DMA channel dynamically.  This allows us to have more
/dev/fw* than number of DMA channels for asyn. transactions and etc.
2003-08-01 04:51:21 +00:00
simokawa
631df8957e - Disable faking T_DIRECT as T_RBC because we have PIM_NO_6_BYTE now. 2003-08-01 02:24:39 +00:00
simokawa
62a83c4022 - Detect full of DMA channel correctly. 2003-08-01 02:13:25 +00:00
njl
1cd634adc1 Add a PATH_INQ flag, PIM_NO_6_BYTE, which indicates the SIM never wishes to
receive 6 byte commands.  Add a check for this flag to da(4) and cd(4) so
that they honor it.  This is a quick workaround for many devices (especially
USB) that require da(4) quirks to operate.  The more complete approach is
to finish the new transport code which will be aware of the SCSI version a
transport implements.

MFC after:	1 day
2003-07-28 06:15:59 +00:00
peter
a70eae2ee9 Fix some recently introduced warnings. 'Declaration does not declare
anything' etc.
2003-07-26 03:47:56 +00:00
simokawa
329815d7be Clean up include files. 2003-07-18 14:31:16 +00:00
simokawa
64c9528c46 Add some debug messages. 2003-07-18 05:28:30 +00:00
simokawa
830a5c883e Allow retrieval of local Configuration ROM. 2003-07-12 09:34:44 +00:00