Lines Matching refs:skb
279 struct sk_buff *skb = *skb_p; in fr_hard_header() local
281 switch (skb->protocol) { in fr_hard_header()
284 skb_push(skb, head_len); in fr_hard_header()
285 skb->data[3] = NLPID_CCITT_ANSI_LMI; in fr_hard_header()
290 skb_push(skb, head_len); in fr_hard_header()
291 skb->data[3] = NLPID_CISCO_LMI; in fr_hard_header()
296 skb_push(skb, head_len); in fr_hard_header()
297 skb->data[3] = NLPID_IP; in fr_hard_header()
302 skb_push(skb, head_len); in fr_hard_header()
303 skb->data[3] = NLPID_IPV6; in fr_hard_header()
308 if (skb_headroom(skb) < head_len) { in fr_hard_header()
309 struct sk_buff *skb2 = skb_realloc_headroom(skb, in fr_hard_header()
313 dev_kfree_skb(skb); in fr_hard_header()
314 skb = *skb_p = skb2; in fr_hard_header()
316 skb_push(skb, head_len); in fr_hard_header()
317 skb->data[3] = FR_PAD; in fr_hard_header()
318 skb->data[4] = NLPID_SNAP; in fr_hard_header()
319 skb->data[5] = FR_PAD; in fr_hard_header()
320 skb->data[6] = 0x80; in fr_hard_header()
321 skb->data[7] = 0xC2; in fr_hard_header()
322 skb->data[8] = 0x00; in fr_hard_header()
323 skb->data[9] = 0x07; /* bridged Ethernet frame w/out FCS */ in fr_hard_header()
328 skb_push(skb, head_len); in fr_hard_header()
329 skb->data[3] = FR_PAD; in fr_hard_header()
330 skb->data[4] = NLPID_SNAP; in fr_hard_header()
331 skb->data[5] = FR_PAD; in fr_hard_header()
332 skb->data[6] = FR_PAD; in fr_hard_header()
333 skb->data[7] = FR_PAD; in fr_hard_header()
334 *(__be16*)(skb->data + 8) = skb->protocol; in fr_hard_header()
337 dlci_to_q922(skb->data, dlci); in fr_hard_header()
338 skb->data[2] = FR_UI; in fr_hard_header()
411 static netdev_tx_t pvc_xmit(struct sk_buff *skb, struct net_device *dev) in pvc_xmit() argument
417 int pad = ETH_ZLEN - skb->len; in pvc_xmit()
419 int len = skb->len; in pvc_xmit()
420 if (skb_tailroom(skb) < pad) in pvc_xmit()
421 if (pskb_expand_head(skb, 0, pad, in pvc_xmit()
424 dev_kfree_skb(skb); in pvc_xmit()
427 skb_put(skb, pad); in pvc_xmit()
428 memset(skb->data + len, 0, pad); in pvc_xmit()
430 skb->protocol = cpu_to_be16(ETH_P_802_3); in pvc_xmit()
432 if (!fr_hard_header(&skb, pvc->dlci)) { in pvc_xmit()
433 dev->stats.tx_bytes += skb->len; in pvc_xmit()
437 skb->dev = pvc->frad; in pvc_xmit()
438 dev_queue_xmit(skb); in pvc_xmit()
444 dev_kfree_skb(skb); in pvc_xmit()
472 struct sk_buff *skb; in fr_lmi_send() local
489 skb = dev_alloc_skb(len); in fr_lmi_send()
490 if (!skb) { in fr_lmi_send()
494 memset(skb->data, 0, len); in fr_lmi_send()
495 skb_reserve(skb, 4); in fr_lmi_send()
497 skb->protocol = cpu_to_be16(NLPID_CISCO_LMI); in fr_lmi_send()
498 fr_hard_header(&skb, LMI_CISCO_DLCI); in fr_lmi_send()
500 skb->protocol = cpu_to_be16(NLPID_CCITT_ANSI_LMI); in fr_lmi_send()
501 fr_hard_header(&skb, LMI_CCITT_ANSI_DLCI); in fr_lmi_send()
503 data = skb_tail_pointer(skb); in fr_lmi_send()
557 skb_put(skb, i); in fr_lmi_send()
558 skb->priority = TC_PRIO_CONTROL; in fr_lmi_send()
559 skb->dev = dev; in fr_lmi_send()
560 skb_reset_network_header(skb); in fr_lmi_send()
562 dev_queue_xmit(skb); in fr_lmi_send()
653 static int fr_lmi_recv(struct net_device *dev, struct sk_buff *skb) in fr_lmi_recv() argument
662 if (skb->len < (lmi == LMI_ANSI ? LMI_ANSI_LENGTH : in fr_lmi_recv()
668 if (skb->data[3] != (lmi == LMI_CISCO ? NLPID_CISCO_LMI : in fr_lmi_recv()
674 if (skb->data[4] != LMI_CALLREF) { in fr_lmi_recv()
676 skb->data[4]); in fr_lmi_recv()
680 if (skb->data[5] != (dce ? LMI_STATUS_ENQUIRY : LMI_STATUS)) { in fr_lmi_recv()
682 skb->data[5]); in fr_lmi_recv()
687 if (skb->data[6] != LMI_ANSI_LOCKSHIFT) { in fr_lmi_recv()
689 skb->data[6]); in fr_lmi_recv()
696 if (skb->data[i] != (lmi == LMI_CCITT ? LMI_CCITT_REPTYPE : in fr_lmi_recv()
699 skb->data[i]); in fr_lmi_recv()
703 if (skb->data[++i] != LMI_REPT_LEN) { in fr_lmi_recv()
705 skb->data[i]); in fr_lmi_recv()
709 reptype = skb->data[++i]; in fr_lmi_recv()
716 if (skb->data[++i] != (lmi == LMI_CCITT ? LMI_CCITT_ALIVE : in fr_lmi_recv()
719 skb->data[i]); in fr_lmi_recv()
723 if (skb->data[++i] != LMI_INTEG_LEN) { in fr_lmi_recv()
725 skb->data[i]); in fr_lmi_recv()
730 state(hdlc)->rxseq = skb->data[i++]; /* TX sequence from peer */ in fr_lmi_recv()
731 rxseq = skb->data[i++]; /* Should confirm our sequence */ in fr_lmi_recv()
792 while (skb->len >= i + 2 + stat_len) { in fr_lmi_recv()
797 if (skb->data[i] != (lmi == LMI_CCITT ? LMI_CCITT_PVCSTAT : in fr_lmi_recv()
800 skb->data[i]); in fr_lmi_recv()
804 if (skb->data[++i] != stat_len) { in fr_lmi_recv()
806 skb->data[i]); in fr_lmi_recv()
811 new = !! (skb->data[i + 2] & 0x08); in fr_lmi_recv()
812 active = !! (skb->data[i + 2] & 0x02); in fr_lmi_recv()
814 dlci = (skb->data[i] << 8) | skb->data[i + 1]; in fr_lmi_recv()
815 bw = (skb->data[i + 3] << 16) | in fr_lmi_recv()
816 (skb->data[i + 4] << 8) | in fr_lmi_recv()
817 (skb->data[i + 5]); in fr_lmi_recv()
819 dlci = ((skb->data[i] & 0x3F) << 4) | in fr_lmi_recv()
820 ((skb->data[i + 1] & 0x78) >> 3); in fr_lmi_recv()
869 static int fr_rx(struct sk_buff *skb) in fr_rx() argument
871 struct net_device *frad = skb->dev; in fr_rx()
873 struct fr_hdr *fh = (struct fr_hdr *)skb->data; in fr_rx()
874 u8 *data = skb->data; in fr_rx()
879 if (skb->len <= 4 || fh->ea1 || data[2] != FR_UI) in fr_rx()
882 dlci = q922_to_dlci(skb->data); in fr_rx()
889 if (fr_lmi_recv(frad, skb)) in fr_rx()
891 dev_kfree_skb_any(skb); in fr_rx()
901 dev_kfree_skb_any(skb); in fr_rx()
922 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) { in fr_rx()
928 skb_pull(skb, 4); /* Remove 4-byte header (hdr, UI, NLPID) */ in fr_rx()
930 skb->protocol = htons(ETH_P_IP); in fr_rx()
933 skb_pull(skb, 4); /* Remove 4-byte header (hdr, UI, NLPID) */ in fr_rx()
935 skb->protocol = htons(ETH_P_IPV6); in fr_rx()
937 } else if (skb->len > 10 && data[3] == FR_PAD && in fr_rx()
941 skb_pull(skb, 10); in fr_rx()
949 skb->protocol = htons(pid); in fr_rx()
954 skb->protocol = eth_type_trans(skb, dev); in fr_rx()
960 dev_kfree_skb_any(skb); in fr_rx()
965 data[3], skb->len); in fr_rx()
966 dev_kfree_skb_any(skb); in fr_rx()
972 dev->stats.rx_bytes += skb->len; in fr_rx()
975 skb->dev = dev; in fr_rx()
976 netif_rx(skb); in fr_rx()
979 dev_kfree_skb_any(skb); in fr_rx()
985 dev_kfree_skb_any(skb); in fr_rx()