.\" This manpage has been automatically generated by docbook2man .\" from a DocBook document. This tool can be found at: .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . .TH "EL_START_XMIT" "9" "09 October 2005" "" "" .SH NAME el_start_xmit \- .SH SYNOPSIS "SYNOPSIS" .sp \fB .sp int el_start_xmit (struct sk_buff * \fIskb\fB, struct net_device * \fIdev\fB); \fR .SH "ARGUMENTS" .TP \fB\fIskb\fB\fR The packet that is queued to be sent .TP \fB\fIdev\fB\fR The 3c501 card we want to throw it down .SH "DESCRIPTION" .PP Attempt to send a packet to a 3c501 card. There are some interesting catches here because the 3c501 is an extremely old and therefore stupid piece of technology. .PP If we are handling an interrupt on the other CPU we cannot load a packet as we may still be attempting to retrieve the last RX packet buffer. .PP When a transmit times out we dump the card into control mode and just start again. It happens enough that it isnt worth logging. .PP We avoid holding the spin locks when doing the packet load to the board. The device is very slow, and its DMA mode is even slower. If we held the lock while loading 1500 bytes onto the controller we would drop a lot of serial port characters. This requires we do extra locking, but we have no real choice.