Commit Graph

177 Commits

Author SHA1 Message Date
mjl 088da88a56 Typos in comments. From OpenBSD. 2003-10-22 09:02:49 +00:00
enami e7533e9811 Don't limit xfer size to SBP2_MAXPHYS. Its not transfer size limit
but just a threshold how to describe transfer.
2003-10-18 12:47:28 +00:00
mrg 9abaf7289a sprinkle some LL suffixes on >32 bit number literals 2003-08-04 07:00:19 +00:00
lukem 365cbd9428 add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
itojun 7f6ed16ef4 function prototype must not have variable name 2003-07-08 10:06:28 +00:00
drochner 9897b6dfac maintain statistics counters 2003-07-03 11:36:18 +00:00
fvdl d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
darrenr 960df3c8d1 Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records.  The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
2003-06-28 14:20:43 +00:00
haya 5ae8bbc4cc Bugfix: fwohci_ir_read(): loop continues when the buffer size not only
greater than but also same as packet size.  This bug is pointed out by
FUKAUMI Naoki.
2003-05-26 16:10:36 +00:00
wiz 1ffa7b76c4 DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
christos d77be05384 PR/20982: Eric Fair: fix debugging printf format errors. 2003-04-02 21:53:15 +00:00
jmc 4829a1952a Redo last fix to work correctly. Need to run abort on each orb (though it
doesn't much now it will eventually) and then so a proper sbp2_free_orb.
2003-03-07 20:18:57 +00:00
drochner c0e23f3152 -Fix ORB queue corruption / use of free()d memory
caused by bad interaction of sbp2_free() and sbp2_abort().
 sbp2_abort() requires that its argument ORB is on the
 "active" list, and it puts it onto the freelist - sometimes.
 So we had 2 causes of corruption:
 -removing the ORB from a list which it isn't on
 -free()ing recycleable items on the ORB freelist
-minor cosmetics
2003-03-07 16:29:33 +00:00
enami fa6061e7a4 Make this file compiles when FW_DEBUG is defined but SBP2_DEBUG isn't defined. 2003-02-28 23:31:41 +00:00
thorpej e354490475 Use aprint_*(). 2003-01-31 02:15:57 +00:00
thorpej a5fa1cfd6a Use PRIx64 to get the correct format for 64-bit hex numbers. Don't
need \n at the end of a panic().
2003-01-09 19:16:30 +00:00
wiz c6f1277bfa synchronous, not syncronous. 2003-01-06 13:10:25 +00:00
jmc 216f0f8cde Add some missing splx()'s noted by Krister Walfridsson 2003-01-05 08:11:33 +00:00
jmc da000bb65b Remove arbitrary bufcnt limit in at_output. 2003-01-05 08:03:45 +00:00
thorpej 72a7af27b0 Use aprint_normal() in cfprint routines. 2003-01-01 00:10:15 +00:00
jmc 549904564e Implementation of page table support for 64k or greater transfers. This should
also handle uio structs passed in as well. All standard filesystem actions
are working at this stage (can copy, execute, mount, umount, fsck, etc).
2002-12-28 10:54:47 +00:00
jmc ae8cc0726d Move SBP data area's below the 4G mark as some broken devices seem to clip data
address's to 32 bits.
XXX - Need to move the if_fw fifo addr as well but this needs some testing
2002-12-28 10:52:41 +00:00
jmc 8630685f69 Add support for page tables 2002-12-19 09:59:47 +00:00
jmc ef48ba7693 Add a minphys routine since the single largest packet is less than minphys() 2002-12-19 09:58:24 +00:00
jmc 31f02beb7c Add defines for supporting page tables 2002-12-19 09:56:10 +00:00
jmc 9980e6b848 Updates 2002-12-19 07:22:40 +00:00
jmc 092fe54e3d Add additional debugging for fwohci_arrq_input: no listener conditions 2002-12-19 02:15:31 +00:00
jmc 62da7b9c60 Add SBP2_MAXPHYS 2002-12-18 06:08:21 +00:00
jmc fe19747374 Redo state handling as ack's, status, etc can come in and be processed in
various orders depending how the upper level driver is flushing it's queue's.
This prevents the deadlocks I was seeing before with >8k writes.

XXX: Still not completely there as > 64k copies trigger bugs and the page
table support still needs to be written to break those down.
2002-12-18 04:48:33 +00:00
jmc e627b7fefc Improve performance with disks almost 60x by redoing the callback handler to
accept ranges as well as single addresses. Still need to go through any key
areas and remove the malloc's and replace these with some sort of pooling
instead.
2002-12-13 07:47:52 +00:00
jmc 0215635717 Checkpoint commit:
1. Reduce debugging level to sane levels
2. Fix bugs in alloc_data_map related to allocing whole bytes of bitmap at
a time.

At this point the driver is functional. It talks to a local drive here and
can label/newfs. Performance is...lacking at the moment as its chewing cpu
heavily (probably due to the number of memcpy's) and will be the next area
attacked.
2002-12-09 23:42:53 +00:00
jmc 151668ce8d Drop default debugging level to something a bit more sane 2002-12-09 23:39:18 +00:00
jmc 33736c059a Ooops...Make sure for status to set error and resid before calling the
completion routines. Makes reads actually return data to userland now which
means I can now put a disklabel on the drive.
2002-12-09 22:28:21 +00:00
jmc 4d74b607a2 Restructure how the at_output dma map gets setup. Ask for a dma map that can
support up to the max ohci descriptor segments. Then attempt to fill it in
via a load. Use the number of segments filled in as the basis for figuring
out how many descriptors to supply to the ohci DMA engine.

XXX: Still needs to account for requests which because of splits may overflow
the 6 dma descriptors available today. For now this fixes cases where a
single 512 byte write was getting split into 2 dma segments from 1 incoming
iov request
2002-12-09 09:09:54 +00:00
jmc 2a3e786250 Fix fwohci_write's sanity check against large packets. Max rec is only used
when writing directly to the device (ala IEEE1394_TCODE_WRITE_REQ_BLOCK).
Otherwise the largest size is determined strictly by speed
2002-12-09 07:26:02 +00:00
jmc 11b3f4e7d1 Provide a macro for turning a speed number into a max rec value 2002-12-09 07:24:57 +00:00
jmc 3d5ded55c7 Write sbp2_free_data_mapping and fix a bug where read responses weren't sending
back the right tlabel
2002-12-09 07:23:43 +00:00
jmc 1f133763ba Don't need sbp2_datamapping. Each one is tracked via the associated orb 2002-12-09 07:23:24 +00:00
jmc 9bea8ca9b7 Fix logic screwup in determining which bits to set in alloc'ing data maps 2002-12-08 05:59:05 +00:00
jmc 5a69251dd8 Account for corner cases better in alloc_data_mapping and only ask for a 16s
reconnect time instead of 2^16s
2002-12-06 02:19:34 +00:00
jmc 9e81590397 Fill in sc1394_node_id after a self id cycle 2002-12-06 02:17:30 +00:00
jmc 9a4d03f9b2 Add a def for a smaller reconnect time that will be used by default 2002-12-06 02:14:59 +00:00
agc ecc0017939 Cast appropriately so that this compiles on sparc, sparc64, macppc etc. 2002-12-05 12:22:37 +00:00
haya 805040f592 New Feature: add pseudo device for IEEE 1394 isochronous stream and
isochronous reception routine for IEEE 1394 OHCI (fwohci).  The
transmission part is under construction.

The minimum configuration options for this feature are:

# IEEE 1394 (i.LINK)
fwohci*	at pci? dev ? function ?
pseudo-device	fwiso		1
2002-12-04 00:28:39 +00:00
explorer 4c21f28434 make this compile without SBP2_DEBUG defined 2002-12-03 06:11:31 +00:00
jmc bd096e500d Set the only big quirk since the drives I've tried return errors on 6 byte cdbs 2002-12-01 12:12:09 +00:00
jmc 4e448779d8 Checkpoint checkin:
1. Clean up some debugging and trigger some on only extreme debugging needs
2. Comment alloc data mapping a bit better and fix some of the bugs here
(note..there still are some so for now the free method is never called while
I track these down)
3. Fix the copying logic in data_resp. It was calculating negative offsets
which blew up memcpy.

At this point I can probe, inquire and get through the findroot steps of a
boot:

sd0 at scsibus0 target 0 lun 0: <Maxtor, 1394 storage, 60> disk fixed
sd0: mode sense (4) returned nonsense; using fictitious geometry
sd0: 76293 MB, 76293 cyl, 64 head, 32 sec, 512 bytes/sect x 156250000 sectors
sd0: mode sense (4) returned nonsense; using fictitious geometry
sd0: no disk label
findroot: can't open dev sd0a (6)

NOTE: This will panic my machine right now with a simple disklabel -r sd0.
Also, since the free mappings routines are if (0)'d out at the moment do not
use this code for anything except experiments and then only on a machine
you don't mind panic'ing.

Fixing the mapping routines will be the next step and then finally chasing
down the proper mode sense these drives understand.
2002-12-01 12:09:56 +00:00
jmc 3b7f83f77f Correct calculating of offsets when memcpy returned data. 2002-12-01 12:05:11 +00:00
jmc 1f366747d4 Tidy up some debug routines and make verbose packet dumps only when sbp2debug>2 2002-11-30 06:18:54 +00:00
jmc 88fe775d19 Print out some more details from incoming packets (tlabel's).
Also, when receiving a write packet, respond with a proper ack if something
was available to process it. (Fixes most of the sbp2 random hangs)
2002-11-30 06:09:42 +00:00