History

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.

Daniel Borkmann committed 12 years ago

Commit 4262e5c1 parent 34f9f432 files · +18 −15Browse files

Unified · Split

2 files
  1. include/linux/skbuff.h +18 −0
  2. net/core/dev.c +0 −15
include/linux/skbuff.h+18−0
@@ -2392,6 +2392,24 @@ static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, · 2391 unmodified lines
2392 return buffer;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 */
2405static 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
2395static inline void skb_copy_from_linear_data(const struct sk_buff *skb,2413static inline void skb_copy_from_linear_data(const struct sk_buff *skb,
2396 void *to,2414 void *to,
2397 const unsigned int len)2415 const unsigned int len)
net/core/dev.c+0−15
@@ -2535,21 +2535,6 @@ netdev_features_t netif_skb_features(struct sk_buff *skb) · 2534 unmodified lines
2535}2535}
2536EXPORT_SYMBOL(netif_skb_features);2536EXPORT_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 */
2543static 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
2553int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,2538int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
2554 struct netdev_queue *txq, void *accel_priv)2539 struct netdev_queue *txq, void *accel_priv)
2555{2540{

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t