> > > +/* 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. > > > > Yes, this error code is returned by regmap read functions in > ppe_pkt_cnt_get() when the hardware counter read fails. I will > remove it from debugfs file and instead log the error to the > console (dev_info). and return it to user space via the read() call. These functions normally return the number of bytes put into the buffer. But you can also return a negative error code which gets passed back to user space instead. Andrew