diff options
author | Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> | 2015-02-01 03:55:14 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-02-03 08:36:37 -0500 |
commit | 5b29c573f3dcb22534489194ba97aeb495cc65ca (patch) | |
tree | 2c015e7efe155354fd1f06b4fb6b49d62428ea48 /drivers/net/wireless | |
parent | 5933a06dc96cad21b7c125995791c93a86be7915 (diff) |
wil6210: more Tx debug
Print Tx descriptors
Print ring index for all Tx related messages
Sort prefixes: Tx for transmit, TxC for completion, added "D"
for descriptor related prints
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/txrx.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 85ecea2e6a67..8439f65db259 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
@@ -960,16 +960,16 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
960 | 960 | ||
961 | if (avail < 1 + nr_frags) { | 961 | if (avail < 1 + nr_frags) { |
962 | wil_err_ratelimited(wil, | 962 | wil_err_ratelimited(wil, |
963 | "Tx ring full. No space for %d fragments\n", | 963 | "Tx ring[%2d] full. No space for %d fragments\n", |
964 | 1 + nr_frags); | 964 | vring_index, 1 + nr_frags); |
965 | return -ENOMEM; | 965 | return -ENOMEM; |
966 | } | 966 | } |
967 | _d = &vring->va[i].tx; | 967 | _d = &vring->va[i].tx; |
968 | 968 | ||
969 | pa = dma_map_single(dev, skb->data, skb_headlen(skb), DMA_TO_DEVICE); | 969 | pa = dma_map_single(dev, skb->data, skb_headlen(skb), DMA_TO_DEVICE); |
970 | 970 | ||
971 | wil_dbg_txrx(wil, "Tx skb %d bytes 0x%p -> %pad\n", skb_headlen(skb), | 971 | wil_dbg_txrx(wil, "Tx[%2d] skb %d bytes 0x%p -> %pad\n", vring_index, |
972 | skb->data, &pa); | 972 | skb_headlen(skb), skb->data, &pa); |
973 | wil_hex_dump_txrx("Tx ", DUMP_PREFIX_OFFSET, 16, 1, | 973 | wil_hex_dump_txrx("Tx ", DUMP_PREFIX_OFFSET, 16, 1, |
974 | skb->data, skb_headlen(skb), false); | 974 | skb->data, skb_headlen(skb), false); |
975 | 975 | ||
@@ -980,7 +980,7 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
980 | wil_tx_desc_map(d, pa, skb_headlen(skb), vring_index); | 980 | wil_tx_desc_map(d, pa, skb_headlen(skb), vring_index); |
981 | /* Process TCP/UDP checksum offloading */ | 981 | /* Process TCP/UDP checksum offloading */ |
982 | if (wil_tx_desc_offload_cksum_set(wil, d, skb)) { | 982 | if (wil_tx_desc_offload_cksum_set(wil, d, skb)) { |
983 | wil_err(wil, "VRING #%d Failed to set cksum, drop packet\n", | 983 | wil_err(wil, "Tx[%2d] Failed to set cksum, drop packet\n", |
984 | vring_index); | 984 | vring_index); |
985 | goto dma_error; | 985 | goto dma_error; |
986 | } | 986 | } |
@@ -995,6 +995,9 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
995 | int len = skb_frag_size(frag); | 995 | int len = skb_frag_size(frag); |
996 | 996 | ||
997 | *_d = *d; | 997 | *_d = *d; |
998 | wil_dbg_txrx(wil, "Tx[%2d] desc[%4d]\n", vring_index, i); | ||
999 | wil_hex_dump_txrx("TxD ", DUMP_PREFIX_NONE, 32, 4, | ||
1000 | (const void *)d, sizeof(*d), false); | ||
998 | i = (swhead + f + 1) % vring->size; | 1001 | i = (swhead + f + 1) % vring->size; |
999 | _d = &vring->va[i].tx; | 1002 | _d = &vring->va[i].tx; |
1000 | pa = skb_frag_dma_map(dev, frag, 0, skb_frag_size(frag), | 1003 | pa = skb_frag_dma_map(dev, frag, 0, skb_frag_size(frag), |
@@ -1014,6 +1017,9 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
1014 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_MARK_WB_POS); | 1017 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_MARK_WB_POS); |
1015 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS); | 1018 | d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS); |
1016 | *_d = *d; | 1019 | *_d = *d; |
1020 | wil_dbg_txrx(wil, "Tx[%2d] desc[%4d]\n", vring_index, i); | ||
1021 | wil_hex_dump_txrx("TxD ", DUMP_PREFIX_NONE, 32, 4, | ||
1022 | (const void *)d, sizeof(*d), false); | ||
1017 | 1023 | ||
1018 | /* hold reference to skb | 1024 | /* hold reference to skb |
1019 | * to prevent skb release before accounting | 1025 | * to prevent skb release before accounting |
@@ -1021,15 +1027,13 @@ static int __wil_tx_vring(struct wil6210_priv *wil, struct vring *vring, | |||
1021 | */ | 1027 | */ |
1022 | vring->ctx[i].skb = skb_get(skb); | 1028 | vring->ctx[i].skb = skb_get(skb); |
1023 | 1029 | ||
1024 | wil_hex_dump_txrx("Tx ", DUMP_PREFIX_NONE, 32, 4, | ||
1025 | (const void *)d, sizeof(*d), false); | ||
1026 | |||
1027 | if (wil_vring_is_empty(vring)) /* performance monitoring */ | 1030 | if (wil_vring_is_empty(vring)) /* performance monitoring */ |
1028 | txdata->idle += get_cycles() - txdata->last_idle; | 1031 | txdata->idle += get_cycles() - txdata->last_idle; |
1029 | 1032 | ||
1030 | /* advance swhead */ | 1033 | /* advance swhead */ |
1031 | wil_vring_advance_head(vring, nr_frags + 1); | 1034 | wil_vring_advance_head(vring, nr_frags + 1); |
1032 | wil_dbg_txrx(wil, "Tx swhead %d -> %d\n", swhead, vring->swhead); | 1035 | wil_dbg_txrx(wil, "Tx[%2d] swhead %d -> %d\n", vring_index, swhead, |
1036 | vring->swhead); | ||
1033 | trace_wil6210_tx(vring_index, swhead, skb->len, nr_frags); | 1037 | trace_wil6210_tx(vring_index, swhead, skb->len, nr_frags); |
1034 | iowrite32(vring->swhead, wil->csr + HOSTADDR(vring->hwtail)); | 1038 | iowrite32(vring->swhead, wil->csr + HOSTADDR(vring->hwtail)); |
1035 | 1039 | ||
@@ -1211,10 +1215,10 @@ int wil_tx_complete(struct wil6210_priv *wil, int ringid) | |||
1211 | trace_wil6210_tx_done(ringid, vring->swtail, dmalen, | 1215 | trace_wil6210_tx_done(ringid, vring->swtail, dmalen, |
1212 | d->dma.error); | 1216 | d->dma.error); |
1213 | wil_dbg_txrx(wil, | 1217 | wil_dbg_txrx(wil, |
1214 | "Tx[%3d] : %d bytes, status 0x%02x err 0x%02x\n", | 1218 | "TxC[%2d][%3d] : %d bytes, status 0x%02x err 0x%02x\n", |
1215 | vring->swtail, dmalen, d->dma.status, | 1219 | ringid, vring->swtail, dmalen, |
1216 | d->dma.error); | 1220 | d->dma.status, d->dma.error); |
1217 | wil_hex_dump_txrx("TxC ", DUMP_PREFIX_NONE, 32, 4, | 1221 | wil_hex_dump_txrx("TxCD ", DUMP_PREFIX_NONE, 32, 4, |
1218 | (const void *)d, sizeof(*d), false); | 1222 | (const void *)d, sizeof(*d), false); |
1219 | 1223 | ||
1220 | wil_txdesc_unmap(dev, d, ctx); | 1224 | wil_txdesc_unmap(dev, d, ctx); |