diff options
author | Mursalin Akon <makon@nvidia.com> | 2012-01-24 14:24:08 -0800 |
---|---|---|
committer | Lokesh Pathak <lpathak@nvidia.com> | 2012-02-23 04:44:44 -0800 |
commit | 6daef168181dd174cf0c103ab0619031ab6c9bc3 (patch) | |
tree | 24377adfc040f3660ebc4d82c896dcf1cdc86f4f /drivers/net | |
parent | 65acb0e7b2cfa64d13b952f7209e7d5c52b25735 (diff) |
net: wireless: bcmdhd: set reference to physical device
Set the parent field of the netdevice, which causes sysfs
to create a device subdirectory under the netdevice. Without
this subdirectory the user-space NetworkManager cannot manage
the network device.
Implemented using void * to maintain current driver implementation
of segregated OS-specific implementation.
This CL contains changes similar to http://git-master/r/77889
which was done for bcm4329.
Bug 924521
(cherry picked from commit 8ce30af25321844cb0e89a3c23f0a6521885b6db)
Signed-off-by: Mursalin Akon <makon@nvidia.com>
Change-Id: I78ef9883ae1f85dbd3ad18e0ee2dece1559c4da8
Reviewed-on: http://git-master/r/82875
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Allen Martin <amartin@nvidia.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/bcmdhd/bcmsdh_linux.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/bcmdhd/dhd.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/bcmdhd/dhd_linux.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/bcmdhd/dhd_sdio.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/bcmdhd/include/bcmsdh.h | 2 |
5 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/wireless/bcmdhd/bcmsdh_linux.c b/drivers/net/wireless/bcmdhd/bcmsdh_linux.c index 096abb824350..414b172a9ab1 100644 --- a/drivers/net/wireless/bcmdhd/bcmsdh_linux.c +++ b/drivers/net/wireless/bcmdhd/bcmsdh_linux.c @@ -247,7 +247,7 @@ int bcmsdh_probe(struct device *dev) /* try to attach to the target device */ if (!(sdhc->ch = drvinfo.attach((vendevid >> 16), func->device, 0, 0, 0, 0, - (void *)regs, NULL, sdh))) { + (void *)regs, NULL, sdh, dev))) { SDLX_MSG(("%s: device attach failed\n", __FUNCTION__)); goto err; } @@ -465,7 +465,7 @@ bcmsdh_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* try to attach to the target device */ if (!(sdhc->ch = drvinfo.attach(VENDOR_BROADCOM, /* pdev->vendor, */ bcmsdh_query_device(sdh) & 0xFFFF, 0, 0, 0, 0, - (void *)regs, NULL, sdh))) { + (void *)regs, NULL, sdh, pdev->dev))) { SDLX_MSG(("%s: device attach failed\n", __FUNCTION__)); goto err; } diff --git a/drivers/net/wireless/bcmdhd/dhd.h b/drivers/net/wireless/bcmdhd/dhd.h index 18d48d846d08..1b7242d48280 100644 --- a/drivers/net/wireless/bcmdhd/dhd.h +++ b/drivers/net/wireless/bcmdhd/dhd.h @@ -364,7 +364,7 @@ void dhd_osl_detach(osl_t *osh); * Returned structure should have bus and prot pointers filled in. * bus_hdrlen specifies required headroom for bus module header. */ -extern dhd_pub_t *dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen); +extern dhd_pub_t *dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen, void *dev); extern int dhd_net_attach(dhd_pub_t *dhdp, int idx); /* Indication from bus module regarding removal/absence of dongle */ diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c index b5a91eb4034c..891cf3b084de 100644 --- a/drivers/net/wireless/bcmdhd/dhd_linux.c +++ b/drivers/net/wireless/bcmdhd/dhd_linux.c @@ -42,6 +42,7 @@ #include <linux/ethtool.h> #include <linux/fcntl.h> #include <linux/fs.h> +#include <linux/device.h> #include <asm/uaccess.h> #include <asm/unaligned.h> @@ -2485,7 +2486,7 @@ dhd_del_if(dhd_info_t *dhd, int ifidx) } dhd_pub_t * -dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen) +dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen, void *dev) { dhd_info_t *dhd = NULL; struct net_device *net = NULL; @@ -2506,6 +2507,7 @@ dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen) } dhd_state |= DHD_ATTACH_STATE_NET_ALLOC; + SET_NETDEV_DEV(net, (struct device *)dev); /* Allocate primary dhd_info */ if (!(dhd = MALLOC(osh, sizeof(dhd_info_t)))) { DHD_ERROR(("%s: OOM - alloc dhd_info\n", __FUNCTION__)); diff --git a/drivers/net/wireless/bcmdhd/dhd_sdio.c b/drivers/net/wireless/bcmdhd/dhd_sdio.c index 0b90ed48a0f0..57aee5705454 100644 --- a/drivers/net/wireless/bcmdhd/dhd_sdio.c +++ b/drivers/net/wireless/bcmdhd/dhd_sdio.c @@ -5198,7 +5198,7 @@ dhdsdio_chipmatch(uint16 chipid) static void * dhdsdio_probe(uint16 venid, uint16 devid, uint16 bus_no, uint16 slot, - uint16 func, uint bustype, void *regsva, osl_t * osh, void *sdh) + uint16 func, uint bustype, void *regsva, osl_t * osh, void *sdh, void *dev) { int ret; dhd_bus_t *bus; @@ -5318,7 +5318,7 @@ dhdsdio_probe(uint16 venid, uint16 devid, uint16 bus_no, uint16 slot, } /* Attach to the dhd/OS/network interface */ - if (!(bus->dhd = dhd_attach(osh, bus, SDPCM_RESERVE))) { + if (!(bus->dhd = dhd_attach(osh, bus, SDPCM_RESERVE, dev))) { DHD_ERROR(("%s: dhd_attach failed\n", __FUNCTION__)); goto fail; } diff --git a/drivers/net/wireless/bcmdhd/include/bcmsdh.h b/drivers/net/wireless/bcmdhd/include/bcmsdh.h index 6131d8ae4305..4e3affde6b06 100644 --- a/drivers/net/wireless/bcmdhd/include/bcmsdh.h +++ b/drivers/net/wireless/bcmdhd/include/bcmsdh.h @@ -182,7 +182,7 @@ typedef struct { /* attach to device */ void *(*attach)(uint16 vend_id, uint16 dev_id, uint16 bus, uint16 slot, uint16 func, uint bustype, void * regsva, osl_t * osh, - void * param); + void * param, void *dev); /* detach from device */ void (*detach)(void *ch); } bcmsdh_driver_t; |