Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
rx.c File Reference
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/slab.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/prefetch.h>
#include <linux/moduleparam.h>
#include <net/ip.h>
#include <net/checksum.h>
#include "net_driver.h"
#include "efx.h"
#include "nic.h"
#include "selftest.h"
#include "workarounds.h"

Go to the source code of this file.

Macros

#define EFX_RX_BATCH   8
 
#define EFX_RX_HALF_PAGE   ((PAGE_SIZE >> 1) - sizeof(struct efx_rx_page_state))
 
#define EFX_SKB_HEADERS   64u
 
#define RX_ALLOC_LEVEL_GRO   0x2000
 
#define RX_ALLOC_LEVEL_MAX   0x3000
 
#define RX_ALLOC_FACTOR_GRO   1
 
#define RX_ALLOC_FACTOR_SKB   (-2)
 
#define EFX_RXD_HEAD_ROOM   2
 

Functions

void efx_fast_push_rx_descriptors (struct efx_rx_queue *rx_queue)
 
void efx_rx_slow_fill (unsigned long context)
 
void efx_rx_packet (struct efx_rx_queue *rx_queue, unsigned int index, unsigned int len, u16 flags)
 
void __efx_rx_packet (struct efx_channel *channel, struct efx_rx_buffer *rx_buf)
 
void efx_rx_strategy (struct efx_channel *channel)
 
int efx_probe_rx_queue (struct efx_rx_queue *rx_queue)
 
void efx_init_rx_queue (struct efx_rx_queue *rx_queue)
 
void efx_fini_rx_queue (struct efx_rx_queue *rx_queue)
 
void efx_remove_rx_queue (struct efx_rx_queue *rx_queue)
 
 module_param (rx_alloc_method, int, 0644)
 
 MODULE_PARM_DESC (rx_alloc_method,"Allocation method used for RX buffers")
 
 module_param (rx_refill_threshold, uint, 0444)
 
 MODULE_PARM_DESC (rx_refill_threshold,"RX descriptor ring refill threshold (%)")
 

Macro Definition Documentation

#define EFX_RX_BATCH   8

Definition at line 28 of file rx.c.

#define EFX_RX_HALF_PAGE   ((PAGE_SIZE >> 1) - sizeof(struct efx_rx_page_state))

Definition at line 31 of file rx.c.

#define EFX_RXD_HEAD_ROOM   2

Definition at line 87 of file rx.c.

#define EFX_SKB_HEADERS   64u

Definition at line 34 of file rx.c.

#define RX_ALLOC_FACTOR_GRO   1

Definition at line 73 of file rx.c.

#define RX_ALLOC_FACTOR_SKB   (-2)

Definition at line 74 of file rx.c.

#define RX_ALLOC_LEVEL_GRO   0x2000

Definition at line 71 of file rx.c.

#define RX_ALLOC_LEVEL_MAX   0x3000

Definition at line 72 of file rx.c.

Function Documentation

void __efx_rx_packet ( struct efx_channel channel,
struct efx_rx_buffer rx_buf 
)

Definition at line 588 of file rx.c.

void efx_fast_push_rx_descriptors ( struct efx_rx_queue rx_queue)

efx_fast_push_rx_descriptors - push new RX descriptors quickly : RX descriptor queue

This will aim to fill the RX descriptor queue up to ->. If there is insufficient atomic memory to do so, a slow fill will be scheduled.

The caller must provide serialisation (none is used here). In practise, this means this function must run from the NAPI handler, or be called when NAPI is disabled.

Definition at line 348 of file rx.c.

void efx_fini_rx_queue ( struct efx_rx_queue rx_queue)

Definition at line 721 of file rx.c.

void efx_init_rx_queue ( struct efx_rx_queue rx_queue)

Definition at line 688 of file rx.c.

int efx_probe_rx_queue ( struct efx_rx_queue rx_queue)

Definition at line 658 of file rx.c.

void efx_remove_rx_queue ( struct efx_rx_queue rx_queue)

Definition at line 744 of file rx.c.

void efx_rx_packet ( struct efx_rx_queue rx_queue,
unsigned int  index,
unsigned int  len,
u16  flags 
)

Definition at line 503 of file rx.c.

void efx_rx_slow_fill ( unsigned long  context)

Definition at line 399 of file rx.c.

void efx_rx_strategy ( struct efx_channel channel)

Definition at line 630 of file rx.c.

module_param ( rx_alloc_method  ,
int  ,
0644   
)
module_param ( rx_refill_threshold  ,
uint  ,
0444   
)
MODULE_PARM_DESC ( rx_alloc_method  ,
"Allocation method used for RX buffers"   
)
MODULE_PARM_DESC ( rx_refill_threshold  ,
"RX descriptor ring refill threshold (%)"   
)