wi driver issue: Hermes Card functionality changed

Benjamin Close cisbjc at cs.unisa.edu.au
Thu May 1 19:09:08 PDT 2003


Hi All,
    I've been trying to work out why my lucent card no longer works with 
dstumbler.
Yes I know I should be using a prism card, but the lucent card used to 
work reasonably well finding active acess points, it just couldn't find 
them all.

First a bit of background:

FreeBSD draco.nodomain.yet 5.0-CURRENT FreeBSD 5.0-CURRENT #0: Thu Apr  
3 14:56:50 CST 2003   
wi0: <WaveLAN/IEEE> at port 0x100-0x13f irq 10 function 0 config 1 on 
pccard1
wi0: 802.11 address: 00:60:1d:f1:5a:ce
wi0: using Lucent Technologies, WaveLAN/IEEE
wi0: Lucent Firmware: Station (8.10.1)
wi0: supported rates: 1Mbps 2Mbps 5.5Mbps 11Mbps

I narrowed the problem down to a change in the wi driver. File if_wi.c 
-r1.121 -r1.122 (NetBSD driver merge).

Specifically wi_ioctl used to handle SIOCSWAVELAN to do:
<snip>
/*
 * if we're getting a scan request from a wavelan card
 * (non-prism2), send out a cmd_inquire to the card to scan
 * results for the scan will be received through the info
 * interrupt handler. otherwise the scan request can be
 * directly handled by a prism2 card's rid interface.
 */
} else if (wreq.wi_type == WI_RID_SCAN_REQ &&
    sc->sc_firmware_type == WI_LUCENT) {
wi_cmd(sc, WI_CMD_INQUIRE, WI_INFO_SCAN_RESULTS, 0, 0);


After the change:

SIOCSWAVELAN-> SIOCSIFGENERIC
and so:

wi_ioctl -> wi_set_cfg

The WI_RID_SCAN_REQ case is not handled by wi_set_cfg so the default 
case occurrs:

default:
        if (sc->sc_enabled) {
            error = wi_write_rid(sc, wreq.wi_type, wreq.wi_val,
                len);
            if (error)
                break;
        }
        error = ieee80211_cfgset(ifp, cmd, data);
        break;

Now, the Lucent card does not support the WI_RID_SCAN_REQ.
So either wi_write_rid or ieee80211_cfgset fail (haven't worked out 
which) and dstumbler ends up with an ioctl: Operation not supported by 
device.

Is there anyway to modify wi_set_cfg to handle the WI_RID_SCAN_REQ and 
pass the correct parameter WI_INFO_SCAN_RESULTS in order to make 
dstumbler work as it did in FreeBSD 4.8 & FreeBSD 5.0-Release? Or is it 
a case of API change, fix the app?

Cheers,
    Benjamin

-- 
3D Research Associate / System Administrator     +61 8 8302 3669
School of Computer and Information Science       Room D1-07, ML Campus
University of South Australia                    Mawson Lakes Blvd.
Benjamin.Close at cs.unisa.edu.au                   South Australia, 5095
F00D C83D 5F7E 5561 DF91  B74D E602 CAA3 4842 B5B4




More information about the freebsd-mobile mailing list