Lines Matching refs:skb

220 static inline __sum16 __udp_lib_checksum_complete(struct sk_buff *skb)  in __udp_lib_checksum_complete()  argument
222 return (UDP_SKB_CB(skb)->cscov == skb->len ? in __udp_lib_checksum_complete()
223 __skb_checksum_complete(skb) : in __udp_lib_checksum_complete()
224 __skb_checksum_complete_head(skb, UDP_SKB_CB(skb)->cscov)); in __udp_lib_checksum_complete()
227 static inline int udp_lib_checksum_complete(struct sk_buff *skb) in udp_lib_checksum_complete() argument
229 return !skb_csum_unnecessary(skb) && in udp_lib_checksum_complete()
230 __udp_lib_checksum_complete(skb); in udp_lib_checksum_complete()
239 static inline __wsum udp_csum_outgoing(struct sock *sk, struct sk_buff *skb) in udp_csum_outgoing() argument
241 __wsum csum = csum_partial(skb_transport_header(skb), in udp_csum_outgoing()
243 skb_queue_walk(&sk->sk_write_queue, skb) { in udp_csum_outgoing()
244 csum = csum_add(csum, skb->csum); in udp_csum_outgoing()
249 static inline __wsum udp_csum(struct sk_buff *skb) in udp_csum() argument
251 __wsum csum = csum_partial(skb_transport_header(skb), in udp_csum()
252 sizeof(struct udphdr), skb->csum); in udp_csum()
254 for (skb = skb_shinfo(skb)->frag_list; skb; skb = skb->next) { in udp_csum()
255 csum = csum_add(csum, skb->csum); in udp_csum()
266 void udp_set_csum(bool nocheck, struct sk_buff *skb,
269 static inline void udp_csum_pull_header(struct sk_buff *skb) in udp_csum_pull_header() argument
271 if (!skb->csum_valid && skb->ip_summed == CHECKSUM_NONE) in udp_csum_pull_header()
272 skb->csum = csum_partial(skb->data, sizeof(struct udphdr), in udp_csum_pull_header()
273 skb->csum); in udp_csum_pull_header()
274 skb_pull_rcsum(skb, sizeof(struct udphdr)); in udp_csum_pull_header()
275 UDP_SKB_CB(skb)->cscov -= sizeof(struct udphdr); in udp_csum_pull_header()
278 typedef struct sock *(*udp_lookup_t)(const struct sk_buff *skb, __be16 sport,
281 void udp_v6_early_demux(struct sk_buff *skb);
333 static inline __be16 udp_flow_src_port(struct net *net, struct sk_buff *skb, in udp_flow_src_port() argument
343 hash = skb_get_hash(skb); in udp_flow_src_port()
349 hash = jhash(skb->data, 2 * ETH_ALEN, in udp_flow_src_port()
350 (__force u32) skb->protocol); in udp_flow_src_port()
387 void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len);
388 int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb);
389 void udp_skb_destructor(struct sock *sk, struct sk_buff *skb);
400 int udp_v4_early_demux(struct sk_buff *skb);
409 void udp4_hwcsum(struct sk_buff *skb, __be32 src, __be32 dst);
410 int udp_rcv(struct sk_buff *skb);
417 struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb,
430 struct udp_table *tbl, struct sk_buff *skb);
431 struct sock *udp4_lib_lookup_skb(const struct sk_buff *skb,
441 struct sk_buff *skb);
442 struct sock *udp6_lib_lookup_skb(const struct sk_buff *skb,
468 static inline struct udp_dev_scratch *udp_skb_scratch(struct sk_buff *skb) in udp_skb_scratch() argument
470 return (struct udp_dev_scratch *)&skb->dev_scratch; in udp_skb_scratch()
474 static inline unsigned int udp_skb_len(struct sk_buff *skb) in udp_skb_len() argument
476 return udp_skb_scratch(skb)->len; in udp_skb_len()
479 static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb) in udp_skb_csum_unnecessary() argument
481 return udp_skb_scratch(skb)->csum_unnecessary; in udp_skb_csum_unnecessary()
484 static inline bool udp_skb_is_linear(struct sk_buff *skb) in udp_skb_is_linear() argument
486 return udp_skb_scratch(skb)->is_linear; in udp_skb_is_linear()
490 static inline unsigned int udp_skb_len(struct sk_buff *skb) in udp_skb_len() argument
492 return skb->len; in udp_skb_len()
495 static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb) in udp_skb_csum_unnecessary() argument
497 return skb_csum_unnecessary(skb); in udp_skb_csum_unnecessary()
500 static inline bool udp_skb_is_linear(struct sk_buff *skb) in udp_skb_is_linear() argument
502 return !skb_is_nonlinear(skb); in udp_skb_is_linear()
506 static inline int copy_linear_skb(struct sk_buff *skb, int len, int off, in copy_linear_skb() argument
509 return copy_to_iter_full(skb->data + off, len, to) ? 0 : -EFAULT; in copy_linear_skb()
585 struct sk_buff *skb, bool ipv4) in udp_rcv_segment() argument
595 if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP) { in udp_rcv_segment()
614 if (skb->pkt_type == PACKET_LOOPBACK) in udp_rcv_segment()
615 skb->ip_summed = CHECKSUM_PARTIAL; in udp_rcv_segment()
620 segs = __skb_gso_segment(skb, features, false); in udp_rcv_segment()
622 drop_count = skb_shinfo(skb)->gso_segs; in udp_rcv_segment()
626 consume_skb(skb); in udp_rcv_segment()
632 kfree_skb(skb); in udp_rcv_segment()
636 static inline void udp_post_segment_fix_csum(struct sk_buff *skb) in udp_post_segment_fix_csum() argument
639 WARN_ON_ONCE(UDP_SKB_CB(skb)->partial_cov); in udp_post_segment_fix_csum()
654 UDP_SKB_CB(skb)->cscov = skb->len; in udp_post_segment_fix_csum()
655 if (skb->ip_summed == CHECKSUM_NONE && !skb->csum_valid) in udp_post_segment_fix_csum()
656 skb->csum_valid = 1; in udp_post_segment_fix_csum()