Commit c8bf3484 authored by Franky Lin's avatar Franky Lin Committed by John W. Linville

brcm80211: fmac: move tx flow ctrl flag to bus layer

txoff is the flow control flag for transmit used in sdio layer.
Move it to bus layer data structure brcmf_sdio. Also flag
management code is moved out of brcmf_txflowcontrol(). This is
part of the fullmac bus interface refactoring.
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: default avatarArend van Spriel <arend@broadcom.com>
Reviewed-by: default avatarAlwin Beukers <alwin@broadcom.com>
Signed-off-by: default avatarFranky Lin <frankyl@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9c1a043a
...@@ -597,7 +597,6 @@ struct brcmf_pub { ...@@ -597,7 +597,6 @@ struct brcmf_pub {
struct device *dev; /* fullmac dongle device pointer */ struct device *dev; /* fullmac dongle device pointer */
/* Internal brcmf items */ /* Internal brcmf items */
bool txoff; /* Transmit flow-controlled */
uint hdrlen; /* Total BRCMF header length (proto + bus) */ uint hdrlen; /* Total BRCMF header length (proto + bus) */
uint rxsz; /* Rx buffer size bus module should use */ uint rxsz; /* Rx buffer size bus module should use */
u8 wme_dp; /* wme discard priority */ u8 wme_dp; /* wme discard priority */
......
...@@ -356,7 +356,6 @@ void brcmf_txflowcontrol(struct device *dev, int ifidx, bool state) ...@@ -356,7 +356,6 @@ void brcmf_txflowcontrol(struct device *dev, int ifidx, bool state)
brcmf_dbg(TRACE, "Enter\n"); brcmf_dbg(TRACE, "Enter\n");
drvr->txoff = state;
ndev = drvr->iflist[ifidx]->ndev; ndev = drvr->iflist[ifidx]->ndev;
if (state == ON) if (state == ON)
netif_stop_queue(ndev); netif_stop_queue(ndev);
......
...@@ -575,6 +575,8 @@ struct brcmf_sdio { ...@@ -575,6 +575,8 @@ struct brcmf_sdio {
const struct firmware *firmware; const struct firmware *firmware;
u32 fw_ptr; u32 fw_ptr;
bool txoff; /* Transmit flow-controlled */
}; };
/* clkstate */ /* clkstate */
...@@ -2297,8 +2299,10 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes) ...@@ -2297,8 +2299,10 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes)
/* Deflow-control stack if needed */ /* Deflow-control stack if needed */
if (drvr->bus_if->drvr_up && if (drvr->bus_if->drvr_up &&
(drvr->bus_if->state == BRCMF_BUS_DATA) && (drvr->bus_if->state == BRCMF_BUS_DATA) &&
drvr->txoff && (pktq_len(&bus->txq) < TXLOW)) bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
bus->txoff = OFF;
brcmf_txflowcontrol(bus->sdiodev->dev, 0, OFF); brcmf_txflowcontrol(bus->sdiodev->dev, 0, OFF);
}
return cnt; return cnt;
} }
...@@ -2611,8 +2615,10 @@ int brcmf_sdbrcm_bus_txdata(struct device *dev, struct sk_buff *pkt) ...@@ -2611,8 +2615,10 @@ int brcmf_sdbrcm_bus_txdata(struct device *dev, struct sk_buff *pkt)
} }
spin_unlock_bh(&bus->txqlock); spin_unlock_bh(&bus->txqlock);
if (pktq_len(&bus->txq) >= TXHI) if (pktq_len(&bus->txq) >= TXHI) {
bus->txoff = ON;
brcmf_txflowcontrol(bus->sdiodev->dev, 0, ON); brcmf_txflowcontrol(bus->sdiodev->dev, 0, ON);
}
#ifdef BCMDBG #ifdef BCMDBG
if (pktq_plen(&bus->txq, prec) > qcount[prec]) if (pktq_plen(&bus->txq, prec) > qcount[prec])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment