Lines Matching refs:guehdr
76 static struct guehdr *gue_remcsum(struct sk_buff *skb, struct guehdr *guehdr, in gue_remcsum() argument
87 return guehdr; in gue_remcsum()
91 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_remcsum()
93 skb_remcsum_process(skb, (void *)guehdr + hdrlen, in gue_remcsum()
96 return guehdr; in gue_remcsum()
99 static int gue_control_message(struct sk_buff *skb, struct guehdr *guehdr) in gue_control_message() argument
110 struct guehdr *guehdr; in gue_udp_recv() local
117 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_udp_recv()
121 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
123 optlen = guehdr->hlen << 2; in gue_udp_recv()
130 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
132 hdrlen = sizeof(struct guehdr) + optlen; in gue_udp_recv()
134 if (guehdr->version != 0 || validate_gue_flags(guehdr, optlen)) in gue_udp_recv()
137 hdrlen = sizeof(struct guehdr) + optlen; in gue_udp_recv()
146 data = &guehdr[1]; in gue_udp_recv()
148 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_udp_recv()
154 guehdr = gue_remcsum(skb, guehdr, data + doffset, in gue_udp_recv()
155 hdrlen, guehdr->proto_ctype, in gue_udp_recv()
158 if (!guehdr) in gue_udp_recv()
161 data = &guehdr[1]; in gue_udp_recv()
167 if (unlikely(guehdr->control)) in gue_udp_recv()
168 return gue_control_message(skb, guehdr); in gue_udp_recv()
173 return -guehdr->proto_ctype; in gue_udp_recv()
227 static struct guehdr *gue_gro_remcsum(struct sk_buff *skb, unsigned int off, in gue_gro_remcsum()
228 struct guehdr *guehdr, void *data, in gue_gro_remcsum() argument
237 return guehdr; in gue_gro_remcsum()
242 guehdr = skb_gro_remcsum_process(skb, (void *)guehdr, off, hdrlen, in gue_gro_remcsum()
247 return guehdr; in gue_gro_remcsum()
258 struct guehdr *guehdr; in gue_gro_receive() local
269 len = off + sizeof(*guehdr); in gue_gro_receive()
271 guehdr = skb_gro_header_fast(skb, off); in gue_gro_receive()
273 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
274 if (unlikely(!guehdr)) in gue_gro_receive()
278 optlen = guehdr->hlen << 2; in gue_gro_receive()
282 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
283 if (unlikely(!guehdr)) in gue_gro_receive()
287 if (unlikely(guehdr->control) || guehdr->version != 0 || in gue_gro_receive()
288 validate_gue_flags(guehdr, optlen)) in gue_gro_receive()
291 hdrlen = sizeof(*guehdr) + optlen; in gue_gro_receive()
296 skb_gro_postpull_rcsum(skb, guehdr, hdrlen); in gue_gro_receive()
298 data = &guehdr[1]; in gue_gro_receive()
300 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_gro_receive()
306 guehdr = gue_gro_remcsum(skb, off, guehdr, in gue_gro_receive()
311 if (!guehdr) in gue_gro_receive()
314 data = &guehdr[1]; in gue_gro_receive()
325 const struct guehdr *guehdr2; in gue_gro_receive()
330 guehdr2 = (struct guehdr *)(p->data + off); in gue_gro_receive()
335 if (guehdr->word != guehdr2->word) { in gue_gro_receive()
341 if (guehdr->hlen && memcmp(&guehdr[1], &guehdr2[1], in gue_gro_receive()
342 guehdr->hlen << 2)) { in gue_gro_receive()
350 ops = rcu_dereference(offloads[guehdr->proto_ctype]); in gue_gro_receive()
369 struct guehdr *guehdr = (struct guehdr *)(skb->data + nhoff); in gue_gro_complete() local
375 proto = guehdr->proto_ctype; in gue_gro_complete()
377 guehlen = sizeof(*guehdr) + (guehdr->hlen << 2); in gue_gro_complete()
751 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_encap_hlen()
809 struct guehdr *guehdr; in gue_build_header() local
834 hdrlen = sizeof(struct guehdr) + optlen; in gue_build_header()
838 guehdr = (struct guehdr *)skb->data; in gue_build_header()
840 guehdr->control = 0; in gue_build_header()
841 guehdr->version = 0; in gue_build_header()
842 guehdr->hlen = optlen >> 2; in gue_build_header()
843 guehdr->flags = 0; in gue_build_header()
844 guehdr->proto_ctype = *protocol; in gue_build_header()
846 data = &guehdr[1]; in gue_build_header()
851 guehdr->flags |= GUE_FLAG_PRIV; in gue_build_header()