int mc32_send_packet (struct sk_buff * skb, struct net_device * dev);
Transmit a buffer. This normally means throwing the buffer onto the transmit queue as the queue is quite large. If the queue is full then we set tx_busy and return. Once the interrupt handler gets messages telling it to reclaim transmit queue entries, we will clear tx_busy and the kernel will start calling this again.
We do not disable interrupts or acquire any locks; this can run concurrently with mc32_tx_ring, and the function itself is serialised at a higher layer. However, similarly for the card itself, we must ensure that we update tx_ring_head only after we've established a valid packet on the tx ring (and before we let the card ``see'' it, to prevent it racing with the irq handler).