diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-10-22 08:34:51 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-10-22 08:34:51 -0400 |
commit | c2fb7916927e989ea424e61ce5fe617e54878827 (patch) | |
tree | 02f9d5482075f8931637d82bb697a6470270136a /include/linux/skbuff.h | |
parent | 29de6ce574870a0d3fd157afdbf51c0282e2bf63 (diff) | |
parent | 6f0c0580b70c89094b3422ba81118c7b959c7556 (diff) |
Merge tag 'v3.7-rc2' into drm-intel-next-queued
Linux 3.7-rc2
Backmerge to solve two ugly conflicts:
- uapi. We've already added new ioctl definitions for -next. Do I need to say more?
- wc support gtt ptes. We've had to revert this for snb+ for 3.7 and
also fix a few other things in the code. Now we know how to make it
work on snb+, but to avoid losing the other fixes do the backmerge
first before re-enabling wc gtt ptes on snb+.
And a few other minor things, among them git getting confused in
intel_dp.c and seemingly causing a conflict out of nothing ...
Conflicts:
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_modes.c
include/drm/i915_drm.h
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r-- | include/linux/skbuff.h | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 7632c87da2c9..6a2c34e6d962 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -589,9 +589,6 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size, | |||
589 | return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE); | 589 | return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE); |
590 | } | 590 | } |
591 | 591 | ||
592 | extern void skb_recycle(struct sk_buff *skb); | ||
593 | extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); | ||
594 | |||
595 | extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); | 592 | extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); |
596 | extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); | 593 | extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); |
597 | extern struct sk_buff *skb_clone(struct sk_buff *skb, | 594 | extern struct sk_buff *skb_clone(struct sk_buff *skb, |
@@ -846,13 +843,16 @@ static inline int skb_shared(const struct sk_buff *skb) | |||
846 | * | 843 | * |
847 | * NULL is returned on a memory allocation failure. | 844 | * NULL is returned on a memory allocation failure. |
848 | */ | 845 | */ |
849 | static inline struct sk_buff *skb_share_check(struct sk_buff *skb, | 846 | static inline struct sk_buff *skb_share_check(struct sk_buff *skb, gfp_t pri) |
850 | gfp_t pri) | ||
851 | { | 847 | { |
852 | might_sleep_if(pri & __GFP_WAIT); | 848 | might_sleep_if(pri & __GFP_WAIT); |
853 | if (skb_shared(skb)) { | 849 | if (skb_shared(skb)) { |
854 | struct sk_buff *nskb = skb_clone(skb, pri); | 850 | struct sk_buff *nskb = skb_clone(skb, pri); |
855 | kfree_skb(skb); | 851 | |
852 | if (likely(nskb)) | ||
853 | consume_skb(skb); | ||
854 | else | ||
855 | kfree_skb(skb); | ||
856 | skb = nskb; | 856 | skb = nskb; |
857 | } | 857 | } |
858 | return skb; | 858 | return skb; |
@@ -2642,27 +2642,6 @@ static inline void skb_checksum_none_assert(const struct sk_buff *skb) | |||
2642 | 2642 | ||
2643 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); | 2643 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); |
2644 | 2644 | ||
2645 | static inline bool skb_is_recycleable(const struct sk_buff *skb, int skb_size) | ||
2646 | { | ||
2647 | if (irqs_disabled()) | ||
2648 | return false; | ||
2649 | |||
2650 | if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) | ||
2651 | return false; | ||
2652 | |||
2653 | if (skb_is_nonlinear(skb) || skb->fclone != SKB_FCLONE_UNAVAILABLE) | ||
2654 | return false; | ||
2655 | |||
2656 | skb_size = SKB_DATA_ALIGN(skb_size + NET_SKB_PAD); | ||
2657 | if (skb_end_offset(skb) < skb_size) | ||
2658 | return false; | ||
2659 | |||
2660 | if (skb_shared(skb) || skb_cloned(skb)) | ||
2661 | return false; | ||
2662 | |||
2663 | return true; | ||
2664 | } | ||
2665 | |||
2666 | /** | 2645 | /** |
2667 | * skb_head_is_locked - Determine if the skb->head is locked down | 2646 | * skb_head_is_locked - Determine if the skb->head is locked down |
2668 | * @skb: skb to check | 2647 | * @skb: skb to check |