Re: [PATCH] staging: pi433: remove need to recompile code to debug fifo content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Driver Development]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux