From owner-freebsd-bugs@FreeBSD.ORG Wed Apr 23 14:50:18 2003 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F065C37B404 for ; Wed, 23 Apr 2003 14:50:17 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 13AD443FBF for ; Wed, 23 Apr 2003 14:50:16 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h3NLoFUp087646 for ; Wed, 23 Apr 2003 14:50:15 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h3NLoF42087642; Wed, 23 Apr 2003 14:50:15 -0700 (PDT) Resent-Date: Wed, 23 Apr 2003 14:50:15 -0700 (PDT) Resent-Message-Id: <200304232150.h3NLoF42087642@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Scott Mitchell Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D9FD137B401 for ; Wed, 23 Apr 2003 14:45:19 -0700 (PDT) Received: from mta01-svc.ntlworld.com (mta01-svc.ntlworld.com [62.253.162.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8409943FD7 for ; Wed, 23 Apr 2003 14:45:18 -0700 (PDT) (envelope-from scott@fishballoon.org) Received: from fishballoon.org ([81.104.195.199]) by mta01-svc.ntlworld.com (InterMail vM.4.01.03.37 201-229-121-137-20020806) with ESMTP id <20030423214516.BWDD2283.mta01-svc.ntlworld.com@fishballoon.org> for ; Wed, 23 Apr 2003 22:45:16 +0100 Received: from tuatara.fishballoon.org (tuatara [192.168.1.6]) by fishballoon.org (8.12.8p1/8.12.8) with ESMTP id h3NLiZ4o034918 for ; Wed, 23 Apr 2003 22:44:35 +0100 (BST) (envelope-from scott@tuatara.fishballoon.org) Received: (from scott@localhost) by tuatara.fishballoon.org (8.12.9/8.12.9/Submit) id h3NLiZhL083108; Wed, 23 Apr 2003 22:44:35 +0100 (BST) (envelope-from scott) Message-Id: <200304232144.h3NLiZhL083108@tuatara.fishballoon.org> Date: Wed, 23 Apr 2003 22:44:35 +0100 (BST) From: Scott Mitchell To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/51333: Pass missing CIS data into OLDCARD PCMCIA drivers X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Scott Mitchell List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Apr 2003 21:50:18 -0000 >Number: 51333 >Category: kern >Synopsis: Pass missing CIS data into OLDCARD PCMCIA drivers >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Apr 23 14:50:15 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Scott Mitchell >Release: FreeBSD 5.0-CURRENT i386 >Organization: >Environment: FreeBSD orac 5.0-CURRENT FreeBSD 5.0-CURRENT #3: Wed Apr 9 00:07:38 BST 2003 scott@tuatara:/local/0/obj/local/0/-CURRENT/src/sys/ORAC i386 >Description: The OLDCARD PCMCIA code (in sys/pccard and usr.sbin/pccard) does not pass the two 'additional info' strings from a card's 'version info' CIS tuple into drivers attached using OLDCARD. Furthermore, neither these strings or the 'vendor' and 'product' strings from the same tuple are available to drivers even when they are copied into the kernel-side code, due to a lack of ivar accessors for these strings. These strings are required in order to identify certain cards supported by the xe driver. The attached patch updates pccardd and the kernel-side code to make all four strings available to drivers. Note that this also requires a line to be added to sys/dev/pccard/pccardvar.h for the CIS4_STR ivar tag. >How-To-Repeat: >Fix: Index: sys/dev/pccard/pccardvar.h =================================================================== RCS file: /home/ncvs/src/sys/dev/pccard/pccardvar.h,v retrieving revision 1.34 diff -u -r1.34 pccardvar.h --- sys/dev/pccard/pccardvar.h 14 Nov 2002 05:15:50 -0000 1.34 +++ sys/dev/pccard/pccardvar.h 8 Apr 2003 23:20:21 -0000 @@ -358,6 +358,7 @@ PCCARD_ACCESSOR(vendor_str, VENDOR_STR, char *) PCCARD_ACCESSOR(product_str, PRODUCT_STR, char *) PCCARD_ACCESSOR(cis3_str, CIS3_STR, char *) +PCCARD_ACCESSOR(cis4_str, CIS4_STR, char *) /* shared memory flags */ enum { Index: sys/pccard/cardinfo.h =================================================================== RCS file: /home/ncvs/src/sys/pccard/cardinfo.h,v retrieving revision 1.28 diff -u -r1.28 cardinfo.h --- sys/pccard/cardinfo.h 22 Jul 2002 06:46:10 -0000 1.28 +++ sys/pccard/cardinfo.h 8 Apr 2003 22:35:20 -0000 @@ -147,6 +147,8 @@ uint8_t misc[DEV_MISC_LEN]; /* For any random info */ uint8_t manufstr[DEV_MAX_CIS_LEN]; uint8_t versstr[DEV_MAX_CIS_LEN]; + uint8_t cis3str[DEV_MAX_CIS_LEN]; + uint8_t cis4str[DEV_MAX_CIS_LEN]; uint32_t manufacturer; /* Manufacturer ID */ uint32_t product; /* Product ID */ uint32_t prodext; /* Product ID (extended) */ Index: sys/pccard/pccard.c =================================================================== RCS file: /home/ncvs/src/sys/pccard/pccard.c,v retrieving revision 1.157 diff -u -r1.157 pccard.c --- sys/pccard/pccard.c 3 Mar 2003 12:15:53 -0000 1.157 +++ sys/pccard/pccard.c 8 Apr 2003 23:17:32 -0000 @@ -223,6 +223,8 @@ bcopy(desc->misc, devi->misc, sizeof(desc->misc)); strcpy(devi->manufstr, desc->manufstr); strcpy(devi->versstr, desc->versstr); + strcpy(devi->cis3str, desc->cis3str); + strcpy(devi->cis4str, desc->cis4str); devi->manufacturer = desc->manufacturer; devi->product = desc->product; devi->prodext = desc->prodext; Index: sys/pccard/pccard_nbk.c =================================================================== RCS file: /home/ncvs/src/sys/pccard/pccard_nbk.c,v retrieving revision 1.42 diff -u -r1.42 pccard_nbk.c --- sys/pccard/pccard_nbk.c 31 Jul 2002 20:01:11 -0000 1.42 +++ sys/pccard/pccard_nbk.c 8 Apr 2003 23:06:16 -0000 @@ -322,6 +322,18 @@ case PCCARD_IVAR_PRODEXT: *(u_int16_t *) result = devi->prodext; return (0); + case PCCARD_IVAR_VENDOR_STR: + *(char **) result = devi->manufstr; + break; + case PCCARD_IVAR_PRODUCT_STR: + *(char **) result = devi->versstr; + break; + case PCCARD_IVAR_CIS3_STR: + *(char **) result = devi->cis3str; + break; + case PCCARD_IVAR_CIS4_STR: + *(char **) result = devi->cis4str; + break; } return (ENOENT); } Index: sys/pccard/slot.h =================================================================== RCS file: /home/ncvs/src/sys/pccard/slot.h,v retrieving revision 1.37 diff -u -r1.37 slot.h --- sys/pccard/slot.h 22 Jul 2002 06:46:10 -0000 1.37 +++ sys/pccard/slot.h 8 Apr 2003 22:34:07 -0000 @@ -91,6 +91,8 @@ uint8_t misc[DEV_MISC_LEN]; /* For any random info */ uint8_t manufstr[DEV_MAX_CIS_LEN]; uint8_t versstr[DEV_MAX_CIS_LEN]; + uint8_t cis3str[DEV_MAX_CIS_LEN]; + uint8_t cis4str[DEV_MAX_CIS_LEN]; uint32_t manufacturer; /* Manufacturer ID */ uint32_t product; /* Product ID */ uint32_t prodext; /* Product ID (extended) */ Index: usr.sbin/pccard/pccardd/cardd.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/cardd.c,v retrieving revision 1.78 diff -u -r1.78 cardd.c --- usr.sbin/pccard/pccardd/cardd.c 30 Dec 2002 21:18:14 -0000 1.78 +++ usr.sbin/pccard/pccardd/cardd.c 8 Apr 2003 22:38:06 -0000 @@ -370,6 +370,10 @@ strlcpy(sp->manufstr, sp->cis->manuf, sizeof(sp->manufstr)); if (sp->cis->vers) strlcpy(sp->versstr, sp->cis->vers, sizeof(sp->versstr)); + if (sp->cis->add_info1) + strlcpy(sp->cis3str, sp->cis->add_info1, sizeof(sp->cis3str)); + if (sp->cis->add_info2) + strlcpy(sp->cis4str, sp->cis->add_info2, sizeof(sp->cis4str)); if (cp->ether) { struct ether *e = 0; @@ -994,6 +998,8 @@ drv.prodext = sp->prodext; strlcpy(drv.manufstr, sp->manufstr, sizeof(drv.manufstr)); strlcpy(drv.versstr, sp->versstr, sizeof(drv.versstr)); + strlcpy(drv.cis3str, sp->cis3str, sizeof(drv.cis3str)); + strlcpy(drv.cis4str, sp->cis4str, sizeof(drv.cis4str)); /* * If the driver fails to be connected to the device, * then it may mean that the driver did not recognise it. Index: usr.sbin/pccard/pccardd/cardd.h =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/cardd.h,v retrieving revision 1.29 diff -u -r1.29 cardd.h --- usr.sbin/pccard/pccardd/cardd.h 22 Jul 2002 06:58:24 -0000 1.29 +++ usr.sbin/pccard/pccardd/cardd.h 8 Apr 2003 22:31:17 -0000 @@ -127,6 +127,8 @@ unsigned char eaddr[6]; /* If any */ char manufstr[DEV_MAX_CIS_LEN]; char versstr[DEV_MAX_CIS_LEN]; + char cis3str[DEV_MAX_CIS_LEN]; + char cis4str[DEV_MAX_CIS_LEN]; struct allocblk io; /* I/O block spec */ struct allocblk mem; /* Memory block spec */ int irq; /* Irq value */ >Release-Note: >Audit-Trail: >Unformatted: