Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
mv643xx_eth.c File Reference
#include <linux/init.h>
#include <linux/dma-mapping.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/etherdevice.h>
#include <linux/delay.h>
#include <linux/ethtool.h>
#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
#include <linux/phy.h>
#include <linux/mv643xx_eth.h>
#include <linux/io.h>
#include <linux/types.h>
#include <linux/inet_lro.h>
#include <linux/slab.h>
#include <linux/clk.h>

Go to the source code of this file.

Data Structures

struct  mv643xx_eth_shared_private
 
struct  mib_counters
 
struct  lro_counters
 
struct  rx_queue
 
struct  tx_queue
 
struct  mv643xx_eth_private
 
struct  mv643xx_eth_stats
 

Macros

#define pr_fmt(fmt)   KBUILD_MODNAME ": " fmt
 
#define PHY_ADDR   0x0000
 
#define SMI_REG   0x0004
 
#define SMI_BUSY   0x10000000
 
#define SMI_READ_VALID   0x08000000
 
#define SMI_OPCODE_READ   0x04000000
 
#define SMI_OPCODE_WRITE   0x00000000
 
#define ERR_INT_CAUSE   0x0080
 
#define ERR_INT_SMI_DONE   0x00000010
 
#define ERR_INT_MASK   0x0084
 
#define WINDOW_BASE(w)   (0x0200 + ((w) << 3))
 
#define WINDOW_SIZE(w)   (0x0204 + ((w) << 3))
 
#define WINDOW_REMAP_HIGH(w)   (0x0280 + ((w) << 2))
 
#define WINDOW_BAR_ENABLE   0x0290
 
#define WINDOW_PROTECT(w)   (0x0294 + ((w) << 4))
 
#define PORT_CONFIG   0x0000
 
#define UNICAST_PROMISCUOUS_MODE   0x00000001
 
#define PORT_CONFIG_EXT   0x0004
 
#define MAC_ADDR_LOW   0x0014
 
#define MAC_ADDR_HIGH   0x0018
 
#define SDMA_CONFIG   0x001c
 
#define TX_BURST_SIZE_16_64BIT   0x01000000
 
#define TX_BURST_SIZE_4_64BIT   0x00800000
 
#define BLM_TX_NO_SWAP   0x00000020
 
#define BLM_RX_NO_SWAP   0x00000010
 
#define RX_BURST_SIZE_16_64BIT   0x00000008
 
#define RX_BURST_SIZE_4_64BIT   0x00000004
 
#define PORT_SERIAL_CONTROL   0x003c
 
#define SET_MII_SPEED_TO_100   0x01000000
 
#define SET_GMII_SPEED_TO_1000   0x00800000
 
#define SET_FULL_DUPLEX_MODE   0x00200000
 
#define MAX_RX_PACKET_9700BYTE   0x000a0000
 
#define DISABLE_AUTO_NEG_SPEED_GMII   0x00002000
 
#define DO_NOT_FORCE_LINK_FAIL   0x00000400
 
#define SERIAL_PORT_CONTROL_RESERVED   0x00000200
 
#define DISABLE_AUTO_NEG_FOR_FLOW_CTRL   0x00000008
 
#define DISABLE_AUTO_NEG_FOR_DUPLEX   0x00000004
 
#define FORCE_LINK_PASS   0x00000002
 
#define SERIAL_PORT_ENABLE   0x00000001
 
#define PORT_STATUS   0x0044
 
#define TX_FIFO_EMPTY   0x00000400
 
#define TX_IN_PROGRESS   0x00000080
 
#define PORT_SPEED_MASK   0x00000030
 
#define PORT_SPEED_1000   0x00000010
 
#define PORT_SPEED_100   0x00000020
 
#define PORT_SPEED_10   0x00000000
 
#define FLOW_CONTROL_ENABLED   0x00000008
 
#define FULL_DUPLEX   0x00000004
 
#define LINK_UP   0x00000002
 
#define TXQ_COMMAND   0x0048
 
#define TXQ_FIX_PRIO_CONF   0x004c
 
#define TX_BW_RATE   0x0050
 
#define TX_BW_MTU   0x0058
 
#define TX_BW_BURST   0x005c
 
#define INT_CAUSE   0x0060
 
#define INT_TX_END   0x07f80000
 
#define INT_TX_END_0   0x00080000
 
#define INT_RX   0x000003fc
 
#define INT_RX_0   0x00000004
 
#define INT_EXT   0x00000002
 
#define INT_CAUSE_EXT   0x0064
 
