- filter driver question...
- Posted by bluestar on February 8th, 2007
I want to add filter driver between sbp2port.sys and ohci1394.sys
that means driver and HW flow are
"Disk.sys(Class drivers)->sbp2port.sys-> kohci.sys ->1394bus.sys-
I also register one MajorFunction:IRP_MJ_INTERNAL_DEVICE_CONTROL to
catch infomation
about IRB of IEEE1394 request in my filter driver.
But except REQUEST_GET_CONFIGURATION_INFO,
REQUEST_GET_GENERATION_COUNT,
REQUEST_ALLOCATE_ADDRESS_RANGE..., i just only get
REQUEST_ASYNC_WRITE:
length is 4 and datalength is 0x00000F. I already mapped this data
with 1394/sbp2 protocol and
it is doorbell from Host Controller to 1394 HDD....
How to get other informations, like that when i copy one file to 1394
HDD, can i know where are
data length, data source, sbp2 packet, ...etc???
I would like to split more smaller blocks to send when copying one big
file in my filter driver...
Alan
- Posted by Maxim S. Shatskih on February 8th, 2007
Read the SBP-2 spec first to understand what goes on at the level you plug your
filter in.
For instance, "allocate address range" means - adding the _target_
functionality to the host machine, so the 1394 device can be a master and write
to some MDL you have provided using a 1394 transaction. Callbacks will be
called at such a write attempt.
This is something like common buffer DMA or message-signaled interrupts, but
for 1394 bus. There is no such facility in USB since USB is strictly
host-to-target, while 1394 is not.
Some 1394-based protocols use "allocate address range". For instance, AV/C
protocol used to discover the inner topology of the miniDV camera and to
control its tape mechanism uses the address range (camera is a master, computer
is a slave) to indicate "tape operation done" events.
But, for SBP-2 (which is "storage over 1394" or "SCSI over 1394") - the
"allocate address range" feature can be not employed at all.
Also the "allocate bandwidth/channel/resources" features. They are for isoch
traffic only, no isoch traffic for SBP-2.
--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim@storagecraft.com
http://www.storagecraft.com
- Posted by bluestar on February 10th, 2007
Dear Max:
I am very appreciated your information.
When on power-on, i found the sbp2port driver will call
"allocate address range" many times
to prepare some memories for host controller to the purpose you
mention. And then ask the device
to "AGENT_RESET", "UNSOLICITED_STATUS_ENABLE","ORB_POINTER" to the
host controller.
At last, if the host want to do commands, it will put
"command_block_ORB to memory" and then
send AsyncWrite(DOORBELL) to the device.
Could you teach me how do i get this memory that it put
command_block_ORB ???
If i know the this memory, maybe fetch the ORB information and modify
its data for fixing debug
of our host controller. (split 32 page_tables(128K bytes) to both 16
page_tables(64K, 64K) )
Alan
On 2¤ë8¤é, ¤U¤È7®É35¤À, "Maxim S. Shatskih" <m...@storagecraft.com> wrote:
- Posted by bluestar on February 10th, 2007
Dear Max:
I am very appreciated your information.
When on power-on, i found the sbp2port driver will send
"allocate address range" many times to ohci1394 to prepare
some memories for host controller to the purpose you mention.
And then host sends "AGENT_RESET",
"UNSOLICITED_STATUS_ENABLE", "ORB_POINTER" to
the device. At last, if the host want to do read/write commands,
it will put "command_block_ORB to memory" and then send
AsyncWrite(DOORBELL) to the device.
Could you teach me how do i get this memory that it put
command_block_ORB ??? If i know the this memory, maybe
fetch the ORB information and modify its data for fixing debug
of our host controller. (split 32 page_tables(128K bytes) to
both 16 page_tables(64K, 64K) )
Alan
On 2¤ë8¤é, ¤U¤È7®É35¤À, "Maxim S. Shatskih" <m...@storagecraft.com> wrote: