brcm80211: fmac: stop referencing brcmf_pub in bus layer

brcmf_pub is the data structure for common layer. Since brcmf_bus
should be the only structure shared by common layer and bus layer,
stop referencing brcmf_pub from bus layer. This patch is part of
the fullmac bus interface refactoring.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index 130cab1..533418e 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -922,17 +922,18 @@
 	}
 }
 
-struct brcmf_pub *brcmf_attach(struct brcmf_sdio *bus, uint bus_hdrlen,
+int brcmf_attach(struct brcmf_sdio *bus, uint bus_hdrlen,
 			       struct device *dev)
 {
 	struct brcmf_pub *drvr = NULL;
+	int ret = 0;
 
 	brcmf_dbg(TRACE, "Enter\n");
 
 	/* Allocate primary brcmf_info */
 	drvr = kzalloc(sizeof(struct brcmf_pub), GFP_ATOMIC);
 	if (!drvr)
-		goto fail;
+		return -ENOMEM;
 
 	mutex_init(&drvr->proto_block);
 
@@ -944,7 +945,8 @@
 	drvr->dev = dev;
 
 	/* Attach and link in the protocol */
-	if (brcmf_proto_attach(drvr) != 0) {
+	ret = brcmf_proto_attach(drvr);
+	if (ret != 0) {
 		brcmf_dbg(ERROR, "brcmf_prot_attach failed\n");
 		goto fail;
 	}
@@ -952,13 +954,12 @@
 	INIT_WORK(&drvr->setmacaddr_work, _brcmf_set_mac_address);
 	INIT_WORK(&drvr->multicast_work, _brcmf_set_multicast_list);
 
-	return drvr;
+	return ret;
 
 fail:
-	if (drvr)
-		brcmf_detach(dev);
+	brcmf_detach(dev);
 
-	return NULL;
+	return ret;
 }
 
 int brcmf_bus_start(struct device *dev)