aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/bcm/Bcmnet.c
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-10-29 17:12:37 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-11-01 09:50:06 -0400
commitd21d6dde0280f0897ce6de1948bfaa5633867b28 (patch)
tree68e70a2c7c660b5df475fa10eadb2f64504e00c9 /drivers/staging/bcm/Bcmnet.c
parentbeceem: make transmit thread interruptible (diff)
downloadlinux-dev-d21d6dde0280f0897ce6de1948bfaa5633867b28.tar.xz
linux-dev-d21d6dde0280f0897ce6de1948bfaa5633867b28.zip
beceem: add ethtool support
This adds basic ethtool support to get driver info and settings Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Diffstat (limited to 'drivers/staging/bcm/Bcmnet.c')
-rw-r--r--drivers/staging/bcm/Bcmnet.c47
1 files changed, 46 insertions, 1 deletions
diff --git a/drivers/staging/bcm/Bcmnet.c b/drivers/staging/bcm/Bcmnet.c
index b4e729b57e67..f0549912c9ec 100644
--- a/drivers/staging/bcm/Bcmnet.c
+++ b/drivers/staging/bcm/Bcmnet.c
@@ -1,7 +1,8 @@
#include "headers.h"
-#define DRV_DESCRIPTION "Beceem Communications Inc. WiMAX driver"
+#define DRV_NAME "beceem"
#define DRV_VERSION "5.2.7.3P1"
+#define DRV_DESCRIPTION "Beceem Communications Inc. WiMAX driver"
#define DRV_COPYRIGHT "Copyright 2010. Beceem Communications Inc"
@@ -79,6 +80,49 @@ static struct device_type wimax_type = {
.name = "wimax",
};
+static int bcm_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+{
+ cmd->supported = 0;
+ cmd->advertising = 0;
+ cmd->speed = SPEED_10000;
+ cmd->duplex = DUPLEX_FULL;
+ cmd->port = PORT_TP;
+ cmd->phy_address = 0;
+ cmd->transceiver = XCVR_INTERNAL;
+ cmd->autoneg = AUTONEG_DISABLE;
+ cmd->maxtxpkt = 0;
+ cmd->maxrxpkt = 0;
+ return 0;
+}
+
+static void bcm_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
+{
+ PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
+ PS_INTERFACE_ADAPTER psIntfAdapter = Adapter->pvInterfaceAdapter;
+ struct usb_device *udev = interface_to_usbdev(psIntfAdapter->interface);
+
+ strcpy(info->driver, DRV_NAME);
+ strcpy(info->version, DRV_VERSION);
+ snprintf(info->fw_version, sizeof(info->fw_version), "%u.%u",
+ Adapter->uiFlashLayoutMajorVersion,
+ Adapter->uiFlashLayoutMinorVersion);
+
+ usb_make_path(udev, info->bus_info, sizeof(info->bus_info));
+}
+
+static u32 bcm_get_link(struct net_device *dev)
+{
+ PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
+
+ return Adapter->LinkUpStatus;
+}
+
+static const struct ethtool_ops bcm_ethtool_ops = {
+ .get_settings = bcm_get_settings,
+ .get_drvinfo = bcm_get_drvinfo,
+ .get_link = bcm_get_link,
+};
+
int register_networkdev(PMINI_ADAPTER Adapter)
{
struct net_device *net;
@@ -98,6 +142,7 @@ int register_networkdev(PMINI_ADAPTER Adapter)
*temp = Adapter;
net->netdev_ops = &bcmNetDevOps;
+ net->ethtool_ops = &bcm_ethtool_ops;
net->mtu = MTU_SIZE; /* 1400 Bytes */
SET_NETDEV_DEV(net, &uintf->dev);