#define INT_EXT_LINK_PHY   0x00110000
 
#define INT_EXT_TX   0x000000ff
 
#define INT_MASK   0x0068
 
#define INT_MASK_EXT   0x006c
 
#define TX_FIFO_URGENT_THRESHOLD   0x0074
 
#define RX_DISCARD_FRAME_CNT   0x0084
 
#define RX_OVERRUN_FRAME_CNT   0x0088
 
#define TXQ_FIX_PRIO_CONF_MOVED   0x00dc
 
#define TX_BW_RATE_MOVED   0x00e0
 
#define TX_BW_MTU_MOVED   0x00e8
 
#define TX_BW_BURST_MOVED   0x00ec
 
#define RXQ_CURRENT_DESC_PTR(q)   (0x020c + ((q) << 4))
 
#define RXQ_COMMAND   0x0280
 
#define TXQ_CURRENT_DESC_PTR(q)   (0x02c0 + ((q) << 2))
 
#define TXQ_BW_TOKENS(q)   (0x0300 + ((q) << 4))
 
#define TXQ_BW_CONF(q)   (0x0304 + ((q) << 4))
 
#define TXQ_BW_WRR_CONF(q)   (0x0308 + ((q) << 4))
 
#define MIB_COUNTERS(p)   (0x1000 + ((p) << 7))
 
#define SPECIAL_MCAST_TABLE(p)   (0x1400 + ((p) << 10))
 
#define OTHER_MCAST_TABLE(p)   (0x1500 + ((p) << 10))
 
#define UNICAST_TABLE(p)   (0x1600 + ((p) << 10))
 
#define DEFAULT_RX_QUEUE_SIZE   128
 
#define DEFAULT_TX_QUEUE_SIZE   256
 
#define SKB_DMA_REALIGN   ((PAGE_SIZE - NET_SKB_PAD) % SMP_CACHE_BYTES)
 
#define BUFFER_OWNED_BY_DMA   0x80000000
 
#define ERROR_SUMMARY   0x00000001
 
#define LAYER_4_CHECKSUM_OK   0x40000000
 
#define RX_ENABLE_INTERRUPT   0x20000000
 
#define RX_FIRST_DESC   0x08000000
 
#define RX_LAST_DESC   0x04000000
 
#define RX_IP_HDR_OK   0x02000000
 
#define RX_PKT_IS_IPV4   0x01000000
 
#define RX_PKT_IS_ETHERNETV2   0x00800000
 
#define RX_PKT_LAYER4_TYPE_MASK   0x00600000
 
#define RX_PKT_LAYER4_TYPE_TCP_IPV4   0x00000000
 
#define RX_PKT_IS_VLAN_TAGGED   0x00080000
 
#define TX_ENABLE_INTERRUPT   0x00800000
 
#define GEN_CRC   0x00400000
 
#define TX_FIRST_DESC   0x00200000
 
#define TX_LAST_DESC   0x00100000
 
#define ZERO_PADDING   0x00080000
 
#define GEN_IP_V4_CHECKSUM   0x00040000
 
#define GEN_TCP_UDP_CHECKSUM   0x00020000
 
#define UDP_FRAME   0x00010000
 
#define MAC_HDR_EXTRA_4_BYTES   0x00008000
 
#define MAC_HDR_EXTRA_8_BYTES   0x00000200
 
#define TX_IHL_SHIFT   11
 
#define TX_BW_CONTROL_ABSENT   0
 
#define TX_BW_CONTROL_OLD_LAYOUT   1
 
#define TX_BW_CONTROL_NEW_LAYOUT   2
 
#define SSTAT(m)
 
#define MIBSTAT(m)
 
#define LROSTAT(m)
 

Functions

 module_init (mv643xx_eth_init_module)
 
 module_exit (mv643xx_eth_cleanup_module)
 
 MODULE_AUTHOR ("Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, ""Manish Lachwani, Dale Farnsworth and Lennert Buytenhek")
 
 MODULE_DESCRIPTION ("Ethernet driver for Marvell MV643XX")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_ALIAS ("platform:"MV643XX_ETH_SHARED_NAME)
 

Macro Definition Documentation

#define BLM_RX_NO_SWAP   0x00000010

Definition at line 97 of file mv643xx_eth.c.

#define BLM_TX_NO_SWAP   0x00000020

Definition at line 96 of file mv643xx_eth.c.

#define BUFFER_OWNED_BY_DMA   0x80000000

Definition at line 227 of file mv643xx_eth.c.

#define DEFAULT_RX_QUEUE_SIZE   128

