Re: Juju



Kristian Høgsberg wrote:
Another thing that probably makes my explanation a little confusing is that
there are two types of transactions: FireWire transactions which consists of a
request followed by a response and are pretty much the smallest interaction
you can have with a remote device. Then there are SBP-2 transactions, which
are a higer level sequence layered on top of FireWire transactions.
[...]

Exactly. One SBP-2 transaction is one SCSI task's request and completion
and contains
1. one 1394 write transaction, requested by initiator node,
2. one 1394 read transaction, requested by the target node,
3. zero to many 1394 read or write transactions, requested by the
target node,
4. one 1394 write transaction, requested by the target node
(if everything goes well and if we don't have dynamically appended ORB
lists). So it might be less confusing if we only speak of "1394
transactions" and "SCSI tasks".

BTW, SBP-3 allows to wrap step 2 into step 1. I read that some SBP-2
targets support this SBP-3 feature.

[...]
The target wrote an SBP-2 status block into our memory. The status block
contains the FireWire bus address of the ORB to which it belongs. Juju's
fw-sbp2 does the same as mainline's sbp2: Looking through the pile of
unfinished ORBs for one with the same FireWire bus address, which was
previously derived from the DMA mapped address.

But the status write actually does carry the address of the ORB it signals the
completion of. So in theory, we could just read out the ORB address from the
status write packet and map that back to kernel virtual memory

"Map back to virtual memory" is exactly what we do already, although in
a rather dumb fashion. It would be easier if there was a portable
bus_to_virt() which would do the job for us. This is much more of an
issue if we want to work without OHCI-1394 physical DMA: Then we have to
do this inverse DMA mapping also for arbitrary pieces of all scatter
gather elements of the SCSI data buffer.

[...]
One thing I want to do (though very low priority) is to allocate the ORBs out
of a preallocated circular buffer.

Incidentally, one thing I want to do (though at low priority) is to use
a circular ORB buffer... Well, linux1394 has a number of more serious
issues pending at bugzilla.kernel.org, and meanwhile people are eager to
run things like FreeBob or Kino on Juju --- thus it remains to be seen
who of us gets to it first. :-)
--
Stefan Richter
-=====-=-=== ---= ==-=-
http://arcgraph.de/sr/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: XcitingGames/TMG payout problems
    ... Under "cashier" on xcitinggames site I request ... August 2010 I request a transaction history from the cashier section ... You have requested a list of all your transactions: ... XcitingGames Cashier " ...
    (rec.games.backgammon)
  • Re: Can extra processing threads help in this case?
    ... ONE IN THE WORLD uses SQL for a FIFO! ... the database of pending transactions, ... handle the fact that if server 1 ... removes the request, and then crashes, the transaction ...
    (microsoft.public.vc.mfc)
  • Re: Can extra processing threads help in this case?
    ... ONE IN THE WORLD uses SQL for a FIFO! ... the database of pending transactions, ... handle the fact that if server 1 ... removes the request, and then crashes, the transaction ...
    (microsoft.public.vc.mfc)
  • Re: How do I use XmlReader on an XmlDocument passed as a parameter
    ... transactions, each with two co-borrowers and associated residences. ... when I really want two for each request. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: USB transfer not working after 6 incomplete IN transactions
    ... But when I submit a write request from my application, ... If the OUT transactions are completed successfully, ... Now I saw the error code in the URB, ... But when I submit the URB to reset the pipe, I get the USBD error code ...
    (microsoft.public.development.device.drivers)