Lines Matching refs:uarg

1108 	struct ubuf_info *uarg;  in sock_zerocopy_alloc()  local
1117 BUILD_BUG_ON(sizeof(*uarg) > sizeof(skb->cb)); in sock_zerocopy_alloc()
1118 uarg = (void *)skb->cb; in sock_zerocopy_alloc()
1119 uarg->mmp.user = NULL; in sock_zerocopy_alloc()
1121 if (mm_account_pinned_pages(&uarg->mmp, size)) { in sock_zerocopy_alloc()
1126 uarg->callback = sock_zerocopy_callback; in sock_zerocopy_alloc()
1127 uarg->id = ((u32)atomic_inc_return(&sk->sk_zckey)) - 1; in sock_zerocopy_alloc()
1128 uarg->len = 1; in sock_zerocopy_alloc()
1129 uarg->bytelen = size; in sock_zerocopy_alloc()
1130 uarg->zerocopy = 1; in sock_zerocopy_alloc()
1131 refcount_set(&uarg->refcnt, 1); in sock_zerocopy_alloc()
1134 return uarg; in sock_zerocopy_alloc()
1138 static inline struct sk_buff *skb_from_uarg(struct ubuf_info *uarg) in skb_from_uarg() argument
1140 return container_of((void *)uarg, struct sk_buff, cb); in skb_from_uarg()
1144 struct ubuf_info *uarg) in sock_zerocopy_realloc() argument
1146 if (uarg) { in sock_zerocopy_realloc()
1158 bytelen = uarg->bytelen + size; in sock_zerocopy_realloc()
1159 if (uarg->len == USHRT_MAX - 1 || bytelen > byte_limit) { in sock_zerocopy_realloc()
1167 if ((u32)(uarg->id + uarg->len) == next) { in sock_zerocopy_realloc()
1168 if (mm_account_pinned_pages(&uarg->mmp, size)) in sock_zerocopy_realloc()
1170 uarg->len++; in sock_zerocopy_realloc()
1171 uarg->bytelen = bytelen; in sock_zerocopy_realloc()
1176 sock_zerocopy_get(uarg); in sock_zerocopy_realloc()
1178 return uarg; in sock_zerocopy_realloc()
1207 void sock_zerocopy_callback(struct ubuf_info *uarg, bool success) in sock_zerocopy_callback() argument
1209 struct sk_buff *tail, *skb = skb_from_uarg(uarg); in sock_zerocopy_callback()
1217 mm_unaccount_pinned_pages(&uarg->mmp); in sock_zerocopy_callback()
1222 if (!uarg->len || sock_flag(sk, SOCK_DEAD)) in sock_zerocopy_callback()
1225 len = uarg->len; in sock_zerocopy_callback()
1226 lo = uarg->id; in sock_zerocopy_callback()
1227 hi = uarg->id + len - 1; in sock_zerocopy_callback()
1256 void sock_zerocopy_put(struct ubuf_info *uarg) in sock_zerocopy_put() argument
1258 if (uarg && refcount_dec_and_test(&uarg->refcnt)) { in sock_zerocopy_put()
1259 if (uarg->callback) in sock_zerocopy_put()
1260 uarg->callback(uarg, uarg->zerocopy); in sock_zerocopy_put()
1262 consume_skb(skb_from_uarg(uarg)); in sock_zerocopy_put()
1267 void sock_zerocopy_put_abort(struct ubuf_info *uarg, bool have_uref) in sock_zerocopy_put_abort() argument
1269 if (uarg) { in sock_zerocopy_put_abort()
1270 struct sock *sk = skb_from_uarg(uarg)->sk; in sock_zerocopy_put_abort()
1273 uarg->len--; in sock_zerocopy_put_abort()
1276 sock_zerocopy_put(uarg); in sock_zerocopy_put_abort()
1289 struct ubuf_info *uarg) in skb_zerocopy_iter_stream() argument
1298 if (orig_uarg && uarg != orig_uarg) in skb_zerocopy_iter_stream()
1313 skb_zcopy_set(skb, uarg, NULL); in skb_zerocopy_iter_stream()