Definition at line 182 of file mv643xx_eth.c.

#define DEFAULT_TX_QUEUE_SIZE   256

Definition at line 183 of file mv643xx_eth.c.

#define DISABLE_AUTO_NEG_FOR_DUPLEX   0x00000004

Definition at line 109 of file mv643xx_eth.c.

#define DISABLE_AUTO_NEG_FOR_FLOW_CTRL   0x00000008

Definition at line 108 of file mv643xx_eth.c.

#define DISABLE_AUTO_NEG_SPEED_GMII   0x00002000

Definition at line 105 of file mv643xx_eth.c.

#define DO_NOT_FORCE_LINK_FAIL   0x00000400

Definition at line 106 of file mv643xx_eth.c.

#define ERR_INT_CAUSE   0x0080

Definition at line 75 of file mv643xx_eth.c.

#define ERR_INT_MASK   0x0084

Definition at line 77 of file mv643xx_eth.c.

#define ERR_INT_SMI_DONE   0x00000010

Definition at line 76 of file mv643xx_eth.c.

#define ERROR_SUMMARY   0x00000001

Definition at line 230 of file mv643xx_eth.c.

#define FLOW_CONTROL_ENABLED   0x00000008

Definition at line 119 of file mv643xx_eth.c.

#define FORCE_LINK_PASS   0x00000002

Definition at line 110 of file mv643xx_eth.c.

#define FULL_DUPLEX   0x00000004

Definition at line 120 of file mv643xx_eth.c.

#define GEN_CRC   0x00400000

Definition at line 246 of file mv643xx_eth.c.

#define GEN_IP_V4_CHECKSUM   0x00040000

Definition at line 250 of file mv643xx_eth.c.

#define GEN_TCP_UDP_CHECKSUM   0x00020000

Definition at line 251 of file mv643xx_eth.c.

#define INT_CAUSE   0x0060

Definition at line 127 of file mv643xx_eth.c.

#define INT_CAUSE_EXT   0x0064

Definition at line 133 of file mv643xx_eth.c.

#define INT_EXT   0x00000002

Definition at line 132 of file mv643xx_eth.c.

#define INT_EXT_LINK_PHY   0x00110000

Definition at line 134 of file mv643xx_eth.c.

#define INT_EXT_TX   0x000000ff

Definition at line 135 of file mv643xx_eth.c.

#define INT_MASK   0x0068

Definition at line 136 of file mv643xx_eth.c.

#define INT_MASK_EXT   0x006c

Definition at line 137 of file mv643xx_eth.c.

#define INT_RX   0x000003fc

Definition at line 130 of file mv643xx_eth.c.

#define INT_RX_0   0x00000004

Definition at line 131 of file mv643xx_eth.c.

#define INT_TX_END   0x07f80000

Definition at line 128 of file mv643xx_eth.c.

#define INT_TX_END_0   0x00080000

Definition at line 129 of file mv643xx_eth.c.

#define LAYER_4_CHECKSUM_OK   0x40000000

Definition at line 233 of file mv643xx_eth.c.

#define LINK_UP   0x00000002

Definition at line 121 of file mv643xx_eth.c.

#define LROSTAT (   m)
Value:

Definition at line 1383 of file mv643xx_eth.c.

#define MAC_ADDR_HIGH   0x0018

Definition at line 92 of file mv643xx_eth.c.

#define MAC_ADDR_LOW   0x0014

Definition at line 91 of file mv643xx_eth.c.

#define MAC_HDR_EXTRA_4_BYTES   0x00008000

Definition at line 253 of file mv643xx_eth.c.

#define MAC_HDR_EXTRA_8_BYTES   0x00000200

Definition at line 254 of file mv643xx_eth.c.

#define MAX_RX_PACKET_9700BYTE   0x000a0000

Definition at line 104 of file mv643xx_eth.c.

#define MIB_COUNTERS (   p)    (0x1000 + ((p) << 7))

Definition at line 155 of file mv643xx_eth.c.

#define MIBSTAT (   m)
Value:

Definition at line 1379 of file mv643xx_eth.c.

#define OTHER_MCAST_TABLE (   p)    (0x1500 + ((p) << 10))

Definition at line 157 of file mv643xx_eth.c.

#define PHY_ADDR   0x0000

Definition at line 69 of file mv643xx_eth.c.

#define PORT_CONFIG   0x0000

Definition at line 88 of file mv643xx_eth.c.

#define PORT_CONFIG_EXT   0x0004

