Lines Matching +full:packet +full:- +full:based

1 // SPDX-License-Identifier: GPL-2.0-or-later
7 * FDDI-type device handling.
13 * fddi.c is based on previous eth.c and tr.c work by
17 * Florian La Roche, <[email protected]-sb.de>
56 hl=FDDI_K_8022_HLEN-3; in fddi_header()
58 fddi->fc = FDDI_FC_K_ASYNC_LLC_DEF; in fddi_header()
61 fddi->hdr.llc_snap.dsap = FDDI_EXTENDED_SAP; in fddi_header()
62 fddi->hdr.llc_snap.ssap = FDDI_EXTENDED_SAP; in fddi_header()
63 fddi->hdr.llc_snap.ctrl = FDDI_UI_CMD; in fddi_header()
64 fddi->hdr.llc_snap.oui[0] = 0x00; in fddi_header()
65 fddi->hdr.llc_snap.oui[1] = 0x00; in fddi_header()
66 fddi->hdr.llc_snap.oui[2] = 0x00; in fddi_header()
67 fddi->hdr.llc_snap.ethertype = htons(type); in fddi_header()
73 memcpy(fddi->saddr, saddr, dev->addr_len); in fddi_header()
75 memcpy(fddi->saddr, dev->dev_addr, dev->addr_len); in fddi_header()
79 memcpy(fddi->daddr, daddr, dev->addr_len); in fddi_header()
83 return -hl; in fddi_header()
87 * Determine the packet's protocol ID and fill in skb fields.
88 * This routine is called before an incoming packet is passed
90 * the proper pointer to the start of packet data (skb->data).
95 struct fddihdr *fddi = (struct fddihdr *)skb->data; in fddi_type_trans()
100 * to start of packet data. Assume 802.2 SNAP frames for now. in fddi_type_trans()
103 skb->dev = dev; in fddi_type_trans()
106 if(fddi->hdr.llc_8022_1.dsap==0xe0) in fddi_type_trans()
108 skb_pull(skb, FDDI_K_8022_HLEN-3); in fddi_type_trans()
114 type=fddi->hdr.llc_snap.ethertype; in fddi_type_trans()
117 /* Set packet type based on destination address and flag settings */ in fddi_type_trans()
119 if (*fddi->daddr & 0x01) in fddi_type_trans()
121 if (memcmp(fddi->daddr, dev->broadcast, FDDI_K_ALEN) == 0) in fddi_type_trans()
122 skb->pkt_type = PACKET_BROADCAST; in fddi_type_trans()
124 skb->pkt_type = PACKET_MULTICAST; in fddi_type_trans()
127 else if (dev->flags & IFF_PROMISC) in fddi_type_trans()
129 if (memcmp(fddi->daddr, dev->dev_addr, FDDI_K_ALEN)) in fddi_type_trans()
130 skb->pkt_type = PACKET_OTHERHOST; in fddi_type_trans()
147 dev->header_ops = &fddi_header_ops; in fddi_setup()
148 dev->type = ARPHRD_FDDI; in fddi_setup()
149 dev->hard_header_len = FDDI_K_SNAP_HLEN+3; /* Assume 802.2 SNAP hdr len + 3 pad bytes */ in fddi_setup()
150 dev->mtu = FDDI_K_SNAP_DLEN; /* Assume max payload of 802.2 SNAP frame */ in fddi_setup()
151 dev->min_mtu = FDDI_K_SNAP_HLEN; in fddi_setup()
152 dev->max_mtu = FDDI_K_SNAP_DLEN; in fddi_setup()
153 dev->addr_len = FDDI_K_ALEN; in fddi_setup()
154 dev->tx_queue_len = 100; /* Long queues on FDDI */ in fddi_setup()
155 dev->flags = IFF_BROADCAST | IFF_MULTICAST; in fddi_setup()
157 memset(dev->broadcast, 0xFF, FDDI_K_ALEN); in fddi_setup()
161 * alloc_fddidev - Register FDDI device
162 * @sizeof_priv: Size of additional driver-private structure to be allocated
165 * Fill in the fields of the device structure with FDDI-generic values.
168 * size @sizeof_priv. A 32-byte (not bit) alignment is enforced for