Files
linux/include/linux
Jason A. Donenfeld dcfea72e79 net: introduce skb_list_walk_safe for skb segment walking
As part of the continual effort to remove direct usage of skb->next and
skb->prev, this patch adds a helper for iterating through the
singly-linked variant of skb lists, which are used for lists of GSO
packet. The name "skb_list_..." has been chosen to match the existing
function, "kfree_skb_list, which also operates on these singly-linked
lists, and the "..._walk_safe" part is the same idiom as elsewhere in
the kernel.

This patch removes the helper from wireguard and puts it into
linux/skbuff.h, while making it a bit more robust for general usage. In
particular, parenthesis are added around the macro argument usage, and it
now accounts for trying to iterate through an already-null skb pointer,
which will simply run the iteration zero times. This latter enhancement
means it can be used to replace both do { ... } while and while (...)
open-coded idioms.

This should take care of these three possible usages, which match all
current methods of iterations.

skb_list_walk_safe(segs, skb, next) { ... }
skb_list_walk_safe(skb, skb, next) { ... }
skb_list_walk_safe(segs, skb, segs) { ... }

Gcc appears to generate efficient code for each of these.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-01-08 15:19:54 -08:00
..
2019-08-09 09:15:05 +02:00
2019-09-16 09:56:27 -07:00
2019-11-12 11:43:29 -05:00
2019-10-31 16:54:00 +05:30
2019-08-20 22:09:52 +02:00
2019-07-01 08:18:54 -06:00
2019-11-15 23:44:48 +01:00
2019-12-03 07:36:38 -07:00
2019-11-26 10:26:26 +01:00
2019-10-09 19:33:43 -07:00
2019-12-03 11:20:37 +01:00
2019-12-08 12:42:19 +01:00
2019-09-05 19:52:33 -06:00
2019-11-20 09:40:10 +01:00
2019-12-01 12:59:06 -08:00
2019-09-05 11:40:54 +02:00
2019-10-02 06:36:50 -07:00
2019-07-05 21:34:50 +02:00
2019-06-26 13:19:46 -07:00
2019-10-04 12:31:46 -07:00
2019-10-15 13:34:25 +02:00
2019-11-11 09:02:56 +01:00
2019-12-04 19:44:14 -08:00
2019-09-02 11:43:54 +01:00
2019-12-09 10:36:44 -08:00
2019-12-25 17:08:33 -07:00
2019-10-15 20:40:06 -07:00
2019-09-05 12:32:05 +02:00
2019-08-14 15:30:35 +02:00
2019-08-08 09:09:25 +02:00
2019-11-15 13:49:04 -05:00
2019-11-14 19:06:47 -08:00
2019-11-06 08:55:23 -05:00
2019-10-09 12:06:19 -04:00
2019-11-06 08:55:23 -05:00
2019-07-26 17:01:29 -06:00
2019-11-13 19:09:47 +08:00
2019-07-16 19:23:25 -07:00
2019-12-06 10:47:28 +01:00
2019-08-23 16:39:26 +01:00
2019-10-19 22:55:46 +02:00
2019-11-14 13:07:48 +08:00
2019-12-04 19:44:14 -08:00
2019-10-10 14:55:24 -07:00
2019-12-01 06:29:17 -08:00
2019-11-13 12:15:34 -08:00
2019-12-12 19:00:36 +01:00
2019-11-13 00:33:21 +11:00
2019-11-07 07:00:26 +01:00
2019-08-30 07:27:17 -07:00
2019-08-01 20:51:22 +02:00
2019-08-20 17:05:05 +02:00
2019-07-31 19:03:35 +02:00
2019-11-14 12:20:02 +08:00
2019-10-14 15:04:01 -07:00