Commit 529683d4 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by Heiko Carstens

s390/qdio: fix statistics for 128 SBALs

Old code would only scan up to 127 SBALs at once. So the last statistics
bucket was set aside to count "discovered 127 SBALs with new work"
events.

But nowadays we allow to scan all 128 SBALs for Output Queues, and a
subsequent patch will introduce the same for Input Queues.
So fix up the accounting to use the last bucket only when all 128 SBALs
have been discovered with new work.
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 7904aaa8
...@@ -166,11 +166,7 @@ struct qdio_dev_perf_stat { ...@@ -166,11 +166,7 @@ struct qdio_dev_perf_stat {
} ____cacheline_aligned; } ____cacheline_aligned;
struct qdio_queue_perf_stat { struct qdio_queue_perf_stat {
/* /* Sorted into order-2 buckets: 1, 2-3, 4-7, ... 64-127, 128. */
* Sorted into order-2 buckets: 1, 2-3, 4-7, ... 64-127, 128.
* Since max. 127 SBALs are scanned reuse entry for 128 as queue full
* aka 127 SBALs found.
*/
unsigned int nr_sbals[8]; unsigned int nr_sbals[8];
unsigned int nr_sbal_error; unsigned int nr_sbal_error;
unsigned int nr_sbal_nop; unsigned int nr_sbal_nop;
......
...@@ -165,7 +165,7 @@ static int qstat_show(struct seq_file *m, void *v) ...@@ -165,7 +165,7 @@ static int qstat_show(struct seq_file *m, void *v)
} }
seq_printf(m, "\n1 2.. 4.. 8.. " seq_printf(m, "\n1 2.. 4.. 8.. "
"16.. 32.. 64.. 127\n"); "16.. 32.. 64.. 128\n");
for (i = 0; i < ARRAY_SIZE(q->q_stats.nr_sbals); i++) for (i = 0; i < ARRAY_SIZE(q->q_stats.nr_sbals); i++)
seq_printf(m, "%-10u ", q->q_stats.nr_sbals[i]); seq_printf(m, "%-10u ", q->q_stats.nr_sbals[i]);
seq_printf(m, "\nError NOP Total\n%-10u %-10u %-10u\n\n", seq_printf(m, "\nError NOP Total\n%-10u %-10u %-10u\n\n",
......
...@@ -413,15 +413,8 @@ static inline void qdio_stop_polling(struct qdio_q *q) ...@@ -413,15 +413,8 @@ static inline void qdio_stop_polling(struct qdio_q *q)
static inline void account_sbals(struct qdio_q *q, unsigned int count) static inline void account_sbals(struct qdio_q *q, unsigned int count)
{ {
int pos;
q->q_stats.nr_sbal_total += count; q->q_stats.nr_sbal_total += count;
if (count == QDIO_MAX_BUFFERS_MASK) { q->q_stats.nr_sbals[ilog2(count)]++;
q->q_stats.nr_sbals[7]++;
return;
}
pos = ilog2(count);
q->q_stats.nr_sbals[pos]++;
} }
static void process_buffer_error(struct qdio_q *q, unsigned int start, static void process_buffer_error(struct qdio_q *q, unsigned int start,
......
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