diff options
Diffstat (limited to 'include/linux/skb_array.h')
| -rw-r--r-- | include/linux/skb_array.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/linux/skb_array.h b/include/linux/skb_array.h index f4dfade428f0..35226cd4efb0 100644 --- a/include/linux/skb_array.h +++ b/include/linux/skb_array.h | |||
| @@ -97,21 +97,46 @@ static inline struct sk_buff *skb_array_consume(struct skb_array *a) | |||
| 97 | return ptr_ring_consume(&a->ring); | 97 | return ptr_ring_consume(&a->ring); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | static inline int skb_array_consume_batched(struct skb_array *a, | ||
| 101 | struct sk_buff **array, int n) | ||
| 102 | { | ||
| 103 | return ptr_ring_consume_batched(&a->ring, (void **)array, n); | ||
| 104 | } | ||
| 105 | |||
| 100 | static inline struct sk_buff *skb_array_consume_irq(struct skb_array *a) | 106 | static inline struct sk_buff *skb_array_consume_irq(struct skb_array *a) |
| 101 | { | 107 | { |
| 102 | return ptr_ring_consume_irq(&a->ring); | 108 | return ptr_ring_consume_irq(&a->ring); |
| 103 | } | 109 | } |
| 104 | 110 | ||
| 111 | static inline int skb_array_consume_batched_irq(struct skb_array *a, | ||
| 112 | struct sk_buff **array, int n) | ||
| 113 | { | ||
| 114 | return ptr_ring_consume_batched_irq(&a->ring, (void **)array, n); | ||
| 115 | } | ||
| 116 | |||
| 105 | static inline struct sk_buff *skb_array_consume_any(struct skb_array *a) | 117 | static inline struct sk_buff *skb_array_consume_any(struct skb_array *a) |
| 106 | { | 118 | { |
| 107 | return ptr_ring_consume_any(&a->ring); | 119 | return ptr_ring_consume_any(&a->ring); |
| 108 | } | 120 | } |
| 109 | 121 | ||
| 122 | static inline int skb_array_consume_batched_any(struct skb_array *a, | ||
| 123 | struct sk_buff **array, int n) | ||
| 124 | { | ||
| 125 | return ptr_ring_consume_batched_any(&a->ring, (void **)array, n); | ||
| 126 | } | ||
| 127 | |||
| 128 | |||
| 110 | static inline struct sk_buff *skb_array_consume_bh(struct skb_array *a) | 129 | static inline struct sk_buff *skb_array_consume_bh(struct skb_array *a) |
| 111 | { | 130 | { |
| 112 | return ptr_ring_consume_bh(&a->ring); | 131 | return ptr_ring_consume_bh(&a->ring); |
| 113 | } | 132 | } |
| 114 | 133 | ||
| 134 | static inline int skb_array_consume_batched_bh(struct skb_array *a, | ||
| 135 | struct sk_buff **array, int n) | ||
| 136 | { | ||
| 137 | return ptr_ring_consume_batched_bh(&a->ring, (void **)array, n); | ||
| 138 | } | ||
| 139 | |||
| 115 | static inline int __skb_array_len_with_tag(struct sk_buff *skb) | 140 | static inline int __skb_array_len_with_tag(struct sk_buff *skb) |
| 116 | { | 141 | { |
| 117 | if (likely(skb)) { | 142 | if (likely(skb)) { |
| @@ -156,6 +181,12 @@ static void __skb_array_destroy_skb(void *ptr) | |||
| 156 | kfree_skb(ptr); | 181 | kfree_skb(ptr); |
| 157 | } | 182 | } |
| 158 | 183 | ||
| 184 | static inline void skb_array_unconsume(struct skb_array *a, | ||
| 185 | struct sk_buff **skbs, int n) | ||
| 186 | { | ||
| 187 | ptr_ring_unconsume(&a->ring, (void **)skbs, n, __skb_array_destroy_skb); | ||
| 188 | } | ||
| 189 | |||
| 159 | static inline int skb_array_resize(struct skb_array *a, int size, gfp_t gfp) | 190 | static inline int skb_array_resize(struct skb_array *a, int size, gfp_t gfp) |
| 160 | { | 191 | { |
| 161 | return ptr_ring_resize(&a->ring, size, gfp, __skb_array_destroy_skb); | 192 | return ptr_ring_resize(&a->ring, size, gfp, __skb_array_destroy_skb); |
