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.
Unified · Split
| @@ -2392,6 +2392,24 @@ static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, · 2391 unmodified lines | ||
| 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) |
| @@ -2535,21 +2535,6 @@ netdev_features_t netif_skb_features(struct sk_buff *skb) · 2534 unmodified lines | ||
| 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 | { |