Re: [PATCH net-next v2 0/3] introduce skb_for_each_frag()

From: Matteo Croce
Date: Fri Apr 16 2021 - 18:44:46 EST


On Tue, Apr 13, 2021 at 9:53 AM David Laight <David.Laight@xxxxxxxxxx> wrote:
>
> From: Matteo Croce
> > Sent: 12 April 2021 01:38
> >
> > Introduce skb_for_each_frag, an helper macro to iterate over the SKB frags.
>
> The real question is why, the change is:
>
> - for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
> + skb_for_each_frag(skb, i) {
>
> The existing code isn't complicated or obscure and 'does what it
> says on the tin'.
> The 'helper' requires you go and look up its definition to see
> what it is really doing.
>
> Unless you have a cunning plan to change the definition
> there is zero point.
>
> A more interesting change would be something that generated:
> unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
> for (i = 0; i < nr_frags; i++) {
> since that will run faster for most loops.
> But that is ~impossible to do since you can't declare
> variables inside the (...) that are scoped to the loop.
>

I don't know how to do it with C90.
It would be nice to have a switch to just allow declaration of
variables inside the (...) instead of enabling the full C99 language
which, as Linus said[1], allows the insane mixing of variables and
code.

[1] https://lore.kernel.org/lkml/CA+55aFzs=DuYibWYMUFiU_R1aJHAr-8hpQhWLew8R5q4nCDraQ@xxxxxxxxxxxxxx/
--
per aspera ad upstream