diff options
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, | |||
139 | void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp); | 139 | void 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. */ |
142 | int brcmf_attach(uint bus_hdrlen, struct device *dev); | 142 | int 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 */ |
144 | void brcmf_detach(struct device *dev); | 144 | void 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); | |||
151 | void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); | 151 | void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); |
152 | 152 | ||
153 | int brcmf_bus_start(struct device *dev); | 153 | int brcmf_bus_start(struct device *dev); |
154 | void brcmf_bus_add_txhdrlen(struct device *dev, uint len); | ||
154 | 155 | ||
155 | #ifdef CONFIG_BRCMFMAC_SDIO | 156 | #ifdef CONFIG_BRCMFMAC_SDIO |
156 | void brcmf_sdio_exit(void); | 157 | void 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 | ||
1019 | int brcmf_attach(uint bus_hdrlen, struct device *dev) | 1019 | int 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 | ||
1141 | void 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 | |||
1141 | static void brcmf_bus_detach(struct brcmf_pub *drvr) | 1151 | static 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; |