aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/spider_net_ethtool.c
diff options
context:
space:
mode:
authorJens Osterkamp <Jens.Osterkamp@de.ibm.com>2005-09-05 18:19:29 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-09-06 22:17:49 -0400
commitaaec0fab5f8809fe1509fdc204e769bb35ebe41a (patch)
tree8f2ae06374413dd9d3e56a12b0592be9bb58c6e5 /drivers/net/spider_net_ethtool.c
parent25097d4bda4a554d8b4a9989c7d8bcb67ef53f48 (diff)
[PATCH] net: add driver for the NIC on Cell Blades
This patch adds a driver for a new 1000 Mbit ethernet NIC. It is integrated on the south bridge that is used for our Cell Blades. The code gets the MAC address from the Open Firmware device tree, so it won't compile on platforms other than ppc64. This is the first public release, so I don't expect the first version to get merged, but I'd aim for integration within the 2.6.13 time frame. Cc: Utz Bacher <utz.bacher@de.ibm.com> Signed-off-by: Arnd Bergmann <arndb@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/spider_net_ethtool.c')
-rw-r--r--drivers/net/spider_net_ethtool.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/drivers/net/spider_net_ethtool.c b/drivers/net/spider_net_ethtool.c
new file mode 100644
index 000000000000..9447c2ccd70a
--- /dev/null
+++ b/drivers/net/spider_net_ethtool.c
@@ -0,0 +1,107 @@
1/*
2 * Network device driver for Cell Processor-Based Blade
3 *
4 * (C) Copyright IBM Corp. 2005
5 *
6 * Authors : Utz Bacher <utz.bacher@de.ibm.com>
7 * Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2, or (at your option)
12 * any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 */
23
24#include <linux/netdevice.h>
25#include <linux/ethtool.h>
26#include <linux/pci.h>
27
28#include "spider_net.h"
29
30static void
31spider_net_ethtool_get_drvinfo(struct net_device *netdev,
32 struct ethtool_drvinfo *drvinfo)
33{
34 struct spider_net_card *card;
35 card = netdev_priv(netdev);
36
37 /* clear and fill out info */
38 memset(drvinfo, 0, sizeof(struct ethtool_drvinfo));
39 strncpy(drvinfo->driver, spider_net_driver_name, 32);
40 strncpy(drvinfo->version, "0.1", 32);
41 strcpy(drvinfo->fw_version, "no information");
42 strncpy(drvinfo->bus_info, pci_name(card->pdev), 32);
43}
44
45static void
46spider_net_ethtool_get_wol(struct net_device *netdev,
47 struct ethtool_wolinfo *wolinfo)
48{
49 /* no support for wol */
50 wolinfo->supported = 0;
51 wolinfo->wolopts = 0;
52}
53
54static u32
55spider_net_ethtool_get_msglevel(struct net_device *netdev)
56{
57 struct spider_net_card *card;
58 card = netdev_priv(netdev);
59 return card->msg_enable;
60}
61
62static void
63spider_net_ethtool_set_msglevel(struct net_device *netdev,
64 u32 level)
65{
66 struct spider_net_card *card;
67 card = netdev_priv(netdev);
68 card->msg_enable = level;
69}
70
71static int
72spider_net_ethtool_nway_reset(struct net_device *netdev)
73{
74 if (netif_running(netdev)) {
75 spider_net_stop(netdev);
76 spider_net_open(netdev);
77 }
78 return 0;
79}
80
81static u32
82spider_net_ethtool_get_rx_csum(struct net_device *netdev)
83{
84 struct spider_net_card *card = netdev->priv;
85
86 return card->options.rx_csum;
87}
88
89static int
90spider_net_ethtool_set_rx_csum(struct net_device *netdev, u32 n)
91{
92 struct spider_net_card *card = netdev->priv;
93
94 card->options.rx_csum = n;
95 return 0;
96}
97
98struct ethtool_ops spider_net_ethtool_ops = {
99 .get_drvinfo = spider_net_ethtool_get_drvinfo,
100 .get_wol = spider_net_ethtool_get_wol,
101 .get_msglevel = spider_net_ethtool_get_msglevel,
102 .set_msglevel = spider_net_ethtool_set_msglevel,
103 .nway_reset = spider_net_ethtool_nway_reset,
104 .get_rx_csum = spider_net_ethtool_get_rx_csum,
105 .set_rx_csum = spider_net_ethtool_set_rx_csum,
106};
107