Lines Matching refs:skb

69 static int (*batadv_rx_handler[256])(struct sk_buff *skb,
353 * batadv_skb_set_priority() - sets skb priority according to packet content
354 * @skb: the packet to be sent
360 void batadv_skb_set_priority(struct sk_buff *skb, int offset)
369 if (skb->priority >= 256 && skb->priority <= 263)
372 ethhdr = skb_header_pointer(skb, offset, sizeof(*ethhdr), &ethhdr_tmp);
378 vhdr = skb_header_pointer(skb, offset + sizeof(*vhdr),
386 ip_hdr = skb_header_pointer(skb, offset + sizeof(*ethhdr),
393 ip6_hdr = skb_header_pointer(skb, offset + sizeof(*ethhdr),
403 skb->priority = prio + 256;
406 static int batadv_recv_unhandled_packet(struct sk_buff *skb,
409 kfree_skb(skb);
420 * @skb: the received packet
427 int batadv_batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
446 skb = skb_share_check(skb, GFP_ATOMIC);
448 /* skb was released by skb_share_check() */
449 if (!skb)
453 if (unlikely(!pskb_may_pull(skb, 2)))
457 if (unlikely(skb->mac_len != ETH_HLEN || !skb_mac_header(skb)))
472 batadv_ogm_packet = (struct batadv_ogm_packet *)skb->data;
482 memset(skb->cb, 0, sizeof(struct batadv_skb_cb));
485 (*batadv_rx_handler[idx])(skb, hard_iface);
496 kfree_skb(skb);
564 int (*curr)(struct sk_buff *skb,
588 * @skb: skb pointing to fragmented socket buffers
589 * @payload_ptr: Pointer to position inside the head buffer of the skb
592 * payload_ptr must always point to an address in the skb head buffer and not to
597 __be32 batadv_skb_crc32(struct sk_buff *skb, u8 *payload_ptr)
601 unsigned int to = skb->len;
607 from = (unsigned int)(payload_ptr - skb->data);
609 skb_prepare_seq_read(skb, from, to, &st);
619 * batadv_get_vid() - extract the VLAN identifier from skb if any
620 * @skb: the buffer containing the packet
624 * skb is vlan tagged. Otherwise BATADV_NO_FLAGS.
626 unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len)
628 struct ethhdr *ethhdr = (struct ethhdr *)(skb->data + header_len);
635 if (!pskb_may_pull(skb, header_len + VLAN_ETH_HLEN))
638 vhdr = (struct vlan_ethhdr *)(skb->data + header_len);