> +#define PRINT_COUNTER_PREFIX(desc, cnt_type)         \
> +     seq_printf(seq, "%-16s %16s", desc, cnt_type)
> +
> +#define PRINT_CPU_CODE_COUNTER(cnt, code)            \
> +     seq_printf(seq, "%10u(cpucode:%d)", cnt, code)
> +
> +#define PRINT_DROP_CODE_COUNTER(cnt, port, code)     \
> +     seq_printf(seq, "%10u(port=%d),dropcode:%d", cnt, port, code)
> +
> +#define PRINT_SINGLE_COUNTER(tag, cnt, str, index)                   \
> +do {                                                                 \
> +     if (!((tag) % 4))                                                       
> \
> +             seq_printf(seq, "\n%-16s %16s", "", "");                \
> +     seq_printf(seq, "%10u(%s=%04d)", cnt, str, index);              \
> +} while (0)
> +
> +#define PRINT_TWO_COUNTERS(tag, cnt0, cnt1, str, index)                      
> \
> +do {                                                                 \
> +     if (!((tag) % 4))                                                       
> \
> +             seq_printf(seq, "\n%-16s %16s", "", "");                \
> +     seq_printf(seq, "%10u/%u(%s=%04d)", cnt0, cnt1, str, index);    \
> +} while (0)

I don't think these make the code any more readable. Just inline it.

> +/* The number of packets dropped because of no buffer available, no PPE
> + * buffer assigned to these packets.
> + */
> +static void ppe_port_rx_drop_counter_get(struct ppe_device *ppe_dev,
> +                                      struct seq_file *seq)
> +{
> +     u32 reg, drop_cnt = 0;
> +     int ret, i, tag = 0;
> +
> +     PRINT_COUNTER_PREFIX("PRX_DROP_CNT", "SILENT_DROP:");
> +     for (i = 0; i < PPE_DROP_CNT_TBL_ENTRIES; i++) {
> +             reg = PPE_DROP_CNT_TBL_ADDR + i * PPE_DROP_CNT_TBL_INC;
> +             ret = ppe_pkt_cnt_get(ppe_dev, reg, PPE_PKT_CNT_SIZE_1WORD,
> +                                   &drop_cnt, NULL);
> +             if (ret) {
> +                     seq_printf(seq, "ERROR %d\n", ret);
> +                     return;
> +             }

This is an error getting the value from the hardware? You should not
put that into the debugfs itself, you want the read() call to return
it.

> +/* Display the various packet counters of PPE. */
> +static int ppe_packet_counter_show(struct seq_file *seq, void *v)
> +{
> +     struct ppe_device *ppe_dev = seq->private;
> +
> +     ppe_port_rx_drop_counter_get(ppe_dev, seq);
> +     ppe_port_rx_bm_drop_counter_get(ppe_dev, seq);
> +     ppe_port_rx_bm_port_counter_get(ppe_dev, seq);
> +     ppe_parse_pkt_counter_get(ppe_dev, seq);
> +     ppe_port_rx_counter_get(ppe_dev, seq);
> +     ppe_vp_rx_counter_get(ppe_dev, seq);
> +     ppe_pre_l2_counter_get(ppe_dev, seq);
> +     ppe_vlan_counter_get(ppe_dev, seq);
> +     ppe_cpu_code_counter_get(ppe_dev, seq);
> +     ppe_eg_vsi_counter_get(ppe_dev, seq);
> +     ppe_vp_tx_counter_get(ppe_dev, seq);
> +     ppe_port_tx_counter_get(ppe_dev, seq);
> +     ppe_queue_tx_counter_get(ppe_dev, seq);

It would be more normal to have one debugfs file per group of
counters.

        Andrew

Reply via email to