Re: [net-next v3 14/15] net: marvell: Convert tasklet API to new bottom half workqueue mechanism

From: Allen
Date: Wed Jul 31 2024 - 16:46:32 EST


> On Tue, Jul 30, 2024 at 10:39:51PM +0200, Andrew Lunn wrote:
> > > - * Called only from mvpp2_txq_done(), called from mvpp2_tx()
> > > - * (migration disabled) and from the TX completion tasklet (migration
> > > - * disabled) so using smp_processor_id() is OK.
> > > + * Called only from mvpp2_txq_done().
> > > + *
> > > + * Historically, this function was invoked directly from mvpp2_tx()
> > > + * (with migration disabled) and from the bottom half workqueue.
> > > + * Verify that the use of smp_processor_id() is still appropriate
> > > + * considering the current bottom half workqueue implementation.
> >
> > What does this mean? You want somebody else to verify this? You are
> > potentially breaking this driver?
>
> I don't see how, the only thing that's changing in mvpp2 seems to be
> an outdated comment that happens to mention a tasklet, but the
> driver doesn't use tasklets.
>
> Let's look at the original comment which claims what the call sites
> are:
>
> static void mvpp2_txq_done(struct mvpp2_port *port, struct mvpp2_tx_queue *txq,
> struct mvpp2_txq_pcpu *txq_pcpu)
> {
> ...
> tx_done = mvpp2_txq_sent_desc_proc(port, txq);
>
> and that is it. _This_ function is called from several places:
>
> mvpp2_tx_done()
> mvpp2_xdp_finish_tx()
> mvpp2_tx()
>
> So I suppose that the original comment was referring to the
> mvpp2_tx() -> mvpp2_txq_done() -> mvpp2_txq_sent_desc_proc() call path,
> and the others were added over time.

You are right, I should have checked the calls before modifying the comment.

>
> mvpp2_tx_done() is called from mvpp2_hr_timer_cb(), and yes, back in
> the distant history there was a tasklet here - see:
>
> ecb9f80db23a net/mvpp2: Replace tasklet with softirq hrtimer

I missed this bit completely, "historically...." is completely wrong and
misleading.

>
> So, the comment referring to a tasklet was left over from that commit
> and never fixed up.
>
> Given this, I don't think the new paragraph starting "Historically"
> is correct (or even relevant) as I think it misinterprets the original
> comment - and "this function" is ambiguous in it, but either way its
> still wrong.
>
> If we assume that "this function" refers to the one below the comment,
> then this has never been called directly from mvpp2_tx() nor the
> tasklet, and talking about a bottom half workqueue makes no sense
> because "historically" it's never been called from a bottom half
> workqueue.
>
> If we assume that "this function" refers to mvpp2_txq_done(), then
> it's not historical that this was called from mvpp2_tx(), because it
> still is today. And the bit about being called from a bottom half
> workqueue is still false.
>
> Given that bottom half workqueues have absolutely nothing to do with
> this code path, the sentence beginning with "Verify" seems totally
> irrelevant (at least to me.)
>
> So, I think I've comprehensively ripped the new comment to shreds.
> It would be far better to leave the driver alone and not change the
> comment despite it incorrectly referring to a tasklet that has
> already been eliminated (and at least was historically correct),
> rather than the new comment which just seems wrong.

I am open to leaving the comment as is or completely removing it.
I am open to suggestions, please let me know what would be
the correct thing to do.

Thanks for taking the time out to review and write back.

- Allen

>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!



--
- Allen