mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-06 09:29:41 +00:00
brcmfmac: add separate function for passing bus tx overhead
The common driver needs the packet overhead for the bus in order to reserve headroom for sk_buffs. For the SDIO driver this depends on firmware features so it is not possible to provide it in the brcmf_attach() call. Reviewed-by: Franky Lin <frankyl@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
1e86d69662
commit
8dee77bab2
@ -139,7 +139,7 @@ bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, struct sk_buff *pkt,
|
||||
void brcmf_rx_frame(struct device *dev, struct sk_buff *rxp);
|
||||
|
||||
/* Indication from bus module regarding presence/insertion of dongle. */
|
||||
int brcmf_attach(uint bus_hdrlen, struct device *dev);
|
||||
int brcmf_attach(struct device *dev);
|
||||
/* Indication from bus module regarding removal/absence of dongle */
|
||||
void brcmf_detach(struct device *dev);
|
||||
/* Indication from bus module that dongle should be reset */
|
||||
@ -151,6 +151,7 @@ void brcmf_txflowblock(struct device *dev, bool state);
|
||||
void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
|
||||
|
||||
int brcmf_bus_start(struct device *dev);
|
||||
void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
|
||||
|
||||
#ifdef CONFIG_BRCMFMAC_SDIO
|
||||
void brcmf_sdio_exit(void);
|
||||
|
@ -1016,7 +1016,7 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
|
||||
}
|
||||
}
|
||||
|
||||
int brcmf_attach(uint bus_hdrlen, struct device *dev)
|
||||
int brcmf_attach(struct device *dev)
|
||||
{
|
||||
struct brcmf_pub *drvr = NULL;
|
||||
int ret = 0;
|
||||
@ -1031,7 +1031,7 @@ int brcmf_attach(uint bus_hdrlen, struct device *dev)
|
||||
mutex_init(&drvr->proto_block);
|
||||
|
||||
/* Link to bus module */
|
||||
drvr->hdrlen = bus_hdrlen;
|
||||
drvr->hdrlen = 0;
|
||||
drvr->bus_if = dev_get_drvdata(dev);
|
||||
drvr->bus_if->drvr = drvr;
|
||||
|
||||
@ -1138,6 +1138,16 @@ fail:
|
||||
return 0;
|
||||
}
|
||||
|
||||
void brcmf_bus_add_txhdrlen(struct device *dev, uint len)
|
||||
{
|
||||
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||
struct brcmf_pub *drvr = bus_if->drvr;
|
||||
|
||||
if (drvr) {
|
||||
drvr->hdrlen += len;
|
||||
}
|
||||
}
|
||||
|
||||
static void brcmf_bus_detach(struct brcmf_pub *drvr)
|
||||
{
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
@ -3983,7 +3983,7 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
|
||||
bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
|
||||
|
||||
/* Attach to the common layer, reserve hdr space */
|
||||
ret = brcmf_attach(bus->tx_hdrlen, bus->sdiodev->dev);
|
||||
ret = brcmf_attach(bus->sdiodev->dev);
|
||||
if (ret != 0) {
|
||||
brcmf_err("brcmf_attach failed\n");
|
||||
goto fail;
|
||||
@ -4027,6 +4027,8 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
|
||||
list_add(&dlst->list, &bus->sdiodev->bus_if->dcmd_list);
|
||||
}
|
||||
|
||||
brcmf_bus_add_txhdrlen(bus->sdiodev->dev, bus->tx_hdrlen);
|
||||
|
||||
/* if firmware path present try to download and bring up bus */
|
||||
ret = brcmf_bus_start(bus->sdiodev->dev);
|
||||
if (ret != 0) {
|
||||
|
@ -1255,7 +1255,7 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo)
|
||||
bus->chiprev = bus_pub->chiprev;
|
||||
|
||||
/* Attach to the common driver interface */
|
||||
ret = brcmf_attach(0, dev);
|
||||
ret = brcmf_attach(dev);
|
||||
if (ret) {
|
||||
brcmf_err("brcmf_attach failed\n");
|
||||
goto fail;
|
||||
@ -1454,7 +1454,7 @@ static int brcmf_usb_resume(struct usb_interface *intf)
|
||||
struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev);
|
||||
|
||||
brcmf_dbg(USB, "Enter\n");
|
||||
if (!brcmf_attach(0, devinfo->dev))
|
||||
if (!brcmf_attach(devinfo->dev))
|
||||
return brcmf_bus_start(&usb->dev);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user