On 27/01/09 21:01, Sarah Sharp wrote:
I'm sorry to hear that. Could you send a summary of the work you've done, and
any changes you had to make to the USB MSD driver, the SCSI core, or the USB
core? I think you can't post the code because the UASP spec isn't ratified and
public yet, but I am interested in the changes.
OK.
All of the changes I've made are confined to the MSD driver.
The main change I've made is in extending the event model. The current
thread function has a very simple event signalling model: when signalled
through a semaphore, the action taken depends on whether us->srb is NULL
or not - NULL signals exit, non-NULL signals process the SCSI command.
I added a new thread entry function with the driver selecting which
function to use based on what kind of device we were talking to (so
existing MSD functionality was unchanged).
This function processed an event list. There are 4 types of events to
process: new command, packet from device on status pipe, shutdown and
abort task.
Events on the event list may also have a parameter. F'r'instance, the
new command event had information about the command to be executed and
the receive packet event had a reference to the command context.
New command:
Command is sent and a "command context" is added to the command context list
Process packet:
The thread would have the packet received from the device and the
command context (this would have been determined in the completion
function). This would provide information as to what action was required
next: send/receive bulk data or return status through scsi_done().
After processing events, the thread would issue an asynchronous read on
the status pipe if there were commands in progress and there wasn't a
status read in progress.
(Command and bulk data transactions were done synchronously for ease of
implementation)
I think that's the main points.
--
Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html