Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 265814
b: refs/heads/master
c: bf54e30
h: refs/heads/master
v: v3
  • Loading branch information
Arik Nemtsov authored and Luciano Coelho committed Aug 22, 2011
1 parent 0b6e688 commit 2584ceb
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 010d3d30a218fba961bd3d250a59b0ce9d5278f3
refs/heads/master: bf54e301671a6ece6c94550294dc7faf14158cd3
16 changes: 15 additions & 1 deletion trunk/drivers/net/wireless/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,7 @@ static void wl12xx_fw_status(struct wl1271 *wl,
struct timespec ts;
u32 old_tx_blk_count = wl->tx_blocks_available;
int avail, freed_blocks;
int i;

wl1271_raw_read(wl, FW_STATUS_ADDR, status, sizeof(*status), false);

Expand All @@ -824,6 +825,15 @@ static void wl12xx_fw_status(struct wl1271 *wl,
status->drv_rx_counter,
status->tx_results_counter);

for (i = 0; i < NUM_TX_QUEUES; i++) {
/* prevent wrap-around in freed-packets counter */
wl->tx_allocated_pkts -=
(status->tx_released_pkts[i] -
wl->tx_pkts_freed[i]) & 0xff;

wl->tx_pkts_freed[i] = status->tx_released_pkts[i];
}

freed_blocks = le32_to_cpu(status->total_released_blks) -
wl->tx_blocks_freed;
wl->tx_blocks_freed = le32_to_cpu(status->total_released_blks);
Expand Down Expand Up @@ -1934,7 +1944,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
static void __wl1271_op_remove_interface(struct wl1271 *wl,
bool reset_tx_queues)
{
int ret;
int ret, i;

wl1271_debug(DEBUG_MAC80211, "mac80211 remove interface");

Expand Down Expand Up @@ -2050,6 +2060,10 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl,

wl->tx_blocks_freed = 0;

wl->tx_allocated_pkts = 0;
for (i = 0; i < NUM_TX_QUEUES; i++)
wl->tx_pkts_freed[i] = 0;

wl1271_debugfs_reset(wl);

kfree(wl->fw_status);
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/net/wireless/wl12xx/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ static int wl1271_tx_allocate(struct wl1271 *wl, struct sk_buff *skb, u32 extra,
wl->tx_blocks_available -= total_blocks;
wl->tx_allocated_blocks += total_blocks;

wl->tx_allocated_pkts++;

if (wl->bss_type == BSS_TYPE_AP_BSS)
wl->links[hlid].allocated_blks += total_blocks;

Expand Down
8 changes: 6 additions & 2 deletions trunk/drivers/net/wireless/wl12xx/wl12xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -268,8 +268,8 @@ struct wl12xx_fw_status {
/* Size (in Memory Blocks) of TX pool */
__le32 tx_total;

/* Cumulative counter of released mem-blocks per AC */
u8 tx_released_blks[NUM_TX_QUEUES];
/* Cumulative counter of released packets per AC */
u8 tx_released_pkts[NUM_TX_QUEUES];

/* Cumulative counter of freed MBs per HLID */
u8 tx_lnk_free_blks[WL12XX_MAX_LINKS];
Expand Down Expand Up @@ -422,6 +422,10 @@ struct wl1271 {
u32 tx_allocated_blocks;
u32 tx_results_count;

/* Accounting for allocated / available Tx packets in HW */
u32 tx_pkts_freed[NUM_TX_QUEUES];
u32 tx_allocated_pkts;

/* Transmitted TX packets counter for chipset interface */
u32 tx_packets_count;

Expand Down

0 comments on commit 2584ceb

Please sign in to comment.