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-
>ohci1394.sys=>
1394 Host Controller(Physical,HW)=>1394 HDD(Physical,HW)

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

Re: filter driver question... by Maxim

Maxim
Thu Feb 08 05:35:44 CST 2007

> 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

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


Re: filter driver question... by bluestar

bluestar
Sat Feb 10 00:47:02 CST 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=A4=EB8=A4=E9, =A4U=A4=C87=AE=C935=A4=C0, "Maxim S. Shatskih" <m...@sto=
ragecraft.com> wrote:
> Read the SBP-2 spec first to understand what goes on at the level you plu=
g 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, co=
mputer
> is a slave) to indicate "tape operation done" events.
>
> But, for SBP-2 (which is "storage over1394" or "SCSI over1394") - the
> "allocate address range" feature can be not employed at all.
>
> Also the "allocate bandwidth/channel/resources" features. They are for is=
och
> traffic only, no isoch traffic for SBP-2.
>
> --
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> m...@storagecraft.comhttp://www.storagecraft.com



Re: filter driver question... by bluestar

bluestar
Sat Feb 10 01:01:04 CST 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=A4=EB8=A4=E9, =A4U=A4=C87=AE=C935=A4=C0, "Maxim S. Shatskih" <m...@sto=
ragecraft.com> wrote:
> Read the SBP-2 spec first to understand what goes on at the level you plu=
g 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, co=
mputer
> is a slave) to indicate "tape operation done" events.
>
> But, for SBP-2 (which is "storage over1394" or "SCSI over1394") - the
> "allocate address range" feature can be not employed at all.
>
> Also the "allocate bandwidth/channel/resources" features. They are for is=
och
> traffic only, no isoch traffic for SBP-2.
>
> --
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> m...@storagecraft.comhttp://www.storagecraft.com