Commit Graph

121 Commits

Author SHA1 Message Date
Hidetoshi Shimokawa
3b79dd164b - improve timeout handling in fwmem.c
- stop processing of TX db if we reaches the end of active db.
2003-03-07 02:51:59 +00:00
Hidetoshi Shimokawa
2b4601d10b MFp4(simokawa_sbp)
Improve if_fwe performance.
- Simplify mbuf handling by using bulkxfer.
	Now, it uses mbuf clusters for RX buffer as usual ethernet drivers.
- Recycle struct xfer buffer and don't call malloc at runtime.
- Count input and output errors.
- Handle a mbuf chain longer than 6 correctly.
- Increase queue length.
2003-03-06 05:06:44 +00:00
Hidetoshi Shimokawa
9ca8add364 Set ldesc after dbch->ndesc has initialized. 2003-03-05 01:50:57 +00:00
Hidetoshi Shimokawa
0fc9ced053 Fix printf warning on RELENG_4. 2003-03-04 06:47:17 +00:00
Hidetoshi Shimokawa
46ce9fefe5 Simplify ORB queue management.
Don't send doorbell and send ORB pointer only if it's necessary.
This reduces bus traffic and interrupts much.
2003-03-03 15:27:29 +00:00
Poul-Henning Kamp
7ac40f5f59 Gigacommit to improve device-driver source compatibility between
branches:

Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.

This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.

Approved by:    re(scottl)
2003-03-03 12:15:54 +00:00
Hidetoshi Shimokawa
dcae7539cb Defer allowing async. requests after self ID's have received.
This should fix some problem of SBP2 device probing.

Prior to rev 1.41, we keep writing the register while bus reset phase.
But in rev 1.41, we ignore successive bus reset events and some chips seem to
clear the register after we write to it.

Tested by: Michael Reifenberger <root@nihil.reifenberger.com>
2003-03-03 04:10:56 +00:00
Poul-Henning Kamp
95e4359c8e Use canonical format for cdevsw initialization. 2003-03-02 18:51:46 +00:00
Dag-Erling Smørgrav
521f364b80 More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9). 2003-03-02 16:54:40 +00:00
Hidetoshi Shimokawa
37413f0a0f Don't reset agent before processing OCB has done. 2003-03-01 16:50:40 +00:00
Hidetoshi Shimokawa
455454994f MFp4(simokawa_sbp branch)
Improve SBP device probeing:
- Wait 2 sec before issuing LOGIN ORB expecting the reconnection
	hold timer expires.
- Serialize management ORB and scanning LUN by CAM on each target.
	This should fix the problem for devices which have multiple LUNs.
	Test device is donated by: Jaye Mathisen <mrcpu@internetcds.com>
- Freeze SIM queue for 2 sec after BUS RESET.
- Retry with LOGIN rather than RECONNECT after LOGIN is not completed for
	BUS RESET.
- Use appropriate CAM status for BUS RESET and DEVICE RESET.
- Let CAM to scan targets after BUS REST.
- Implement CAM scan target function.
- Keep our own devq freeze count.
- Let CAM to know that SBP does tagged queuing.

These should be merged to RELENG_4 before 4.8-RELEASE.
2003-02-27 12:51:24 +00:00
Maxime Henrion
07159f9c56 Cleanup of the d_mmap_t interface.
- Get rid of the useless atop() / pmap_phys_address() detour.  The
  device mmap handlers must now give back the physical address
  without atop()'ing it.
- Don't borrow the physical address of the mapping in the returned
  int.  Now we properly pass a vm_offset_t * and expect it to be
  filled by the mmap handler when the mapping was successful.  The
  mmap handler must now return 0 when successful, any other value
  is considered as an error.  Previously, returning -1 was the only
  way to fail.  This change thus accidentally fixes some devices
  which were bogusly returning errno constants which would have been
  considered as addresses by the device pager.
- Garbage collect the poorly named pmap_phys_address() now that it's
  no longer used.
- Convert all the d_mmap_t consumers to the new API.

I'm still not sure wheter we need a __FreeBSD_version bump for this,
since and we didn't guarantee API/ABI stability until 5.1-RELEASE.

