.\" 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.