!memcmp(skb->data + sizeof(struct qeth_hdr) + 2, skb->dev->broadcast, 6)) { hdr->hdr.l3.flags = QETH_CAST_BROADCAST | QETH_HDR_PASSTHRU; 
!memcmp(skb->data + sizeof(struct qeth_hdr) + sizeof(__u16), skb->dev->broadcast, 6)) { hdr->hdr.l3.flags = QETH_CAST_BROADCAST | QETH_HDR_PASSTHRU; 
qeth_fill_header(struct qeth_card *card, struct qeth_hdr *hdr,		struct sk_buff *skb, int ipv, int cast_type){	QETH_DBF_TEXT(trace, 6, "fillhdr");	memset(hdr, 0, sizeof(struct qeth_hdr));	if (card->options.layer2) {		qeth_layer2_fill_header(card, hdr, skb, cast_type);		return;	}	hdr->hdr.l3.id = QETH_HEADER_TYPE_LAYER3;	hdr->hdr.l3.ext_flags = 0;#ifdef CONFIG_QETH_VLAN	/*	 * before we're going to overwrite this location with next hop ip.	 * v6 uses passthrough, v4 sets the tag in the QDIO header.	 */	if (card->vlangrp && vlan_tx_tag_present(skb)) {		hdr->hdr.l3.ext_flags = (ipv == 4) ?			QETH_HDR_EXT_VLAN_FRAME :			QETH_HDR_EXT_INCLUDE_VLAN_TAG;		hdr->hdr.l3.vlan_id = vlan_tx_tag_get(skb);	}#endif /* CONFIG_QETH_VLAN */	hdr->hdr.l3.length = skb->len - sizeof(struct qeth_hdr);	if (ipv == 4) {	 /* IPv4 */		hdr->hdr.l3.flags = qeth_get_qeth_hdr_flags4(cast_type);		memset(hdr->hdr.l3.dest_addr, 0, 12);		if ((skb->dst) && (skb->dst->neighbour)) {			*((u32 *) (&hdr->hdr.l3.dest_addr[12])) =			    *((u32 *) skb->dst->neighbour->primary_key);		} else {			/* fill in destination address used in ip header */			*((u32 *) (&hdr->hdr.l3.dest_addr[12])) = skb->nh.iph->daddr;		}	} else if (ipv == 6) { /* IPv6 or passthru */		hdr->hdr.l3.flags = qeth_get_qeth_hdr_flags6(cast_type);		if ((skb->dst) && (skb->dst->neighbour)) {			memcpy(hdr->hdr.l3.dest_addr,			       skb->dst->neighbour->primary_key, 16);		} else {			/* fill in destination address used in ip header */			memcpy(hdr->hdr.l3.dest_addr, &skb->nh.ipv6h->daddr, 16);		}	} else { /* passthrough */                if((skb->dev->type == ARPHRD_IEEE802_TR) &&                        !memcmp(skb->data + sizeof(struct qeth_hdr) + 2,                        skb->dev->broadcast, 6)) {                        hdr->hdr.l3.flags = QETH_CAST_BROADCAST |                                                QETH_HDR_PASSTHRU;		} else if (!memcmp(skb->data + sizeof(struct qeth_hdr),			    skb->dev->broadcast, 6)) {   /* broadcast? */			hdr->hdr.l3.flags = QETH_CAST_BROADCAST |						QETH_HDR_PASSTHRU;		} else { 			hdr->hdr.l3.flags = (cast_type == RTN_MULTICAST) ? 				QETH_CAST_MULTICAST | QETH_HDR_PASSTHRU : 				QETH_CAST_UNICAST | QETH_HDR_PASSTHRU;		}	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9a4558193662e933588ee53e0202c103a68c9366/qeth_main.c/clean/drivers/s390/net/qeth_main.c