Discussed with:		alc, phk, jake
Reviewed by:		peter
Compile-tested on:	LINT (i386), GENERIC (alpha and sparc64)
Runtime-tested on:	i386
2003-02-25 03:21:22 +00:00
Hidetoshi Shimokawa
41dc7a9831 Oops, forgot to put back debug level. 2003-02-21 02:27:13 +00:00
Hidetoshi Shimokawa
559dfd9b55 remove unused code. 2003-02-21 02:14:00 +00:00
Hidetoshi Shimokawa
cd1f52fe80 Fix typo
Submitted by: Masahiro Ito <m_itoh@mub.biglobe.ne.jp>
2003-02-21 02:09:39 +00:00
Hidetoshi Shimokawa
d17c7743c6 Don't scan lun by myself while boot process leave it CAM to scan the bus.
Some drives seem to be confused by simultaneous probes.

Tested by: marcel

As a side effect, logical units whose lun is greater than 0 might not be
probed correctly if the lun of 0 doesn't exist in the target because
CAM doesn't scan such luns.
I have a SCSI-FireWire bridge which maps SCSI-ID to LUN and it is an
example of such targets.
2003-02-21 02:09:04 +00:00
Warner Losh
a163d034fa Back out M_* changes, per decision of the TRB.
Approved by: trb
2003-02-19 05:47:46 +00:00
Hidetoshi Shimokawa
d5e6895166 Fix fwdev memory leak on detaching. 2003-02-18 10:56:00 +00:00
Hidetoshi Shimokawa
69f034dae4 Use pci_get_devid(). 2003-02-18 10:01:44 +00:00
Hidetoshi Shimokawa
12f2a2958b Add 'uPD72871/2 IEEE1394 1-Chip OHCI Host Controller'. 2003-02-18 09:46:52 +00:00
Hidetoshi Shimokawa
1adf684228 * firewire.c
- Fix memory leak in detaching.
- Initialize fc->status to other than FWBUSREST.

* fwohci.c
- Ignore BUS reset events while BUS reset phase. We can't clear that flag
	during bus reset phase.
2003-02-18 09:39:48 +00:00
Hidetoshi Shimokawa
f918ec7bac * firewire.c
- Don't initiate bus reset even if probe failed for some nodes to prevent
	infinite bus reset loop.

Problem Reported by: Pierre Beyssac <pb@fasterix.frmug.org>

- Protect timeout routine with splfw() for 4-stable.

* sbp.c

- Make sure to release devq when start request.
2003-02-17 14:24:06 +00:00
Hidetoshi Shimokawa
6611732341 Protect calling fwohci_intr() with splfw() for 4-stable. 2003-02-15 01:25:39 +00:00
Hidetoshi Shimokawa
3173a15429 - Increase split transaction timeout from 2 sec to 6 sec.
Problem reported by: Michael Reifenberger <root@nihil.reifenberger.com>

- Improve debug message.
2003-02-15 00:54:10 +00:00
Hidetoshi Shimokawa
c26f4c7168 Clear the bus reset event flag as soon as possible after
the initialization has completed to start transactions even when
interrupt is disabled during the boot process.
2003-02-14 15:52:32 +00:00
Hidetoshi Shimokawa
f3d2847dd0 - Though I got a feedback from the originator of kern/48129 that the
previous revision fixed the panic, I found the problem exits in
another part of the function by investigating the crom dump sent by him.
The search was started in the middle of bus info block and the
routine misunderstood the EUI64 as a crom entry. This problem is fixed.

PR: kern/48129

Fix incorrect type mask included in a logical unit number and check
the validity of the lun.
2003-02-14 03:09:59 +00:00
Hidetoshi Shimokawa
627d85fbdd firewire/fwohci
- Drain fwohci TX queue first then drain xfer queue which has not started.
- Check validity of the received packet length.
- Don't allocate too large buffer for xfer receive buf.

sbp
- Fix panic for some CROM which doesn't have a text leaf.
	This could fix the PR kern/48129 but no feedback has been gotten from
	the originator yet.
- Put back some M_NOWAIT flags into malloc which could be called
	in interrupt context for 4-stable.