Definition at line 90 of file mv643xx_eth.c.

#define PORT_SERIAL_CONTROL   0x003c

Definition at line 100 of file mv643xx_eth.c.

#define PORT_SPEED_10   0x00000000

Definition at line 118 of file mv643xx_eth.c.

#define PORT_SPEED_100   0x00000020

Definition at line 117 of file mv643xx_eth.c.

#define PORT_SPEED_1000   0x00000010

Definition at line 116 of file mv643xx_eth.c.

#define PORT_SPEED_MASK   0x00000030

Definition at line 115 of file mv643xx_eth.c.

#define PORT_STATUS   0x0044

Definition at line 112 of file mv643xx_eth.c.

#define pr_fmt (   fmt)    KBUILD_MODNAME ": " fmt

Definition at line 38 of file mv643xx_eth.c.

#define RX_BURST_SIZE_16_64BIT   0x00000008

Definition at line 98 of file mv643xx_eth.c.

#define RX_BURST_SIZE_4_64BIT   0x00000004

Definition at line 99 of file mv643xx_eth.c.

#define RX_DISCARD_FRAME_CNT   0x0084

Definition at line 139 of file mv643xx_eth.c.

#define RX_ENABLE_INTERRUPT   0x20000000

Definition at line 234 of file mv643xx_eth.c.

#define RX_FIRST_DESC   0x08000000

Definition at line 235 of file mv643xx_eth.c.

#define RX_IP_HDR_OK   0x02000000

Definition at line 237 of file mv643xx_eth.c.

#define RX_LAST_DESC   0x04000000

Definition at line 236 of file mv643xx_eth.c.

#define RX_OVERRUN_FRAME_CNT   0x0088

Definition at line 140 of file mv643xx_eth.c.

#define RX_PKT_IS_ETHERNETV2   0x00800000

Definition at line 239 of file mv643xx_eth.c.

#define RX_PKT_IS_IPV4   0x01000000

Definition at line 238 of file mv643xx_eth.c.

#define RX_PKT_IS_VLAN_TAGGED   0x00080000

Definition at line 242 of file mv643xx_eth.c.

#define RX_PKT_LAYER4_TYPE_MASK   0x00600000

Definition at line 240 of file mv643xx_eth.c.

#define RX_PKT_LAYER4_TYPE_TCP_IPV4   0x00000000

Definition at line 241 of file mv643xx_eth.c.

#define RXQ_COMMAND   0x0280

Definition at line 146 of file mv643xx_eth.c.

#define RXQ_CURRENT_DESC_PTR (   q)    (0x020c + ((q) << 4))

Definition at line 145 of file mv643xx_eth.c.

#define SDMA_CONFIG   0x001c

Definition at line 93 of file mv643xx_eth.c.

#define SERIAL_PORT_CONTROL_RESERVED   0x00000200

Definition at line 107 of file mv643xx_eth.c.

#define SERIAL_PORT_ENABLE   0x00000001

Definition at line 111 of file mv643xx_eth.c.

#define SET_FULL_DUPLEX_MODE   0x00200000

Definition at line 103 of file mv643xx_eth.c.

#define SET_GMII_SPEED_TO_1000   0x00800000

Definition at line 102 of file mv643xx_eth.c.

#define SET_MII_SPEED_TO_100   0x01000000

Definition at line 101 of file mv643xx_eth.c.

#define SKB_DMA_REALIGN   ((PAGE_SIZE - NET_SKB_PAD) % SMP_CACHE_BYTES)

Definition at line 184 of file mv643xx_eth.c.

#define SMI_BUSY   0x10000000

Definition at line 71 of file mv643xx_eth.c.

#define SMI_OPCODE_READ   0x04000000

Definition at line 73 of file mv643xx_eth.c.

#define SMI_OPCODE_WRITE   0x00000000

Definition at line 74 of file mv643xx_eth.c.

#define SMI_READ_VALID   0x08000000

Definition at line 72 of file mv643xx_eth.c.

#define SMI_REG   0x0004

Definition at line 70 of file mv643xx_eth.c.

#define SPECIAL_MCAST_TABLE (   p)    (0x1400 + ((p) << 10))

Definition at line 156 of file mv643xx_eth.c.

#define SSTAT (   m)
Value:
offsetof(struct net_device, stats.m), -1 }

Definition at line 1375 of file mv643xx_eth.c.

#define TX_BURST_SIZE_16_64BIT   0x01000000

Definition at line 94 of file mv643xx_eth.c.

#define TX_BURST_SIZE_4_64BIT   0x00800000

