struct qeth_hdr *hdr) 
struct qeth_hdr *hdr) 
qeth_rebuild_skb_fake_ll(struct qeth_card *card, struct sk_buff *skb,			 struct qeth_hdr *hdr){	struct ethhdr *fake_hdr;	struct iphdr *ip_hdr;	QETH_DBF_TEXT(trace,5,"skbfake");	skb->mac.raw = skb->data - QETH_FAKE_LL_LEN;	/* this is a fake ethernet header */	fake_hdr = (struct ethhdr *) skb->mac.raw;	/* the destination MAC address */	switch (skb->pkt_type){	case PACKET_MULTICAST:		switch (skb->protocol){#ifdef CONFIG_QETH_IPV6		case __constant_htons(ETH_P_IPV6):			ndisc_mc_map((struct in6_addr *)				     skb->data + QETH_FAKE_LL_V6_ADDR_POS,				     fake_hdr->h_dest, card->dev, 0);			break;#endif /* CONFIG_QETH_IPV6 */		case __constant_htons(ETH_P_IP):			ip_hdr = (struct iphdr *)skb->data;			if (card->dev->type == ARPHRD_IEEE802_TR)				ip_tr_mc_map(ip_hdr->daddr, fake_hdr->h_dest);			else				ip_eth_mc_map(ip_hdr->daddr, fake_hdr->h_dest);			break;		default:			memcpy(fake_hdr->h_dest, card->dev->dev_addr, ETH_ALEN);		}		break;	case PACKET_BROADCAST:		memset(fake_hdr->h_dest, 0xff, ETH_ALEN);		break;	default:		memcpy(fake_hdr->h_dest, card->dev->dev_addr, ETH_ALEN);	}	/* the source MAC address */	if (hdr->hdr.l3.ext_flags & QETH_HDR_EXT_SRC_MAC_ADDR)		memcpy(fake_hdr->h_source, &hdr->hdr.l3.dest_addr[2], ETH_ALEN);	else		memset(fake_hdr->h_source, 0, ETH_ALEN);	/* the protocol */	fake_hdr->h_proto = skb->protocol;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e23dd9cdd676323c95fab47dc55123ba18f7e1ff/qeth_main.c/clean/drivers/s390/net/qeth_main.c