From c892abe5e61645f41dca11189a1b473f26e73c17 Mon Sep 17 00:00:00 2001 From: Eric Brower Date: Thu, 19 Jan 2012 16:44:25 -0800 Subject: net: wireless: bcm4329: 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. Bug 929960 Signed-off-by: Eric Brower Reviewed-on: http://git-master/r/77889 (cherry picked from commit 5055320be16c36557e1ab9966ff7537500ca6d4d) Change-Id: Ia5ea298c32823f896428905a779a734140306861 Signed-off-by: Pritesh Raithatha Reviewed-on: http://git-master/r/82720 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Varun Wadekar Tested-by: Varun Wadekar --- drivers/net/wireless/bcm4329/bcmsdh_linux.c | 4 ++-- drivers/net/wireless/bcm4329/dhd.h | 2 +- drivers/net/wireless/bcm4329/dhd_linux.c | 5 +++-- drivers/net/wireless/bcm4329/dhd_sdio.c | 5 +++-- drivers/net/wireless/bcm4329/include/bcmsdh.h | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/wireless/bcm4329/bcmsdh_linux.c b/drivers/net/wireless/bcm4329/bcmsdh_linux.c index 6d6097b78f7d..22e1e9c7997c 100644 --- a/drivers/net/wireless/bcm4329/bcmsdh_linux.c +++ b/drivers/net/wireless/bcm4329/bcmsdh_linux.c @@ -249,7 +249,7 @@ int bcmsdh_probe(struct device *dev) /* try to attach to the target device */ if (!(sdhc->ch = drvinfo.attach((vendevid >> 16), (vendevid & 0xFFFF), 0, 0, 0, 0, - (void *)regs, NULL, sdh))) { + (void *)regs, NULL, sdh, dev))) { SDLX_MSG(("%s: device attach failed\n", __FUNCTION__)); goto err; } @@ -468,7 +468,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/bcm4329/dhd.h b/drivers/net/wireless/bcm4329/dhd.h index 9b75ae68098a..8f0910cfc46f 100644 --- a/drivers/net/wireless/bcm4329/dhd.h +++ b/drivers/net/wireless/bcm4329/dhd.h @@ -268,7 +268,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/bcm4329/dhd_linux.c b/drivers/net/wireless/bcm4329/dhd_linux.c index 26bbb74ba7b7..2327ad5fa406 100644 --- a/drivers/net/wireless/bcm4329/dhd_linux.c +++ b/drivers/net/wireless/bcm4329/dhd_linux.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -2054,7 +2055,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; @@ -2071,7 +2072,7 @@ dhd_attach(osl_t *osh, struct dhd_bus *bus, uint bus_hdrlen) DHD_ERROR(("%s: OOM - alloc_etherdev\n", __FUNCTION__)); goto fail; } - + 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/bcm4329/dhd_sdio.c b/drivers/net/wireless/bcm4329/dhd_sdio.c index 5b08f7926d7c..446eb4a458d2 100644 --- a/drivers/net/wireless/bcm4329/dhd_sdio.c +++ b/drivers/net/wireless/bcm4329/dhd_sdio.c @@ -4771,7 +4771,8 @@ 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; @@ -4879,7 +4880,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/bcm4329/include/bcmsdh.h b/drivers/net/wireless/bcm4329/include/bcmsdh.h index f5dee5c58445..caf0b9988aa8 100644 --- a/drivers/net/wireless/bcm4329/include/bcmsdh.h +++ b/drivers/net/wireless/bcm4329/include/bcmsdh.h @@ -179,7 +179,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; -- cgit v1.2.3