Commit 4262e5ccbbb5171abd2921eed16ed339633d6478
Committed by
David S. Miller
1 parent
34f9f43710
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
net: dev: move inline skb_needs_linearize helper to header
As we need it elsewhere, move the inline helper function of skb_needs_linearize() over to skbuff.h include file. While at it, also convert the return to 'bool' instead of 'int' and add a proper kernel doc. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 2 changed files with 18 additions and 15 deletions Side-by-side Diff
include/linux/skbuff.h
... | ... | @@ -2392,6 +2392,24 @@ |
2392 | 2392 | return buffer; |
2393 | 2393 | } |
2394 | 2394 | |
2395 | +/** | |
2396 | + * skb_needs_linearize - check if we need to linearize a given skb | |
2397 | + * depending on the given device features. | |
2398 | + * @skb: socket buffer to check | |
2399 | + * @features: net device features | |
2400 | + * | |
2401 | + * Returns true if either: | |
2402 | + * 1. skb has frag_list and the device doesn't support FRAGLIST, or | |
2403 | + * 2. skb is fragmented and the device does not support SG. | |
2404 | + */ | |
2405 | +static inline bool skb_needs_linearize(struct sk_buff *skb, | |
2406 | + netdev_features_t features) | |
2407 | +{ | |
2408 | + return skb_is_nonlinear(skb) && | |
2409 | + ((skb_has_frag_list(skb) && !(features & NETIF_F_FRAGLIST)) || | |
2410 | + (skb_shinfo(skb)->nr_frags && !(features & NETIF_F_SG))); | |
2411 | +} | |
2412 | + | |
2395 | 2413 | static inline void skb_copy_from_linear_data(const struct sk_buff *skb, |
2396 | 2414 | void *to, |
2397 | 2415 | const unsigned int len) |
net/core/dev.c
... | ... | @@ -2535,21 +2535,6 @@ |
2535 | 2535 | } |
2536 | 2536 | EXPORT_SYMBOL(netif_skb_features); |
2537 | 2537 | |
2538 | -/* | |
2539 | - * Returns true if either: | |
2540 | - * 1. skb has frag_list and the device doesn't support FRAGLIST, or | |
2541 | - * 2. skb is fragmented and the device does not support SG. | |
2542 | - */ | |
2543 | -static inline int skb_needs_linearize(struct sk_buff *skb, | |
2544 | - netdev_features_t features) | |
2545 | -{ | |
2546 | - return skb_is_nonlinear(skb) && | |
2547 | - ((skb_has_frag_list(skb) && | |
2548 | - !(features & NETIF_F_FRAGLIST)) || | |
2549 | - (skb_shinfo(skb)->nr_frags && | |
2550 | - !(features & NETIF_F_SG))); | |
2551 | -} | |
2552 | - | |
2553 | 2538 | int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, |
2554 | 2539 | struct netdev_queue *txq, void *accel_priv) |
2555 | 2540 | { |