aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h3
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c14
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c4
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/usb.c4
4 files changed, 19 insertions, 6 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
index a6eb09e5d46f..a129d21498ff 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
@@ -139,7 +139,7 @@ bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, struct sk_buff *pkt,
139void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp); 139void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp);
140 140
141/* Indication from bus module regarding presence/insertion of dongle. */ 141/* Indication from bus module regarding presence/insertion of dongle. */
142int brcmf_attach(uint bus_hdrlen, struct device *dev); 142int brcmf_attach(struct device *dev);
143/* Indication from bus module regarding removal/absence of dongle */ 143/* Indication from bus module regarding removal/absence of dongle */
144void brcmf_detach(struct device *dev); 144void brcmf_detach(struct device *dev);
145/* Indication from bus module that dongle should be reset */ 145/* Indication from bus module that dongle should be reset */
@@ -151,6 +151,7 @@ void brcmf_txflowblock(struct device *dev, bool state);
151void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); 151void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
152 152
153int brcmf_bus_start(struct device *dev); 153int brcmf_bus_start(struct device *dev);
154void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
154 155
155#ifdef CONFIG_BRCMFMAC_SDIO 156#ifdef CONFIG_BRCMFMAC_SDIO
156void brcmf_sdio_exit(void); 157void brcmf_sdio_exit(void);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index 64e9cff241b9..0c4c2306647d 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -1016,7 +1016,7 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
1016 } 1016 }
1017} 1017}
1018 1018
1019int brcmf_attach(uint bus_hdrlen, struct device *dev) 1019int brcmf_attach(struct device *dev)
1020{ 1020{
1021 struct brcmf_pub *drvr = NULL; 1021 struct brcmf_pub *drvr = NULL;
1022 int ret = 0; 1022 int ret = 0;
@@ -1031,7 +1031,7 @@ int brcmf_attach(uint bus_hdrlen, struct device *dev)
1031 mutex_init(&drvr->proto_block); 1031 mutex_init(&drvr->proto_block);
1032 1032
1033 /* Link to bus module */ 1033 /* Link to bus module */
1034 drvr->hdrlen = bus_hdrlen; 1034 drvr->hdrlen = 0;
1035 drvr->bus_if = dev_get_drvdata(dev); 1035 drvr->bus_if = dev_get_drvdata(dev);
1036 drvr->bus_if->drvr = drvr; 1036 drvr->bus_if->drvr = drvr;
1037 1037
@@ -1138,6 +1138,16 @@ fail:
1138 return 0; 1138 return 0;
1139} 1139}
1140 1140
1141void brcmf_bus_add_txhdrlen(struct device *dev, uint len)
1142{
1143 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
1144 struct brcmf_pub *drvr = bus_if->drvr;
1145
1146 if (drvr) {
1147 drvr->hdrlen += len;
1148 }
1149}
1150
1141static void brcmf_bus_detach(struct brcmf_pub *drvr) 1151static void brcmf_bus_detach(struct brcmf_pub *drvr)
1142{ 1152{
1143 brcmf_dbg(TRACE, "Enter\n"); 1153 brcmf_dbg(TRACE, "Enter\n");
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index b02953c4ade7..928983be800b 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -3983,7 +3983,7 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
3983 bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN; 3983 bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
3984 3984
3985 /* Attach to the common layer, reserve hdr space */ 3985 /* Attach to the common layer, reserve hdr space */
3986 ret = brcmf_attach(bus->tx_hdrlen, bus->sdiodev->dev); 3986 ret = brcmf_attach(bus->sdiodev->dev);
3987 if (ret != 0) { 3987 if (ret != 0) {
3988 brcmf_err("brcmf_attach failed\n"); 3988 brcmf_err("brcmf_attach failed\n");
3989 goto fail; 3989 goto fail;
@@ -4027,6 +4027,8 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
4027 list_add(&dlst->list, &bus->sdiodev->bus_if->dcmd_list); 4027 list_add(&dlst->list, &bus->sdiodev->bus_if->dcmd_list);
4028 } 4028 }
4029 4029
4030 brcmf_bus_add_txhdrlen(bus->sdiodev->dev, bus->tx_hdrlen);
4031
4030 /* if firmware path present try to download and bring up bus */ 4032 /* if firmware path present try to download and bring up bus */
4031 ret = brcmf_bus_start(bus->sdiodev->dev); 4033 ret = brcmf_bus_start(bus->sdiodev->dev);
4032 if (ret != 0) { 4034 if (ret != 0) {
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
index 422f44c63175..51c4de054b15 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
@@ -1255,7 +1255,7 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo)
1255 bus->chiprev = bus_pub->chiprev; 1255 bus->chiprev = bus_pub->chiprev;
1256 1256
1257 /* Attach to the common driver interface */ 1257 /* Attach to the common driver interface */
1258 ret = brcmf_attach(0, dev); 1258 ret = brcmf_attach(dev);
1259 if (ret) { 1259 if (ret) {
1260 brcmf_err("brcmf_attach failed\n"); 1260 brcmf_err("brcmf_attach failed\n");
1261 goto fail; 1261 goto fail;
@@ -1454,7 +1454,7 @@ static int brcmf_usb_resume(struct usb_interface *intf)
1454 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); 1454 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev);
1455 1455
1456 brcmf_dbg(USB, "Enter\n"); 1456 brcmf_dbg(USB, "Enter\n");
1457 if (!brcmf_attach(0, devinfo->dev)) 1457 if (!brcmf_attach(devinfo->dev))
1458 return brcmf_bus_start(&usb->dev); 1458 return brcmf_bus_start(&usb->dev);
1459 1459
1460 return 0; 1460 return 0;