2003-02-13 13:35:57 +00:00
Hidetoshi Shimokawa
645394e60b Increase atrq.ndesc for if_fwe. 2003-02-09 17:11:55 +00:00
Hidetoshi Shimokawa
233b1b978b Add new ioctl to specify target EUI64 for fwmem. 2003-02-09 10:14:22 +00:00
Hidetoshi Shimokawa
5a8d8970be Remove unnecessary check for OCB_ACT_CMD. 2003-02-09 07:40:27 +00:00
Hidetoshi Shimokawa
864d7e72b8 - Detect split transcation timeout.
* implement watchdog timer.
	* check all standing transactions in firewire_xfer_timeout().
- Add firewire_xferq_drain() for fw_busreset().
- Add/improve some debug messages.
- Call fw_xfer_done() if retry handler is NULL.
2003-02-09 07:16:01 +00:00
Hidetoshi Shimokawa
6f99c2ff52 Remove debug message. 2003-02-07 09:46:30 +00:00
Hidetoshi Shimokawa
d3539e9792 Fix memory leak. 2003-02-06 17:23:01 +00:00
Hidetoshi Shimokawa
5db3899d2e Fix for fwmem write part.
- fix typo
- don't need to check receive buffer.
- don't forget to free xfer on errer.
2003-02-05 17:19:34 +00:00
Hidetoshi Shimokawa
8a45d99b2a - Implement write part.
- Use quad access for aligned 4 byte access.
2003-02-04 17:09:59 +00:00
Hidetoshi Shimokawa
a487c0f261 - Improve recovery after timeout.
* reset agent first then reset target.
	* untimeout all ccbs.
- Try reconnect first if the device has been seen.
- Fix for ORB_FUN_ATA.
2003-02-04 17:08:45 +00:00
Hidetoshi Shimokawa
beb19fc5dd Remove unnecessary M_NOWAIT. 2003-02-03 09:41:42 +00:00
Hidetoshi Shimokawa
62dae95462 Add missing 'static'. 2003-02-03 08:10:50 +00:00
Hidetoshi Shimokawa
48249fe0c8 - Take malloc type as an argument in fw_xfer_alloc().
- Fix overwrite problem of freed buffers. It was rare but could happen
	when fwohci_arcv() is called before fwohci_txd() is called for
	the transcation.
- Drain AT queues and pend AR queues on SID receive rather than BUS reset to
	make sure DMA actually stops.
- Do agent reset in sbp_timeout().
2003-02-03 07:33:31 +00:00
Hidetoshi Shimokawa
5166f1df39 Define new malloc type M_FW and use it. 2003-02-01 15:04:33 +00:00
Hidetoshi Shimokawa
0981f5f00e - replace timeout with callout_*.
- replace TAILQ with STAILQ for device list.
- some clean up.
2003-02-01 14:42:49 +00:00
Hidetoshi Shimokawa
3c62126d84 Check status FIFO more closely to report error. 2003-02-01 12:06:57 +00:00
Hidetoshi Shimokawa
0db3d1635c Add basic support for device wiring down to specific (CAM)
target id. It still needs to be hard-coded now but will
be changed to be configured by tunables or device hints.
2003-02-01 08:55:33 +00:00
Hidetoshi Shimokawa
4230e8de2f Sort device list by eui64 in acendent order correctly. 2003-02-01 06:34:36 +00:00
Hidetoshi Shimokawa
ba3129cb87 function name change. 2003-01-31 14:14:45 +00:00
Hidetoshi Shimokawa
64cf5240a9 SBP related changes.
- Issue LOGOUT command on detach and shutdown.
- Rename some functions.
2003-01-31 14:11:22 +00:00
Hidetoshi Shimokawa
9bb3ca0305 SBP related changes.
- Set dual phase retry BUSY_TIMEOUT.
- Let users to know serial bus error.
2003-01-31 03:09:13 +00:00
Hidetoshi Shimokawa
958c774916 Restart cycle master after bus manager election.
This should fix the IR(and maybe IT) problem when
the host becames the bus manager.
- rename fw_noderesolve() to fw_noderesolve_eui64() and add
	fw_noderesolve_nodeid().
2003-01-30 05:18:35 +00:00
Hidetoshi Shimokawa
449e559cdb - Handle SCSI_STATUS_BUSY case. 2003-01-30 05:12:56 +00:00
Hidetoshi Shimokawa
7054e8482e - Probe number of IT/IR DMA contexts as specified in OHCI spec. 2003-01-29 15:32:35 +00:00