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
23922392 return buffer;
23932393 }
23942394
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+
23952413 static inline void skb_copy_from_linear_data(const struct sk_buff *skb,
23962414 void *to,
23972415 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
25352535 }
25362536 EXPORT_SYMBOL(netif_skb_features);
25372537
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−
25532538 int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
25542539 struct netdev_queue *txq, void *accel_priv)
25552540 {

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