Commit 84bcc0c3 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville

brcmfmac: enable sk_buff queueing when credits deplete

Firmware provides the driver with credits used to transmit packets
to the firmware. When credits run out the packets should be queued
and dequeued when receiving creditback signals from the firmware.
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 290fb763
...@@ -130,7 +130,7 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data, ...@@ -130,7 +130,7 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct brcmf_fws_stats *fwstats = f->private_data; struct brcmf_fws_stats *fwstats = f->private_data;
char buf[100]; char buf[650];
int res; int res;
/* only allow read from start */ /* only allow read from start */
...@@ -145,12 +145,17 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data, ...@@ -145,12 +145,17 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data,
"mac_update_fails: %u\n" "mac_update_fails: %u\n"
"pkt2bus: %u\n" "pkt2bus: %u\n"
"generic_error: %u\n" "generic_error: %u\n"
"rollback_success: %u\n"
"rollback_failed: %u\n"
"delayq_full: %u\n"
"supprq_full: %u\n"
"txs_indicate: %u\n" "txs_indicate: %u\n"
"txs_discard: %u\n" "txs_discard: %u\n"
"txs_suppr_core: %u\n" "txs_suppr_core: %u\n"
"txs_suppr_ps: %u\n" "txs_suppr_ps: %u\n"
"txs_tossed: %u\n" "txs_tossed: %u\n"
"send_pkts: BK:%u BE:%u VO:%u VI:%u BCMC:%u\n", "send_pkts: BK:%u BE:%u VO:%u VI:%u BCMC:%u\n"
"fifo_credits_sent: BK:%u BE:%u VO:%u VI:%u BCMC:%u\n",
fwstats->header_pulls, fwstats->header_pulls,
fwstats->header_only_pkt, fwstats->header_only_pkt,
fwstats->tlv_parse_failed, fwstats->tlv_parse_failed,
...@@ -158,6 +163,10 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data, ...@@ -158,6 +163,10 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data,
fwstats->mac_update_failed, fwstats->mac_update_failed,
fwstats->pkt2bus, fwstats->pkt2bus,
fwstats->generic_error, fwstats->generic_error,
fwstats->rollback_success,
fwstats->rollback_failed,
fwstats->delayq_full_error,
fwstats->supprq_full_error,
fwstats->txs_indicate, fwstats->txs_indicate,
fwstats->txs_discard, fwstats->txs_discard,
fwstats->txs_supp_core, fwstats->txs_supp_core,
...@@ -165,7 +174,12 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data, ...@@ -165,7 +174,12 @@ ssize_t brcmf_debugfs_fws_stats_read(struct file *f, char __user *data,
fwstats->txs_tossed, fwstats->txs_tossed,
fwstats->send_pkts[0], fwstats->send_pkts[1], fwstats->send_pkts[0], fwstats->send_pkts[1],
fwstats->send_pkts[2], fwstats->send_pkts[3], fwstats->send_pkts[2], fwstats->send_pkts[3],
fwstats->send_pkts[4]); fwstats->send_pkts[4],
fwstats->fifo_credits_sent[0],
fwstats->fifo_credits_sent[1],
fwstats->fifo_credits_sent[2],
fwstats->fifo_credits_sent[3],
fwstats->fifo_credits_sent[4]);
return simple_read_from_buffer(data, count, ppos, buf, res); return simple_read_from_buffer(data, count, ppos, buf, res);
} }
......
...@@ -140,8 +140,14 @@ struct brcmf_fws_stats { ...@@ -140,8 +140,14 @@ struct brcmf_fws_stats {
u32 header_pulls; u32 header_pulls;
u32 pkt2bus; u32 pkt2bus;
u32 send_pkts[5]; u32 send_pkts[5];
u32 fifo_credits_sent[5];
u32 fifo_credits_back[6];
u32 generic_error; u32 generic_error;
u32 mac_update_failed; u32 mac_update_failed;
u32 rollback_success;
u32 rollback_failed;
u32 delayq_full_error;
u32 supprq_full_error;
u32 txs_indicate; u32 txs_indicate;
u32 txs_discard; u32 txs_discard;
u32 txs_supp_core; u32 txs_supp_core;
......
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