[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.1.10.0904211131340.21796@qirst.com>
Date: Tue, 21 Apr 2009 11:36:27 -0400 (EDT)
From: Christoph Lameter <cl@...ux.com>
To: Johann Baudy <johann.baudy@...-log.net>
cc: netdev@...r.kernel.org
Subject: Re: [PATCH] TX_RING and packet mmap
On Thu, 2 Apr 2009, Johann Baudy wrote:
> +++ Transmission process
> +Those defines are also used for transmission:
> +
> + #define TP_STATUS_KERNEL 0 // Frame is available
> + #define TP_STATUS_USER 1 // Frame will be sent on next send()
> + #define TP_STATUS_COPY 2 // Frame is currently in transmission
> +
> +First, the kernel initializes all frames to TP_STATUS_KERNEL. To send a packet,
> +the user fills a data buffer of an available frame, sets tp_len to current
> +data buffer size and sets its status field to TP_STATUS_USER. This can be done
> +on multiple frames. Once the user is ready to transmit, it calls send().
> +Then all buffers with status equal to TP_STATUS_USER are forwarded to the
> +network device. The kernel updates each status of sent frames with
> +TP_STATUS_COPY until the end of transfer.
> +At the end of each transfer, buffer status returns to TP_STATUS_KERNEL.
Could you clean then states up a bit to reflect what they actually mean?
TP_STATUS_AVAILABLE => Frame is available
TP_STATUS_SEND_REQUEST => Frame waits for sending
TP_STATUS_SENDING => Frame is being sent.
Also can you ensure that send() continues to send if I concurrently set
the status to TP_STATUS_SEND_REQUEST from another thread? How it is
serialized anyways? Status is an atomic value? Or do you rely on status
only being modified while send() is running?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists