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

brcm80211: fmac: move dongle statistics to struct brcmf_bus

Dongle statistics are shared data between common layer and bus
layer. This patch places them in bus interface structure brcmf_bus
as 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 4033927c
...@@ -578,6 +578,7 @@ struct brcmf_bus { ...@@ -578,6 +578,7 @@ struct brcmf_bus {
enum brcmf_bus_state state; enum brcmf_bus_state state;
uint maxctl; /* Max size rxctl request from proto to bus */ uint maxctl; /* Max size rxctl request from proto to bus */
bool drvr_up; /* Status flag of driver up/down */ bool drvr_up; /* Status flag of driver up/down */
struct dngl_stats dstats; /* Stats for dongle-based data */
}; };
/* Forward decls for struct brcmf_pub (see below) */ /* Forward decls for struct brcmf_pub (see below) */
...@@ -604,7 +605,6 @@ struct brcmf_pub { ...@@ -604,7 +605,6 @@ struct brcmf_pub {
bool iswl; /* Dongle-resident driver is wl */ bool iswl; /* Dongle-resident driver is wl */
unsigned long drv_version; /* Version of dongle-resident driver */ unsigned long drv_version; /* Version of dongle-resident driver */
u8 mac[ETH_ALEN]; /* MAC address obtained from dongle */ u8 mac[ETH_ALEN]; /* MAC address obtained from dongle */
struct dngl_stats dstats; /* Stats for dongle-based data */
/* Additional stats for the bus level */ /* Additional stats for the bus level */
......
...@@ -340,9 +340,9 @@ static int brcmf_netdev_start_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -340,9 +340,9 @@ static int brcmf_netdev_start_xmit(struct sk_buff *skb, struct net_device *ndev)
done: done:
if (ret) if (ret)
drvr->dstats.tx_dropped++; drvr->bus_if->dstats.tx_dropped++;
else else
drvr->dstats.tx_packets++; drvr->bus_if->dstats.tx_packets++;
/* Return ok: we always eat the packet */ /* Return ok: we always eat the packet */
return 0; return 0;
...@@ -427,7 +427,7 @@ void brcmf_rx_frame(struct device *dev, int ifidx, ...@@ -427,7 +427,7 @@ void brcmf_rx_frame(struct device *dev, int ifidx,
skb->protocol = eth_type_trans(skb, skb->dev); skb->protocol = eth_type_trans(skb, skb->dev);
if (skb->pkt_type == PACKET_MULTICAST) if (skb->pkt_type == PACKET_MULTICAST)
drvr->dstats.multicast++; bus_if->dstats.multicast++;
skb->data = eth; skb->data = eth;
skb->len = len; skb->len = len;
...@@ -446,8 +446,8 @@ void brcmf_rx_frame(struct device *dev, int ifidx, ...@@ -446,8 +446,8 @@ void brcmf_rx_frame(struct device *dev, int ifidx,
ifp->ndev->last_rx = jiffies; ifp->ndev->last_rx = jiffies;
} }
drvr->dstats.rx_bytes += skb->len; bus_if->dstats.rx_bytes += skb->len;
drvr->dstats.rx_packets++; /* Local count */ bus_if->dstats.rx_packets++; /* Local count */
if (in_interrupt()) if (in_interrupt())
netif_rx(skb); netif_rx(skb);
...@@ -483,20 +483,20 @@ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) ...@@ -483,20 +483,20 @@ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev) static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev)
{ {
struct brcmf_if *ifp = netdev_priv(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_pub *drvr = ifp->drvr; struct brcmf_bus *bus_if = ifp->drvr->bus_if;
brcmf_dbg(TRACE, "Enter\n"); brcmf_dbg(TRACE, "Enter\n");
/* Copy dongle stats to net device stats */ /* Copy dongle stats to net device stats */
ifp->stats.rx_packets = drvr->dstats.rx_packets; ifp->stats.rx_packets = bus_if->dstats.rx_packets;
ifp->stats.tx_packets = drvr->dstats.tx_packets; ifp->stats.tx_packets = bus_if->dstats.tx_packets;
ifp->stats.rx_bytes = drvr->dstats.rx_bytes; ifp->stats.rx_bytes = bus_if->dstats.rx_bytes;
ifp->stats.tx_bytes = drvr->dstats.tx_bytes; ifp->stats.tx_bytes = bus_if->dstats.tx_bytes;
ifp->stats.rx_errors = drvr->dstats.rx_errors; ifp->stats.rx_errors = bus_if->dstats.rx_errors;
ifp->stats.tx_errors = drvr->dstats.tx_errors; ifp->stats.tx_errors = bus_if->dstats.tx_errors;
ifp->stats.rx_dropped = drvr->dstats.rx_dropped; ifp->stats.rx_dropped = bus_if->dstats.rx_dropped;
ifp->stats.tx_dropped = drvr->dstats.tx_dropped; ifp->stats.tx_dropped = bus_if->dstats.tx_dropped;
ifp->stats.multicast = drvr->dstats.multicast; ifp->stats.multicast = bus_if->dstats.multicast;
return &ifp->stats; return &ifp->stats;
} }
......
...@@ -1263,7 +1263,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq) ...@@ -1263,7 +1263,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq)
if (errcode < 0) { if (errcode < 0) {
brcmf_dbg(ERROR, "glom read of %d bytes failed: %d\n", brcmf_dbg(ERROR, "glom read of %d bytes failed: %d\n",
dlen, errcode); dlen, errcode);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
if (bus->glomerr++ < 3) { if (bus->glomerr++ < 3) {
brcmf_sdbrcm_rxfail(bus, true, true); brcmf_sdbrcm_rxfail(bus, true, true);
...@@ -1447,7 +1447,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq) ...@@ -1447,7 +1447,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq)
} else if (brcmf_proto_hdrpull(bus->sdiodev->dev, } else if (brcmf_proto_hdrpull(bus->sdiodev->dev,
&ifidx, pfirst) != 0) { &ifidx, pfirst) != 0) {
brcmf_dbg(ERROR, "rx protocol error\n"); brcmf_dbg(ERROR, "rx protocol error\n");
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
skb_unlink(pfirst, &bus->glom); skb_unlink(pfirst, &bus->glom);
brcmu_pkt_buf_free_skb(pfirst); brcmu_pkt_buf_free_skb(pfirst);
continue; continue;
...@@ -1548,7 +1548,7 @@ brcmf_sdbrcm_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff) ...@@ -1548,7 +1548,7 @@ brcmf_sdbrcm_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff)
if ((rdlen + BRCMF_FIRSTREAD) > bus->sdiodev->bus_if->maxctl) { if ((rdlen + BRCMF_FIRSTREAD) > bus->sdiodev->bus_if->maxctl) {
brcmf_dbg(ERROR, "%d-byte control read exceeds %d-byte buffer\n", brcmf_dbg(ERROR, "%d-byte control read exceeds %d-byte buffer\n",
rdlen, bus->sdiodev->bus_if->maxctl); rdlen, bus->sdiodev->bus_if->maxctl);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
brcmf_sdbrcm_rxfail(bus, false, false); brcmf_sdbrcm_rxfail(bus, false, false);
goto done; goto done;
} }
...@@ -1556,7 +1556,7 @@ brcmf_sdbrcm_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff) ...@@ -1556,7 +1556,7 @@ brcmf_sdbrcm_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff)
if ((len - doff) > bus->sdiodev->bus_if->maxctl) { if ((len - doff) > bus->sdiodev->bus_if->maxctl) {
brcmf_dbg(ERROR, "%d-byte ctl frame (%d-byte ctl data) exceeds %d-byte limit\n", brcmf_dbg(ERROR, "%d-byte ctl frame (%d-byte ctl data) exceeds %d-byte limit\n",
len, len - doff, bus->sdiodev->bus_if->maxctl); len, len - doff, bus->sdiodev->bus_if->maxctl);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
bus->rx_toolong++; bus->rx_toolong++;
brcmf_sdbrcm_rxfail(bus, false, false); brcmf_sdbrcm_rxfail(bus, false, false);
goto done; goto done;
...@@ -1630,7 +1630,7 @@ brcmf_alloc_pkt_and_read(struct brcmf_sdio *bus, u16 rdlen, ...@@ -1630,7 +1630,7 @@ brcmf_alloc_pkt_and_read(struct brcmf_sdio *bus, u16 rdlen,
brcmf_dbg(ERROR, "(nextlen): read %d bytes failed: %d\n", brcmf_dbg(ERROR, "(nextlen): read %d bytes failed: %d\n",
rdlen, sdret); rdlen, sdret);
brcmu_pkt_buf_free_skb(*pkt); brcmu_pkt_buf_free_skb(*pkt);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
/* Force retry w/normal header read. /* Force retry w/normal header read.
* Don't attempt NAK for * Don't attempt NAK for
* gSPI * gSPI
...@@ -1979,7 +1979,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished) ...@@ -1979,7 +1979,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished)
/* Too long -- skip this frame */ /* Too long -- skip this frame */
brcmf_dbg(ERROR, "too long: len %d rdlen %d\n", brcmf_dbg(ERROR, "too long: len %d rdlen %d\n",
len, rdlen); len, rdlen);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
bus->rx_toolong++; bus->rx_toolong++;
brcmf_sdbrcm_rxfail(bus, false, false); brcmf_sdbrcm_rxfail(bus, false, false);
continue; continue;
...@@ -1991,7 +1991,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished) ...@@ -1991,7 +1991,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished)
/* Give up on data, request rtx of events */ /* Give up on data, request rtx of events */
brcmf_dbg(ERROR, "brcmu_pkt_buf_get_skb failed: rdlen %d chan %d\n", brcmf_dbg(ERROR, "brcmu_pkt_buf_get_skb failed: rdlen %d chan %d\n",
rdlen, chan); rdlen, chan);
bus->drvr->dstats.rx_dropped++; bus->sdiodev->bus_if->dstats.rx_dropped++;
brcmf_sdbrcm_rxfail(bus, false, RETRYCHAN(chan)); brcmf_sdbrcm_rxfail(bus, false, RETRYCHAN(chan));
continue; continue;
} }
...@@ -2011,7 +2011,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished) ...@@ -2011,7 +2011,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished)
: ((chan == SDPCM_DATA_CHANNEL) ? "data" : ((chan == SDPCM_DATA_CHANNEL) ? "data"
: "test")), sdret); : "test")), sdret);
brcmu_pkt_buf_free_skb(pkt); brcmu_pkt_buf_free_skb(pkt);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
brcmf_sdbrcm_rxfail(bus, true, RETRYCHAN(chan)); brcmf_sdbrcm_rxfail(bus, true, RETRYCHAN(chan));
continue; continue;
} }
...@@ -2064,7 +2064,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished) ...@@ -2064,7 +2064,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished)
pkt) != 0) { pkt) != 0) {
brcmf_dbg(ERROR, "rx protocol error\n"); brcmf_dbg(ERROR, "rx protocol error\n");
brcmu_pkt_buf_free_skb(pkt); brcmu_pkt_buf_free_skb(pkt);
bus->drvr->dstats.rx_errors++; bus->sdiodev->bus_if->dstats.rx_errors++;
continue; continue;
} }
...@@ -2276,9 +2276,9 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes) ...@@ -2276,9 +2276,9 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes)
ret = brcmf_sdbrcm_txpkt(bus, pkt, SDPCM_DATA_CHANNEL, true); ret = brcmf_sdbrcm_txpkt(bus, pkt, SDPCM_DATA_CHANNEL, true);
if (ret) if (ret)
bus->drvr->dstats.tx_errors++; bus->sdiodev->bus_if->dstats.tx_errors++;
else else
bus->drvr->dstats.tx_bytes += datalen; bus->sdiodev->bus_if->dstats.tx_bytes += datalen;
/* In poll mode, need to check for other events */ /* In poll mode, need to check for other events */
if (!bus->intr && cnt) { if (!bus->intr && cnt) {
......
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