diff options
author | Olof Johansson <olof@lixom.net> | 2008-02-20 21:57:59 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2008-03-05 17:34:41 -0500 |
commit | e37c772e36a7943b2e0bd8f48312e78474c0df15 (patch) | |
tree | 7f4fdfd2ecc3f598f74de18ddafd78d6898fdd9d /drivers/net/pasemi_mac.c | |
parent | 251567848f2f446f4356f969329a8188faf1fe90 (diff) |
pasemi_mac: basic ethtool support
First cut at ethtool support, to be completed over time.
Signed-off-by: Olof Johansson <olof@lixom.net>
Acked-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/pasemi_mac.c')
-rw-r--r-- | drivers/net/pasemi_mac.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index 5ee7e4a73ae0..c50f0f4de6d8 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c | |||
@@ -55,12 +55,6 @@ | |||
55 | * - Multiqueue RX/TX | 55 | * - Multiqueue RX/TX |
56 | */ | 56 | */ |
57 | 57 | ||
58 | |||
59 | /* Must be a power of two */ | ||
60 | #define RX_RING_SIZE 2048 | ||
61 | #define TX_RING_SIZE 4096 | ||
62 | #define CS_RING_SIZE (TX_RING_SIZE*2) | ||
63 | |||
64 | #define LRO_MAX_AGGR 64 | 58 | #define LRO_MAX_AGGR 64 |
65 | 59 | ||
66 | #define PE_MIN_MTU 64 | 60 | #define PE_MIN_MTU 64 |
@@ -77,17 +71,6 @@ | |||
77 | NETIF_MSG_RX_ERR | \ | 71 | NETIF_MSG_RX_ERR | \ |
78 | NETIF_MSG_TX_ERR) | 72 | NETIF_MSG_TX_ERR) |
79 | 73 | ||
80 | #define TX_DESC(tx, num) ((tx)->chan.ring_virt[(num) & (TX_RING_SIZE-1)]) | ||
81 | #define TX_DESC_INFO(tx, num) ((tx)->ring_info[(num) & (TX_RING_SIZE-1)]) | ||
82 | #define RX_DESC(rx, num) ((rx)->chan.ring_virt[(num) & (RX_RING_SIZE-1)]) | ||
83 | #define RX_DESC_INFO(rx, num) ((rx)->ring_info[(num) & (RX_RING_SIZE-1)]) | ||
84 | #define RX_BUFF(rx, num) ((rx)->buffers[(num) & (RX_RING_SIZE-1)]) | ||
85 | #define CS_DESC(cs, num) ((cs)->chan.ring_virt[(num) & (CS_RING_SIZE-1)]) | ||
86 | |||
87 | #define RING_USED(ring) (((ring)->next_to_fill - (ring)->next_to_clean) \ | ||
88 | & ((ring)->size - 1)) | ||
89 | #define RING_AVAIL(ring) ((ring->size) - RING_USED(ring)) | ||
90 | |||
91 | MODULE_LICENSE("GPL"); | 74 | MODULE_LICENSE("GPL"); |
92 | MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>"); | 75 | MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>"); |
93 | MODULE_DESCRIPTION("PA Semi PWRficient Ethernet driver"); | 76 | MODULE_DESCRIPTION("PA Semi PWRficient Ethernet driver"); |
@@ -96,6 +79,8 @@ static int debug = -1; /* -1 == use DEFAULT_MSG_ENABLE as value */ | |||
96 | module_param(debug, int, 0); | 79 | module_param(debug, int, 0); |
97 | MODULE_PARM_DESC(debug, "PA Semi MAC bitmapped debugging message enable value"); | 80 | MODULE_PARM_DESC(debug, "PA Semi MAC bitmapped debugging message enable value"); |
98 | 81 | ||
82 | extern const struct ethtool_ops pasemi_mac_ethtool_ops; | ||
83 | |||
99 | static int translation_enabled(void) | 84 | static int translation_enabled(void) |
100 | { | 85 | { |
101 | #if defined(CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE) | 86 | #if defined(CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE) |
@@ -1148,7 +1133,7 @@ static int pasemi_mac_open(struct net_device *dev) | |||
1148 | { | 1133 | { |
1149 | struct pasemi_mac *mac = netdev_priv(dev); | 1134 | struct pasemi_mac *mac = netdev_priv(dev); |
1150 | unsigned int flags; | 1135 | unsigned int flags; |
1151 | int ret; | 1136 | int i, ret; |
1152 | 1137 | ||
1153 | flags = PAS_MAC_CFG_TXP_FCE | PAS_MAC_CFG_TXP_FPC(3) | | 1138 | flags = PAS_MAC_CFG_TXP_FCE | PAS_MAC_CFG_TXP_FPC(3) | |
1154 | PAS_MAC_CFG_TXP_SL(3) | PAS_MAC_CFG_TXP_COB(0xf) | | 1139 | PAS_MAC_CFG_TXP_SL(3) | PAS_MAC_CFG_TXP_COB(0xf) | |
@@ -1171,6 +1156,10 @@ static int pasemi_mac_open(struct net_device *dev) | |||
1171 | goto out_tx_ring; | 1156 | goto out_tx_ring; |
1172 | } | 1157 | } |
1173 | 1158 | ||
1159 | /* Zero out rmon counters */ | ||
1160 | for (i = 0; i < 32; i++) | ||
1161 | write_mac_reg(mac, PAS_MAC_RMON(i), 0); | ||
1162 | |||
1174 | /* 0x3ff with 33MHz clock is about 31us */ | 1163 | /* 0x3ff with 33MHz clock is about 31us */ |
1175 | write_iob_reg(PAS_IOB_DMA_COM_TIMEOUTCFG, | 1164 | write_iob_reg(PAS_IOB_DMA_COM_TIMEOUTCFG, |
1176 | PAS_IOB_DMA_COM_TIMEOUTCFG_TCNT(0x3ff)); | 1165 | PAS_IOB_DMA_COM_TIMEOUTCFG_TCNT(0x3ff)); |
@@ -1812,6 +1801,7 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1812 | mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; | 1801 | mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; |
1813 | 1802 | ||
1814 | dev->change_mtu = pasemi_mac_change_mtu; | 1803 | dev->change_mtu = pasemi_mac_change_mtu; |
1804 | dev->ethtool_ops = &pasemi_mac_ethtool_ops; | ||
1815 | 1805 | ||
1816 | if (err) | 1806 | if (err) |
1817 | goto out; | 1807 | goto out; |