[PATCH] bcm43xx: basic ethtool support
This patch contains the beginnings of ethtool support for bcm43xx. It only implements get_drvinfo and get_link, but that's enough for ifplugd to use ethtool to know whether we're associated or not and then start or stop dhcp as necessary. Signed-off-by: Jason Lunz <lunz@falooley.org> Signed-off-by: Michael Buesch <mbuesch@freenet.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
9e4a375b15
commit
6465ce1bbf
|
@ -5,4 +5,5 @@ bcm43xx-objs := bcm43xx_main.o bcm43xx_dma.o \
|
|||
bcm43xx_radio.o bcm43xx_phy.o \
|
||||
bcm43xx_power.o bcm43xx_wx.o \
|
||||
bcm43xx_pio.o bcm43xx_ilt.o \
|
||||
bcm43xx_leds.o $(bcm43xx-obj-y)
|
||||
bcm43xx_leds.o bcm43xx_ethtool.o \
|
||||
$(bcm43xx-obj-y)
|
||||
|
|
50
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c
Normal file
50
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
|
||||
Broadcom BCM43xx wireless driver
|
||||
|
||||
ethtool support
|
||||
|
||||
Copyright (c) 2006 Jason Lunz <lunz@falooley.org>
|
||||
|
||||
Some code in this file is derived from the 8139too.c driver
|
||||
Copyright (C) 2002 Jeff Garzik
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include "bcm43xx.h"
|
||||
#include "bcm43xx_ethtool.h"
|
||||
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
|
||||
static void bcm43xx_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
|
||||
{
|
||||
struct bcm43xx_private *bcm = bcm43xx_priv(dev);
|
||||
|
||||
strncpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
|
||||
strncpy(info->version, UTS_RELEASE, sizeof(info->version));
|
||||
strncpy(info->bus_info, pci_name(bcm->pci_dev), ETHTOOL_BUSINFO_LEN);
|
||||
}
|
||||
|
||||
struct ethtool_ops bcm43xx_ethtool_ops = {
|
||||
.get_drvinfo = bcm43xx_get_drvinfo,
|
||||
.get_link = ethtool_op_get_link,
|
||||
};
|
8
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h
Normal file
8
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef BCM43xx_ETHTOOL_H_
|
||||
#define BCM43xx_ETHTOOL_H_
|
||||
|
||||
#include <linux/ethtool.h>
|
||||
|
||||
extern struct ethtool_ops bcm43xx_ethtool_ops;
|
||||
|
||||
#endif /* BCM43xx_ETHTOOL_H_ */
|
|
@ -49,6 +49,7 @@
|
|||
#include "bcm43xx_pio.h"
|
||||
#include "bcm43xx_power.h"
|
||||
#include "bcm43xx_wx.h"
|
||||
#include "bcm43xx_ethtool.h"
|
||||
|
||||
|
||||
MODULE_DESCRIPTION("Broadcom BCM43xx wireless driver");
|
||||
|
@ -4249,6 +4250,7 @@ static int __devinit bcm43xx_init_one(struct pci_dev *pdev,
|
|||
#endif
|
||||
net_dev->wireless_handlers = &bcm43xx_wx_handlers_def;
|
||||
net_dev->irq = pdev->irq;
|
||||
SET_ETHTOOL_OPS(net_dev, &bcm43xx_ethtool_ops);
|
||||
|
||||
/* initialize the bcm43xx_private struct */
|
||||
bcm = bcm43xx_priv(net_dev);
|
||||
|
|
Loading…
Reference in a new issue