[media] mb86a20s: remove global BER/PER counters if per-layer counters vanish
authorMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 24 Jan 2013 16:16:17 +0000 (13:16 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 24 Jan 2013 16:28:32 +0000 (14:28 -0200)
If, for any reason, all per-layers counters stop, remove the
corresponding global counter.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb-frontends/mb86a20s.c

index ed39ee13a5ad078406044b47b3ea16a3e7ed6097..f19cd7367040dea00a01b0e01767afea8a83096d 100644 (file)
@@ -1604,7 +1604,6 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                                        "%s: Can't get BER for layer %c (error %d).\n",
                                        __func__, 'A' + i, rc);
                        }
-
                        if (c->block_error.stat[1 + i].scale != FE_SCALE_NOT_AVAILABLE)
                                pre_ber_layers++;
 
@@ -1627,7 +1626,6 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                                        "%s: Can't get BER for layer %c (error %d).\n",
                                        __func__, 'A' + i, rc);
                        }
-
                        if (c->block_error.stat[1 + i].scale != FE_SCALE_NOT_AVAILABLE)
                                post_ber_layers++;
 
@@ -1652,7 +1650,6 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                                        __func__, 'A' + i, rc);
 
                        }
-
                        if (c->block_error.stat[1 + i].scale != FE_SCALE_NOT_AVAILABLE)
                                per_layers++;
 
@@ -1686,6 +1683,9 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                c->pre_bit_error.stat[0].uvalue = t_pre_bit_error;
                c->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
                c->pre_bit_count.stat[0].uvalue = t_pre_bit_count;
+       } else {
+               c->pre_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
+               c->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
        }
 
        /*
@@ -1704,6 +1704,9 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                c->post_bit_error.stat[0].uvalue = t_post_bit_error;
                c->post_bit_count.stat[0].scale = FE_SCALE_COUNTER;
                c->post_bit_count.stat[0].uvalue = t_post_bit_count;
+       } else {
+               c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
+               c->post_bit_count.stat[0].scale = FE_SCALE_COUNTER;
        }
 
        if (per_layers) {
@@ -1718,6 +1721,9 @@ static int mb86a20s_get_stats(struct dvb_frontend *fe)
                c->block_error.stat[0].uvalue = t_block_error;
                c->block_count.stat[0].scale = FE_SCALE_COUNTER;
                c->block_count.stat[0].uvalue = t_block_count;
+       } else {
+               c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
+               c->block_count.stat[0].scale = FE_SCALE_COUNTER;
        }
 
        return rc;