Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
efx_tx_queue Struct Reference

#include <net_driver.h>

Data Fields

struct efx_nic *efx ____cacheline_aligned_in_smp
 
unsigned queue
 
struct efx_channelchannel
 
struct netdev_queuecore_txq
 
struct efx_tx_bufferbuffer
 
struct efx_buffertsoh_page
 
struct efx_special_buffer txd
 
unsigned int ptr_mask
 
bool initialised
 
unsigned int read_count ____cacheline_aligned_in_smp
 
unsigned int old_write_count
 
unsigned int insert_count ____cacheline_aligned_in_smp
 
unsigned int write_count
 
unsigned int old_read_count
 
unsigned int tso_bursts
 
unsigned int tso_long_headers
 
unsigned int tso_packets
 
unsigned int pushes
 
unsigned int empty_read_count ____cacheline_aligned_in_smp
 

Detailed Description

struct efx_tx_queue - An Efx TX queue

This is a ring buffer of TX fragments. Since the TX completion path always executes on the same CPU and the xmit path can operate on different CPUs, performance is increased by ensuring that the completion path and the xmit path operate on different cache lines. This is particularly important if the xmit path is always executing on one CPU which is different from the completion path. There is also a cache line for members which are read but not written on the fast path.

: The associated Efx NIC : DMA queue number : The associated channel : The networking core TX queue structure : The software buffer ring : Array of pages of TSO header buffers : The hardware descriptor ring : The size of the ring minus 1. : Has hardware queue been initialised? : Current read pointer. This is the number of buffers that have been removed from both rings. : The value of when last checked. This is here for performance reasons. The xmit path will only get the up-to-date value of if this variable indicates that the queue is empty. This is to avoid cache-line ping-pong between the xmit path and the completion path. : Current insert pointer This is the number of buffers that have been added to the software ring. : Current write pointer This is the number of buffers that have been added to the hardware ring. : The value of read_count when last checked. This is here for performance reasons. The xmit path will only get the up-to-date value of read_count if this variable indicates that the queue is full. This is to avoid cache-line ping-pong between the xmit path and the completion path. : Number of times TSO xmit invoked by kernel : Number of packets with headers too long for standard blocks : Number of packets via the TSO xmit path : Number of times the TX push feature has been used : If the completion path has seen the queue as empty and the transmission path has not yet checked this, the value of bitwise-added to EFX_EMPTY_COUNT_VALID; otherwise 0.

Definition at line 175 of file net_driver.h.

Field Documentation

struct efx_nic* efx ____cacheline_aligned_in_smp

Definition at line 177 of file net_driver.h.

unsigned int read_count ____cacheline_aligned_in_smp

Definition at line 188 of file net_driver.h.

unsigned int insert_count ____cacheline_aligned_in_smp

Definition at line 192 of file net_driver.h.

unsigned int empty_read_count ____cacheline_aligned_in_smp

Definition at line 201 of file net_driver.h.

Definition at line 181 of file net_driver.h.

Definition at line 179 of file net_driver.h.

struct netdev_queue* core_txq

Definition at line 180 of file net_driver.h.

bool initialised

Definition at line 185 of file net_driver.h.

unsigned int old_read_count

Definition at line 194 of file net_driver.h.

unsigned int old_write_count

Definition at line 189 of file net_driver.h.

unsigned int ptr_mask

Definition at line 184 of file net_driver.h.

unsigned int pushes

Definition at line 198 of file net_driver.h.

unsigned queue

Definition at line 178 of file net_driver.h.

unsigned int tso_bursts

Definition at line 195 of file net_driver.h.

unsigned int tso_long_headers

Definition at line 196 of file net_driver.h.

unsigned int tso_packets

Definition at line 197 of file net_driver.h.

struct efx_buffer* tsoh_page

Definition at line 182 of file net_driver.h.

Definition at line 183 of file net_driver.h.

unsigned int write_count

Definition at line 193 of file net_driver.h.


The documentation for this struct was generated from the following file: