Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
myri10ge.c File Reference
#include <linux/tcp.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/string.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/etherdevice.h>
#include <linux/if_ether.h>
#include <linux/if_vlan.h>
#include <linux/inet_lro.h>
#include <linux/dca.h>
#include <linux/ip.h>
#include <linux/inet.h>
#include <linux/in.h>
#include <linux/ethtool.h>
#include <linux/firmware.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/vmalloc.h>
#include <linux/crc32.h>
#include <linux/moduleparam.h>
#include <linux/io.h>
#include <linux/log2.h>
#include <linux/slab.h>
#include <linux/prefetch.h>
#include <net/checksum.h>
#include <net/ip.h>
#include <net/tcp.h>
#include <asm/byteorder.h>
#include <asm/io.h>
#include <asm/processor.h>
#include "myri10ge_mcp.h"
#include "myri10ge_mcp_gen_header.h"

Go to the source code of this file.

Data Structures

struct  myri10ge_rx_buffer_state
 
struct  myri10ge_tx_buffer_state
 
struct  myri10ge_cmd
 
struct  myri10ge_rx_buf
 
struct  myri10ge_tx_buf
 
struct  myri10ge_rx_done
 
struct  myri10ge_slice_netstats
 
struct  myri10ge_slice_state
 
struct  myri10ge_priv
 

Macros

#define pr_fmt(fmt)   KBUILD_MODNAME ": " fmt
 
#define MYRI10GE_VERSION_STR   "1.5.3-1.534"
 
#define MYRI10GE_MAX_ETHER_MTU   9014
 
#define MYRI10GE_ETH_STOPPED   0
 
#define MYRI10GE_ETH_STOPPING   1
 
#define MYRI10GE_ETH_STARTING   2
 
#define MYRI10GE_ETH_RUNNING   3
 
#define MYRI10GE_ETH_OPEN_FAILED   4
 
#define MYRI10GE_EEPROM_STRINGS_SIZE   256
 
#define MYRI10GE_MAX_SEND_DESC_TSO   ((65536 / 2048) * 2)
 
#define MYRI10GE_MAX_LRO_DESCRIPTORS   8
 
#define MYRI10GE_LRO_MAX_PKTS   64
 
#define MYRI10GE_NO_CONFIRM_DATA   htonl(0xffffffff)
 
#define MYRI10GE_NO_RESPONSE_RESULT   0xffffffff
 
#define MYRI10GE_ALLOC_ORDER   0
 
#define MYRI10GE_ALLOC_SIZE   ((1 << MYRI10GE_ALLOC_ORDER) * PAGE_SIZE)
 
#define MYRI10GE_MAX_FRAGS_PER_FRAME   (MYRI10GE_MAX_ETHER_MTU/MYRI10GE_ALLOC_SIZE + 1)
 
#define MYRI10GE_MAX_SLICES   32
 
#define MYRI10GE_MAX_BOARDS   8
 
#define MYRI10GE_MSG_DEFAULT   NETIF_MSG_LINK
 
#define MYRI10GE_FW_OFFSET   1024*1024
 
#define MYRI10GE_HIGHPART_TO_U32(X)   (sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0)
 
#define MYRI10GE_LOWPART_TO_U32(X)   ((u32)(X))
 
#define myri10ge_pio_copy(to, from, size)   __iowrite64_copy(to,from,size/8)
 
#define MYRI10GE_HLEN
 
#define MYRI10GE_NET_STATS_LEN   21
 
#define MYRI10GE_MAIN_STATS_LEN   ARRAY_SIZE(myri10ge_gstrings_main_stats)
 
#define MYRI10GE_SLICE_STATS_LEN   ARRAY_SIZE(myri10ge_gstrings_slice_stats)
 
#define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E   0x0008
 
#define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E_9   0x0009
 

Functions

 MODULE_DESCRIPTION ("Myricom 10G driver (10GbE)")
 
 MODULE_AUTHOR ("Maintainer: [email protected]")
 
 MODULE_VERSION (MYRI10GE_VERSION_STR)
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_FIRMWARE ("myri10ge_ethp_z8e.dat")
 
 MODULE_FIRMWARE ("myri10ge_eth_z8e.dat")
 
 MODULE_FIRMWARE ("myri10ge_rss_ethp_z8e.dat")
 
 MODULE_FIRMWARE ("myri10ge_rss_eth_z8e.dat")
 
 module_param (myri10ge_fw_name, charp, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (myri10ge_fw_name,"Firmware image name")
 
 module_param_array_named (myri10ge_fw_names, myri10ge_fw_names, charp, NULL, 0444)
 
 MODULE_PARM_DESC (myri10ge_fw_name,"Firmware image names per board")
 
 module_param (myri10ge_ecrc_enable, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_ecrc_enable,"Enable Extended CRC on PCI-E")
 
 module_param (myri10ge_small_bytes, int, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (myri10ge_small_bytes,"Threshold of small packets")
 
 module_param (myri10ge_msi, int, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (myri10ge_msi,"Enable Message Signalled Interrupts")
 
 module_param (myri10ge_intr_coal_delay, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_intr_coal_delay,"Interrupt coalescing delay")
 
 module_param (myri10ge_flow_control, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_flow_control,"Pause parameter")
 
 module_param (myri10ge_deassert_wait, int, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (myri10ge_deassert_wait,"Wait when deasserting legacy interrupts")
 
 module_param (myri10ge_force_firmware, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_force_firmware,"Force firmware to assume aligned completions")
 
 module_param (myri10ge_initial_mtu, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_initial_mtu,"Initial MTU")
 
 module_param (myri10ge_napi_weight, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_napi_weight,"Set NAPI weight")
 
 module_param (myri10ge_watchdog_timeout, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_watchdog_timeout,"Set watchdog timeout")
 
 module_param (myri10ge_max_irq_loops, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_max_irq_loops,"Set stuck legacy IRQ detection threshold")
 
 module_param (myri10ge_debug, int, 0)
 
 MODULE_PARM_DESC (myri10ge_debug,"Debug level (0=none,...,16=all)")
 
 module_param (myri10ge_lro_max_pkts, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_lro_max_pkts,"Number of LRO packets to be aggregated")
 
 module_param (myri10ge_fill_thresh, int, S_IRUGO|S_IWUSR)
 
 MODULE_PARM_DESC (myri10ge_fill_thresh,"Number of empty rx slots allowed")
 
 module_param (myri10ge_max_slices, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_max_slices,"Max tx/rx queues")
 
 module_param (myri10ge_rss_hash, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_rss_hash,"Type of RSS hashing to do")
 
 module_param (myri10ge_dca, int, S_IRUGO)
 
 MODULE_PARM_DESC (myri10ge_dca,"Enable DCA if possible")
 
 MODULE_DEVICE_TABLE (pci, myri10ge_pci_tbl)
 
 module_init (myri10ge_init_module)
 
 module_exit (myri10ge_cleanup_module)
 

Macro Definition Documentation

#define MYRI10GE_ALLOC_ORDER   0

Definition at line 105 of file myri10ge.c.

#define MYRI10GE_ALLOC_SIZE   ((1 << MYRI10GE_ALLOC_ORDER) * PAGE_SIZE)

Definition at line 106 of file myri10ge.c.

#define MYRI10GE_EEPROM_STRINGS_SIZE   256

Definition at line 97 of file myri10ge.c.

#define MYRI10GE_ETH_OPEN_FAILED   4

Definition at line 95 of file myri10ge.c.

#define MYRI10GE_ETH_RUNNING   3

Definition at line 94 of file myri10ge.c.

#define MYRI10GE_ETH_STARTING   2

Definition at line 93 of file myri10ge.c.

#define MYRI10GE_ETH_STOPPED   0

Definition at line 91 of file myri10ge.c.

#define MYRI10GE_ETH_STOPPING   1

Definition at line 92 of file myri10ge.c.

#define MYRI10GE_FW_OFFSET   1024*1024

Definition at line 364 of file myri10ge.c.

#define MYRI10GE_HIGHPART_TO_U32 (   X)    (sizeof (X) == 8) ? ((u32)((u64)(X) >> 32)) : (0)

Definition at line 365 of file myri10ge.c.

#define MYRI10GE_HLEN
Value:
64 /* The number of bytes to copy from a
* page into an skb */

Definition at line 1307 of file myri10ge.c.

#define MYRI10GE_LOWPART_TO_U32 (   X)    ((u32)(X))

Definition at line 367 of file myri10ge.c.

#define MYRI10GE_LRO_MAX_PKTS   64

Definition at line 100 of file myri10ge.c.

#define MYRI10GE_MAIN_STATS_LEN   ARRAY_SIZE(myri10ge_gstrings_main_stats)

Definition at line 1785 of file myri10ge.c.

#define MYRI10GE_MAX_BOARDS   8

Definition at line 281 of file myri10ge.c.

#define MYRI10GE_MAX_ETHER_MTU   9014

Definition at line 89 of file myri10ge.c.

#define MYRI10GE_MAX_FRAGS_PER_FRAME   (MYRI10GE_MAX_ETHER_MTU/MYRI10GE_ALLOC_SIZE + 1)

Definition at line 107 of file myri10ge.c.

#define MYRI10GE_MAX_LRO_DESCRIPTORS   8

Definition at line 99 of file myri10ge.c.

#define MYRI10GE_MAX_SEND_DESC_TSO   ((65536 / 2048) * 2)

Definition at line 98 of file myri10ge.c.

#define MYRI10GE_MAX_SLICES   32

Definition at line 109 of file myri10ge.c.

#define MYRI10GE_MSG_DEFAULT   NETIF_MSG_LINK

Definition at line 335 of file myri10ge.c.

#define MYRI10GE_NET_STATS_LEN   21

Definition at line 1784 of file myri10ge.c.

#define MYRI10GE_NO_CONFIRM_DATA   htonl(0xffffffff)

Definition at line 102 of file myri10ge.c.

#define MYRI10GE_NO_RESPONSE_RESULT   0xffffffff

Definition at line 103 of file myri10ge.c.

#define myri10ge_pio_copy (   to,
  from,
  size 
)    __iowrite64_copy(to,from,size/8)

Definition at line 369 of file myri10ge.c.

#define MYRI10GE_SLICE_STATS_LEN   ARRAY_SIZE(myri10ge_gstrings_slice_stats)

Definition at line 1786 of file myri10ge.c.

#define MYRI10GE_VERSION_STR   "1.5.3-1.534"

Definition at line 82 of file myri10ge.c.

#define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E   0x0008

Definition at line 4146 of file myri10ge.c.

#define PCI_DEVICE_ID_MYRICOM_MYRI10GE_Z8E_9   0x0009

Definition at line 4147 of file myri10ge.c.

#define pr_fmt (   fmt)    KBUILD_MODNAME ": " fmt

Definition at line 41 of file myri10ge.c.

Function Documentation

MODULE_AUTHOR ( "Maintainer: [email protected] )
MODULE_DESCRIPTION ( "Myricom 10G driver (10GbE)"  )
MODULE_DEVICE_TABLE ( pci  ,
myri10ge_pci_tbl   
)
module_exit ( myri10ge_cleanup_module  )
MODULE_FIRMWARE ( "myri10ge_ethp_z8e.dat"  )
MODULE_FIRMWARE ( "myri10ge_eth_z8e.dat"  )
MODULE_FIRMWARE ( "myri10ge_rss_ethp_z8e.dat"  )
MODULE_FIRMWARE ( "myri10ge_rss_eth_z8e.dat"  )
module_init ( myri10ge_init_module  )
MODULE_LICENSE ( "Dual BSD/GPL"  )
module_param ( myri10ge_fw_name  ,
charp  ,
S_IRUGO S_IWUSR 
)
module_param ( myri10ge_ecrc_enable  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_small_bytes  ,
int  ,
S_IRUGO S_IWUSR 
)
module_param ( myri10ge_msi  ,
int  ,
S_IRUGO S_IWUSR 
)
module_param ( myri10ge_intr_coal_delay  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_flow_control  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_deassert_wait  ,
int  ,
S_IRUGO S_IWUSR 
)
module_param ( myri10ge_force_firmware  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_initial_mtu  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_napi_weight  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_watchdog_timeout  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_max_irq_loops  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_debug  ,
int  ,
 
)
module_param ( myri10ge_lro_max_pkts  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_fill_thresh  ,
int  ,
S_IRUGO S_IWUSR 
)
module_param ( myri10ge_max_slices  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_rss_hash  ,
int  ,
S_IRUGO   
)
module_param ( myri10ge_dca  ,
int  ,
S_IRUGO   
)
module_param_array_named ( myri10ge_fw_names  ,
myri10ge_fw_names  ,
charp  ,
NULL  ,
0444   
)
MODULE_PARM_DESC ( myri10ge_fw_name  ,
"Firmware image name  
)
MODULE_PARM_DESC ( myri10ge_fw_name  ,
"Firmware image names per board  
)
MODULE_PARM_DESC ( myri10ge_ecrc_enable  ,
"Enable Extended CRC on PCI-E  
)
MODULE_PARM_DESC ( myri10ge_small_bytes  ,
"Threshold of small packets  
)
MODULE_PARM_DESC ( myri10ge_msi  ,
"Enable Message Signalled Interrupts"   
)
MODULE_PARM_DESC ( myri10ge_intr_coal_delay  ,
"Interrupt coalescing delay  
)
MODULE_PARM_DESC ( myri10ge_flow_control  ,
"Pause parameter"   
)
MODULE_PARM_DESC ( myri10ge_deassert_wait  ,
"Wait when deasserting legacy interrupts"   
)
MODULE_PARM_DESC ( myri10ge_force_firmware  ,
"Force firmware to assume aligned completions"   
)
MODULE_PARM_DESC ( myri10ge_initial_mtu  ,
"Initial MTU"   
)
MODULE_PARM_DESC ( myri10ge_napi_weight  ,
"Set NAPI weight  
)
MODULE_PARM_DESC ( myri10ge_watchdog_timeout  ,
"Set watchdog timeout  
)
MODULE_PARM_DESC ( myri10ge_max_irq_loops  ,
"Set stuck legacy IRQ detection threshold  
)
MODULE_PARM_DESC ( myri10ge_debug  ,
"Debug level (0=none,...,16=all)"   
)
MODULE_PARM_DESC ( myri10ge_lro_max_pkts  ,
"Number of LRO packets to be aggregated"   
)
MODULE_PARM_DESC ( myri10ge_fill_thresh  ,
"Number of empty rx slots allowed"   
)
MODULE_PARM_DESC ( myri10ge_max_slices  ,
"Max tx/rx queues"   
)
MODULE_PARM_DESC ( myri10ge_rss_hash  ,
"Type of RSS hashing to do"   
)
MODULE_PARM_DESC ( myri10ge_dca  ,
"Enable DCA if possible"   
)
MODULE_VERSION ( MYRI10GE_VERSION_STR  )