Linux Kernel
3.7.1
|
#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) | |
#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 | ) |
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 | ) |
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.
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 | ) |
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.
MODULE_ALIAS | ( | "platform:" | MV643XX_ETH_SHARED_NAME | ) |
MODULE_AUTHOR | ( | "Rabeeh | Khoury, |
Assaf | Hoffman, | ||
Matthew | Dharm, | ||
""Manish | Lachwani, | ||
Dale Farnsworth and Lennert Buytenhek" | |||
) |
module_exit | ( | mv643xx_eth_cleanup_module | ) |
module_init | ( | mv643xx_eth_init_module | ) |
MODULE_LICENSE | ( | "GPL" | ) |