aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/ulp/ipoib/Makefile3
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ethtool.c53
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c2
4 files changed, 59 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/Makefile b/drivers/infiniband/ulp/ipoib/Makefile
index 98ee38e8c2c4..3090100f0de7 100644
--- a/drivers/infiniband/ulp/ipoib/Makefile
+++ b/drivers/infiniband/ulp/ipoib/Makefile
@@ -4,7 +4,8 @@ ib_ipoib-y := ipoib_main.o \
4 ipoib_ib.o \ 4 ipoib_ib.o \
5 ipoib_multicast.o \ 5 ipoib_multicast.o \
6 ipoib_verbs.o \ 6 ipoib_verbs.o \
7 ipoib_vlan.o 7 ipoib_vlan.o \
8 ipoib_ethtool.o
8ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_CM) += ipoib_cm.o 9ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_CM) += ipoib_cm.o
9ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_DEBUG) += ipoib_fs.o 10ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_DEBUG) += ipoib_fs.o
10 11
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 19a41ff90d15..3524d65f2e57 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -460,6 +460,8 @@ void ipoib_pkey_poll(struct work_struct *work);
460int ipoib_pkey_dev_delay_open(struct net_device *dev); 460int ipoib_pkey_dev_delay_open(struct net_device *dev);
461void ipoib_drain_cq(struct net_device *dev); 461void ipoib_drain_cq(struct net_device *dev);
462 462
463void ipoib_set_ethtool_ops(struct net_device *dev);
464
463#ifdef CONFIG_INFINIBAND_IPOIB_CM 465#ifdef CONFIG_INFINIBAND_IPOIB_CM
464 466
465#define IPOIB_FLAGS_RC 0x80 467#define IPOIB_FLAGS_RC 0x80
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
new file mode 100644
index 000000000000..d46e6b7303b8
--- /dev/null
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
@@ -0,0 +1,53 @@
1/*
2 * Copyright (c) 2007 Mellanox Technologies. All rights reserved.
3 *
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
9 *
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
12 * conditions are met:
13 *
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer.
17 *
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and/or other materials
21 * provided with the distribution.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 * SOFTWARE.
31 */
32
33#include <linux/kernel.h>
34#include <linux/ethtool.h>
35#include <linux/netdevice.h>
36
37#include "ipoib.h"
38
39static void ipoib_get_drvinfo(struct net_device *netdev,
40 struct ethtool_drvinfo *drvinfo)
41{
42 strncpy(drvinfo->driver, "ipoib", sizeof(drvinfo->driver) - 1);
43}
44
45static const struct ethtool_ops ipoib_ethtool_ops = {
46 .get_drvinfo = ipoib_get_drvinfo,
47 .get_tso = ethtool_op_get_tso,
48};
49
50void ipoib_set_ethtool_ops(struct net_device *dev)
51{
52 SET_ETHTOOL_OPS(dev, &ipoib_ethtool_ops);
53}
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 35a3643fb566..bd07f02cf02b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -951,6 +951,8 @@ static void ipoib_setup(struct net_device *dev)
951 dev->set_multicast_list = ipoib_set_mcast_list; 951 dev->set_multicast_list = ipoib_set_mcast_list;
952 dev->neigh_setup = ipoib_neigh_setup_dev; 952 dev->neigh_setup = ipoib_neigh_setup_dev;
953 953
954 ipoib_set_ethtool_ops(dev);
955
954 netif_napi_add(dev, &priv->napi, ipoib_poll, 100); 956 netif_napi_add(dev, &priv->napi, ipoib_poll, 100);
955 957
956 dev->watchdog_timeo = HZ; 958 dev->watchdog_timeo = HZ;