On Mon, Feb 07, 2022 at 05:45:12PM +1300, Paulo Miguel Almeida wrote: > Debugging content present in the FIFO register is tricky as when we read > the FIFO register that changes the content of fifo struct which reduces > number of possible ways of debugging it. Rf69 uC has the possibility of > triggering certain IRQs depending on how many items are in the FIFO > queue, so being able to know what's in there is an important way to > troubleshoot certain problems. > > This patch removes the requirement of having to compile pi433 driver > with DEBUG_FIFO_ACCESS set and let that be driven by printk verbositity > level and/or dynamic debug config instead. > > Signed-off-by: Paulo Miguel Almeida <paulo.miguel.almeida.rodenas@xxxxxxxxx> > --- > Meta-comments: > > #1 > In my mind, I didn't like the idea of having to change the code and then > echo "module pi433 +p" > <debugfs>/dynamic_debug/control to only then > be able to read stuff being sent/retrieved from fifo. It felt somewhat > redundant at a certain level. On the other hand, I understand that > removing the conditional compilation will force a for-loop to iterate > for no real reason most of the time (max 66 iterations)... so I made a > trade-off and in case anyone disagrees with that, just let me know and I > will be happy to change to a different approach. > This is fine. It's useful information to you. It's makes the code nicer by removing ifdefs. It's not going to show up in benchmarking. > #2 > In the past, it's been pointed out to me during code review that I tend > to add code comments which could be omitted. In this case, the for-loop > seemed a bit odd without explaining why it's in there. Let me know if > you think I should keep/remove it. Remove. Everyone knows what dev_dbg() does and the "read from fifo" vs "written from[sic] fifo" is built into the function name. > int rf69_read_fifo(struct spi_device *spi, u8 *buffer, unsigned int size) > { > -#ifdef DEBUG_FIFO_ACCESS > int i; > -#endif > struct spi_transfer transfer; > u8 local_buffer[FIFO_SIZE + 1]; You did not introduce this but we are potentially printing out uninitialized data if spi_sync_transfer() fails. Please initialize this with: u8 local_buffer[FIFO_SIZE + 1] = {}; Do that in a separate patch, though. > int retval; > @@ -851,10 +844,9 @@ int rf69_read_fifo(struct spi_device *spi, u8 *buffer, unsigned int size) > > retval = spi_sync_transfer(spi, &transfer, 1); > > -#ifdef DEBUG_FIFO_ACCESS > + /* print content read from fifo for debugging purposes */ > for (i = 0; i < size; i++) > dev_dbg(&spi->dev, "%d - 0x%x\n", i, local_buffer[i + 1]); > -#endif > > memcpy(buffer, &local_buffer[1], size); > regards, dan carpenter