Definition at line 95 of file mv643xx_eth.c.

#define TX_BW_BURST   0x005c

Definition at line 126 of file mv643xx_eth.c.

#define TX_BW_BURST_MOVED   0x00ec

Definition at line 144 of file mv643xx_eth.c.

#define TX_BW_CONTROL_ABSENT   0

Definition at line 299 of file mv643xx_eth.c.

#define TX_BW_CONTROL_NEW_LAYOUT   2

Definition at line 301 of file mv643xx_eth.c.

#define TX_BW_CONTROL_OLD_LAYOUT   1

Definition at line 300 of file mv643xx_eth.c.

#define TX_BW_MTU   0x0058

Definition at line 125 of file mv643xx_eth.c.

#define TX_BW_MTU_MOVED   0x00e8

Definition at line 143 of file mv643xx_eth.c.

#define TX_BW_RATE   0x0050

Definition at line 124 of file mv643xx_eth.c.

#define TX_BW_RATE_MOVED   0x00e0

Definition at line 142 of file mv643xx_eth.c.

#define TX_ENABLE_INTERRUPT   0x00800000

Definition at line 245 of file mv643xx_eth.c.

#define TX_FIFO_EMPTY   0x00000400

Definition at line 113 of file mv643xx_eth.c.

#define TX_FIFO_URGENT_THRESHOLD   0x0074

Definition at line 138 of file mv643xx_eth.c.

#define TX_FIRST_DESC   0x00200000

Definition at line 247 of file mv643xx_eth.c.

#define TX_IHL_SHIFT   11

Definition at line 256 of file mv643xx_eth.c.

#define TX_IN_PROGRESS   0x00000080

Definition at line 114 of file mv643xx_eth.c.

#define TX_LAST_DESC   0x00100000

Definition at line 248 of file mv643xx_eth.c.

#define TXQ_BW_CONF (   q)    (0x0304 + ((q) << 4))

Definition at line 149 of file mv643xx_eth.c.

#define TXQ_BW_TOKENS (   q)    (0x0300 + ((q) << 4))

Definition at line 148 of file mv643xx_eth.c.

#define TXQ_BW_WRR_CONF (   q)    (0x0308 + ((q) << 4))

Definition at line 150 of file mv643xx_eth.c.

#define TXQ_COMMAND   0x0048

Definition at line 122 of file mv643xx_eth.c.

#define TXQ_CURRENT_DESC_PTR (   q)    (0x02c0 + ((q) << 2))

Definition at line 147 of file mv643xx_eth.c.

#define TXQ_FIX_PRIO_CONF   0x004c

Definition at line 123 of file mv643xx_eth.c.

#define TXQ_FIX_PRIO_CONF_MOVED   0x00dc

Definition at line 141 of file mv643xx_eth.c.

#define UDP_FRAME   0x00010000

Definition at line 252 of file mv643xx_eth.c.

#define UNICAST_PROMISCUOUS_MODE   0x00000001

Definition at line 89 of file mv643xx_eth.c.

#define UNICAST_TABLE (   p)    (0x1600 + ((p) << 10))

Definition at line 158 of file mv643xx_eth.c.

#define WINDOW_BAR_ENABLE   0x0290

Definition at line 81 of file mv643xx_eth.c.

#define WINDOW_BASE (   w)    (0x0200 + ((w) << 3))

Definition at line 78 of file mv643xx_eth.c.

#define WINDOW_PROTECT (   w)    (0x0294 + ((w) << 4))

Definition at line 82 of file mv643xx_eth.c.

#define WINDOW_REMAP_HIGH (   w)    (0x0280 + ((w) << 2))

Definition at line 80 of file mv643xx_eth.c.

#define WINDOW_SIZE (   w)    (0x0204 + ((w) << 3))

Definition at line 79 of file mv643xx_eth.c.

#define ZERO_PADDING   0x00080000

Definition at line 249 of file mv643xx_eth.c.

Function Documentation

MODULE_ALIAS ( "platform:"  MV643XX_ETH_SHARED_NAME)
MODULE_AUTHOR ( "Rabeeh  Khoury,
Assaf  Hoffman,
Matthew  Dharm,
""Manish  Lachwani,
Dale Farnsworth and Lennert Buytenhek"   
)
MODULE_DESCRIPTION ( "Ethernet driver for Marvell MV643XX"  )
module_exit ( mv643xx_eth_cleanup_module  )
module_init ( mv643xx_eth_init_module  )
MODULE_LICENSE ( "GPL"  )