TODOs ----- 1. Implement retries for RCODE_BUSY, RCODE_NO_ACK and RCODE_SEND_ERROR - I/O is handled asynchronously which presents some issues when error conditions occur. 2. Implement _robust_ console on top of this. The existing prototype console driver is not ready for the big leagues yet. 3. Expose means of controlling attach/detach of peers via sysfs. Include GUID-to-port matching/whitelist/blacklist. -- Issues with firewire stack -- 1. This driver uses the same unregistered vendor id that the firewire core does (0xd00d1e). Perhaps this could be exposed as a define in firewire-constants.h? 2. MAX_ASYNC_PAYLOAD needs to be publicly exposed by core/ohci - otherwise how will this driver know the max size of address window to open for one packet write? 3. Maybe device_max_receive() and link_speed_to_max_payload() should be taken up by the firewire core? 4. To avoid dropping rx data while still limiting the maximum buffering, the size of the AR context must be known. How to expose this to drivers? 5. Explore if bigger AR context will reduce RCODE_BUSY responses (or auto-grow to certain max size -- but this would require major surgery as the current AR is contiguously mapped) -- Issues with TTY core -- 1. Hack for alternate device name scheme - because udev no longer allows device renaming, devices should have their proper names on creation. This is an issue for creating the fwloop device with the fwtty devices because although duplicating roughly the same operations as tty_port_register_device() isn't difficult, access to the tty_class & tty_fops is restricted in scope. This is currently being worked around in create_loop_device() by extracting the tty_class ptr and tty_fops ptr from the previously created tty devices. Perhaps an add'l api can be added -- eg., tty_{port_}register_named_device().