x86/UV2: Add accounting for BAU strong nacks
This patch adds separate accounting of UV2 message "strong nack's" in the BAU statistics. Signed-off-by: Cliff Wickman <cpw@sgi.com> Link: http://lkml.kernel.org/r/20120116212238.GF5767@sgi.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
88ed9dd7f6
commit
b54bd9be35
@ -483,6 +483,7 @@ struct ptc_stats {
|
|||||||
requests */
|
requests */
|
||||||
unsigned long s_stimeout; /* source side timeouts */
|
unsigned long s_stimeout; /* source side timeouts */
|
||||||
unsigned long s_dtimeout; /* destination side timeouts */
|
unsigned long s_dtimeout; /* destination side timeouts */
|
||||||
|
unsigned long s_strongnacks; /* number of strong nack's */
|
||||||
unsigned long s_time; /* time spent in sending side */
|
unsigned long s_time; /* time spent in sending side */
|
||||||
unsigned long s_retriesok; /* successful retries */
|
unsigned long s_retriesok; /* successful retries */
|
||||||
unsigned long s_ntargcpu; /* total number of cpu's
|
unsigned long s_ntargcpu; /* total number of cpu's
|
||||||
|
@ -635,13 +635,15 @@ static int uv2_wait_completion(struct bau_desc *bau_desc,
|
|||||||
* our message and its state will stay IDLE.
|
* our message and its state will stay IDLE.
|
||||||
*/
|
*/
|
||||||
if ((descriptor_stat == UV2H_DESC_SOURCE_TIMEOUT) ||
|
if ((descriptor_stat == UV2H_DESC_SOURCE_TIMEOUT) ||
|
||||||
(descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) ||
|
|
||||||
(descriptor_stat == UV2H_DESC_DEST_PUT_ERR)) {
|
(descriptor_stat == UV2H_DESC_DEST_PUT_ERR)) {
|
||||||
stat->s_stimeout++;
|
stat->s_stimeout++;
|
||||||
return FLUSH_GIVEUP;
|
return FLUSH_GIVEUP;
|
||||||
|
} else if (descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) {
|
||||||
|
stat->s_strongnacks++;
|
||||||
|
bcp->conseccompletes = 0;
|
||||||
|
return FLUSH_GIVEUP;
|
||||||
} else if (descriptor_stat == UV2H_DESC_DEST_TIMEOUT) {
|
} else if (descriptor_stat == UV2H_DESC_DEST_TIMEOUT) {
|
||||||
stat->s_dtimeout++;
|
stat->s_dtimeout++;
|
||||||
ttm = get_cycles();
|
|
||||||
bcp->conseccompletes = 0;
|
bcp->conseccompletes = 0;
|
||||||
return FLUSH_RETRY_TIMEOUT;
|
return FLUSH_RETRY_TIMEOUT;
|
||||||
} else {
|
} else {
|
||||||
@ -1346,7 +1348,7 @@ static int ptc_seq_show(struct seq_file *file, void *data)
|
|||||||
seq_printf(file,
|
seq_printf(file,
|
||||||
"remotehub numuvhubs numuvhubs16 numuvhubs8 ");
|
"remotehub numuvhubs numuvhubs16 numuvhubs8 ");
|
||||||
seq_printf(file,
|
seq_printf(file,
|
||||||
"numuvhubs4 numuvhubs2 numuvhubs1 dto retries rok ");
|
"numuvhubs4 numuvhubs2 numuvhubs1 dto snacks retries rok ");
|
||||||
seq_printf(file,
|
seq_printf(file,
|
||||||
"resetp resett giveup sto bz throt swack recv rtime ");
|
"resetp resett giveup sto bz throt swack recv rtime ");
|
||||||
seq_printf(file,
|
seq_printf(file,
|
||||||
@ -1364,10 +1366,10 @@ static int ptc_seq_show(struct seq_file *file, void *data)
|
|||||||
stat->s_ntargremotes, stat->s_ntargcpu,
|
stat->s_ntargremotes, stat->s_ntargcpu,
|
||||||
stat->s_ntarglocaluvhub, stat->s_ntargremoteuvhub,
|
stat->s_ntarglocaluvhub, stat->s_ntargremoteuvhub,
|
||||||
stat->s_ntarguvhub, stat->s_ntarguvhub16);
|
stat->s_ntarguvhub, stat->s_ntarguvhub16);
|
||||||
seq_printf(file, "%ld %ld %ld %ld %ld ",
|
seq_printf(file, "%ld %ld %ld %ld %ld %ld ",
|
||||||
stat->s_ntarguvhub8, stat->s_ntarguvhub4,
|
stat->s_ntarguvhub8, stat->s_ntarguvhub4,
|
||||||
stat->s_ntarguvhub2, stat->s_ntarguvhub1,
|
stat->s_ntarguvhub2, stat->s_ntarguvhub1,
|
||||||
stat->s_dtimeout);
|
stat->s_dtimeout, stat->s_strongnacks);
|
||||||
seq_printf(file, "%ld %ld %ld %ld %ld %ld %ld %ld ",
|
seq_printf(file, "%ld %ld %ld %ld %ld %ld %ld %ld ",
|
||||||
stat->s_retry_messages, stat->s_retriesok,
|
stat->s_retry_messages, stat->s_retriesok,
|
||||||
stat->s_resets_plug, stat->s_resets_timeout,
|
stat->s_resets_plug, stat->s_resets_timeout,
|
||||||
|
Loading…
Reference in New Issue
Block a user