diff options
| author | Eli Cohen <eli@dev.mellanox.co.il> | 2008-04-17 00:09:32 -0400 |
|---|---|---|
| committer | Roland Dreier <rolandd@cisco.com> | 2008-04-17 00:09:32 -0400 |
| commit | 82c24c18afc5e1c2a955bdc2762b19721283365c (patch) | |
| tree | 2dd054b0738962daee6bdfd268c8b9fbb9fc466d | |
| parent | 9b1f38515c41a5f13021e15b50b6558db236d6d5 (diff) | |
IPoIB: Add basic ethtool support
Just add the infrastructure so we can add functionality later.
Signed-off-by: Eli Cohen <eli@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
| -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; |
