Thread: destination offset
Brought to you by:
aeb,
bencollins
From: Stephen G. <st...@am...> - 2000-05-24 07:25:12
|
Hi this is probably another one of my dumb questions ... If the root node receives a write request with a specific destination offset, does this mean that the data will be written to a specific memory location on the root node? My application sends a write request for a data block which specifies a return destination offset of 0x1000. Any address can be specified, but this just happens to be one that was snooped. Can this address be registered in the root node using some method in libraw1394 or will I need to resort to the high level routines, such as used in ether1394.c hpsb_register_addrspace ? Thanks for any help, Steve. Background: HP (E8491A) VXI controller, with PC IEEE1394 interface. The snooped data on the IEEE1394 line gave the following annotated transaction, for "abort" sent to a device (Tektronix) in the VXI rack: write request for data block from win95 to HP 0x0 ffc08c10 phys=3c0 tl=23 rt=0 tcode=1 pri=0 0x1 ffc2ffff source=3c2 dest(high)=ffff 0x2 e8000000 dest(low) =e8000000 0x3 1e0000 data_len=1e ext_tcode=0 0x4 5a5d5286 header_CRC 0x5 52002 HP send code 2 0x6 ffff source(high)=ffff 0x7 1000 source(low) =1000 0x8 6 send chars=6 0x9 20001 0xa 1 0xb 61626f72 abor <-- command string 0xc 740a0000 t <-- command string 0xd d1bce49b data_CRC 0xe 10012 final quadlet write response from HP to win95 0x0 ffc28c20 phys=3c2 tl=23 rt=0 tcode=2 pri=0 0x1 ffc00000 source=3c0 rcode=0(resp_complete) reserved=0 0x2 0 reserved 0x3 a93618f3 header_CRC 0x4 10011 final quadlet write request for data block from HP to win95 0x0 ffc29410 phys=3c2 tl=25 rt=0 tcode=1 pri=0 0x1 ffc0ffff source=3c0 dest(high)=ffff 0x2 1000 dest(low) =1000 0x3 c0000 data_len=c ext_tcode=0 0x4 ad396d33 header_CRC 0x5 50000 HP received code 000 0x6 6 received chars=6 0x7 4bff01ff 0x8 ca9c7bec data_CRC 0x9 10012 final quadlet write response from win95 to HP 0x0 ffc09420 phys=3c0 tl=25 rt=0 tcode=2 pri=0 0x1 ffc20000 source=3c2 rcode=0(resp_complete) reserved=0 0x2 0 reserved 0x3 f8834496 header_CRC 0x4 10011 final quadlet For the Linux interface, I use raw1394_start_write to send the data quadlets to the destination offset 0xe8000000: 0x52002 0xffff 0x1000 0x6 0x20001 0x1 0x61626f72 Here is what (dmesg) the kernel traces give, the final packet error code '7' indicates that the "request was send to an address not accessible in the destination node": ieee1394: send packet 400: ffc00110 ffc1ffff e8000000 00200000 ieee1394: send data: 00052002 0000ffff 00001000 00000006 00020001 00000001 61626f72 740a0000 aic5800-0: packet sent with ack code 2 ieee1394: received packet: ffc10020 ffc00000 00000000 00000001 ieee1394: received packet: ffc1f010 ffc0ffff 00001000 000c0000 0005000f 00000000 4bff00ff 00000002 ieee1394: send packet 400: ffc0f120 ffc17000 00000000 aic5800-0: packet sent with ack code 1 |
From: Andreas B. <and...@mu...> - 2000-05-24 11:50:54
|
On Wed, May 24, 2000 at 05:23:30PM +1000, Stephen Gibson wrote: > > Hi this is probably another one of my dumb questions ... > > If the root node receives a write request with a specific > destination offset, does this mean that the data will be > written to a specific memory location on the root node? Although some 1394 chips can map a window of real memory into the node's address space, all requests are manually interpreted by the subsystem (except for CSR ROM reads on OHCI, as it seems). > My application sends a write request for a data block which specifies > a return destination offset of 0x1000. Any address can be specified, > but this just happens to be one that was snooped. > > Can this address be registered in the root node using some method > in libraw1394 or will I need to resort to the high level routines, such as > used in ether1394.c > hpsb_register_addrspace ? You have to write a kernel module and use hpsb_register_addrspace(). Passing requests to user space would require some architectural change in the subsystem. -- Andreas E. Bombe <and...@mu...> DSA key 0x04880A44 http://home.pages.de/~andreas.bombe/ http://linux1394.sourceforge.net/ |