/* * currently GuestLAN  does only deliver all zeros on query arp, * even though arp processing is supported (according to IPA supp. * funcs flags); since all zeros is no valueable information, * we say EOPNOTSUPP for all ARP functions */ /*if (card->info.guestlan) return -EOPNOTSUPP; */ 
qeth_arp_query(struct qeth_card *card, char *udata){	struct qeth_cmd_buffer *iob;	struct qeth_arp_query_info qinfo = {0, };	int tmp;	int rc;	QETH_DBF_TEXT(trace,3,"arpquery");	/*	 * currently GuestLAN  does only deliver all zeros on query arp,	 * even though arp processing is supported (according to IPA supp.	 * funcs flags); since all zeros is no valueable information,	 * we say EOPNOTSUPP for all ARP functions	 */	/*if (card->info.guestlan)		return -EOPNOTSUPP; */	if (!qeth_is_supported(card,/*IPA_QUERY_ARP_ADDR_INFO*/			       IPA_ARP_PROCESSING)) {		PRINT_WARN("ARP processing not supported "			   "on %s!\n", QETH_CARD_IFNAME(card));		return -EOPNOTSUPP;	}	/* get size of userspace buffer and mask_bits -> 6 bytes */	if (copy_from_user(&qinfo, udata, 6))		return -EFAULT;	if (!(qinfo.udata = kmalloc(qinfo.udata_len, GFP_KERNEL)))		return -ENOMEM;	memset(qinfo.udata, 0, qinfo.udata_len);	qinfo.udata_offset = QETH_QARP_ENTRIES_OFFSET;	iob = qeth_get_setassparms_cmd(card, IPA_ARP_PROCESSING,				       IPA_CMD_ASS_ARP_QUERY_INFO,				       sizeof(int),QETH_PROT_IPV4);	rc = qeth_send_ipa_arp_cmd(card, iob,				   QETH_SETASS_BASE_LEN+QETH_ARP_CMD_LEN,				   qeth_arp_query_cb, (void *)&qinfo);	if (rc) {		tmp = rc;		PRINT_WARN("Error while querying ARP cache on %s: %s "			   "(0x%x/%d)\n",			   QETH_CARD_IFNAME(card), qeth_arp_get_error_cause(&rc),			   tmp, tmp);		copy_to_user(udata, qinfo.udata, 4);	} else {		copy_to_user(udata, qinfo.udata, qinfo.udata_len);	}	kfree(qinfo.udata);	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f3d242e8f2bf12cb45eb35b7d2e69483d1209b13/qeth_main.c/buggy/drivers/s390/net/qeth_main.c