diff options
-rw-r--r-- | drivers/infiniband/ulp/ipoib/Makefile | 3 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib.h | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 53 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 |
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 | ||
8 | ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_CM) += ipoib_cm.o | 9 | ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_CM) += ipoib_cm.o |
9 | ib_ipoib-$(CONFIG_INFINIBAND_IPOIB_DEBUG) += ipoib_fs.o | 10 | ib_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); | |||
460 | int ipoib_pkey_dev_delay_open(struct net_device *dev); | 460 | int ipoib_pkey_dev_delay_open(struct net_device *dev); |
461 | void ipoib_drain_cq(struct net_device *dev); | 461 | void ipoib_drain_cq(struct net_device *dev); |
462 | 462 | ||
463 | void 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 | |||
39 | static 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 | |||
45 | static const struct ethtool_ops ipoib_ethtool_ops = { | ||
46 | .get_drvinfo = ipoib_get_drvinfo, | ||
47 | .get_tso = ethtool_op_get_tso, | ||
48 | }; | ||
49 | |||
50 | void 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; |