Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Nov 2005 19:33:47 +0000 (GMT)
From:      wpaul@FreeBSD.ORG (Bill Paul)
To:        graham@bitmap.net (Graham Bakay)
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: ndis 64-bit Broadcom 4318 on a Compaq R4125
Message-ID:  <20051116193347.009E516A420@hub.freebsd.org>
In-Reply-To: <437A6572.4060604@bitmap.net> from Graham Bakay at "Nov 15, 2005 10:47:14 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
> Hi there,
> 
> I'm trying to get ndis working with a 64-bit wireless driver on FreeBSD 
> 6.0 amd64. The windows driver works using ndis on Ubuntu.
> 
> I've used ndisgen to create the kernel module. When I try to load it, I 
> get the following:
> 
> no match for RtlZeroMemory
> no match for RtlCopyMemory
> ntoskrnl dummy called...
> ndis0: <Broadcom 802.11g Network Adapter> mem 0xb0204000-0xb0205fff irq 
> 21 at device 2.0 on pci3
> ndis0: NDIS API version: 5.1
> ntoskrnl dummy called...
> ntoskrnl dummy called...
> [repeats multiple times]
> fpudna in kernel mode!
> [repeats multiple times]
> ntoskrnl dummy called...
> ntoskrnl dummy called...
> ndis0: NDIS ERROR: c000138d (unknown error)
> ndis0: init handler failed
> device_attach: ndis0 attach returned 6
> 
> Is there anything I can do to get this working in FreeBSD? Or is it just 
> an incompatibility that I'll have to live with?
> 
> Thanks,
> Graham.

Get the latest copies of the files in src/sys/compat/ndis and
src/sys/dev/if_ndis from the RELENG_6 branch. Note: you do _NOT_ have
to update your entire system, just the files in these directories.
The quickest way to do this is probably with anoncvs:

% setenv CVSROOT anoncvs@anoncvs1.FreeBSD.org:/home/ncvs
% cvs checkout -rRELENG_6 src/sys/compat/ndis src/sys/dev/if_ndis

You can also use a mirror if you're outside the US. See
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/anoncvs.html
for a list.

Copy the files to src/sys/compat/ndis and src/sys/dev/if_ndis,
then rebuild ndis.ko and if_ndis.ko:

# cd /sys/modules/ndis
# make; make install
# cd /sus/modules/if_ndis
# make; make install

It should work then. I've been using the same driver on my dual Opteron
amd64 box at home for the past week and it's been very stable
(in SMP mode even):

Nov  9 18:16:59 opteron kernel: ndis0: <Broadcom 802.11g Network Adapter> mem 0xe0210000-0xe0211fff irq 31 at device 1.0 on pci3
Nov  9 18:16:59 opteron kernel: ndis0: NDIS API version: 5.1
Nov  9 18:16:59 opteron kernel: fpudna in kernel mode!
Nov  9 18:17:01 opteron kernel: ndis0: Ethernet address: 00:30:bd:f5:ea:26

[/var/log]:opteron.moo.com{41}% uname -srm
FreeBSD 6.0-RELEASE amd64
[/var/log]:opteron.moo.com{42}% uptime
11:20AM  up 6 days, 17:06, 14 users, load averages: 1.81, 1.52, 1.43

Note that the "fpudna in kernel mode!" message will still show up even
after you fix ndis.ko and if_ndis.ko, but the interface will work anyway.
The messages appear to be harmless for now.

-Bill

--
=============================================================================
-Bill Paul            (510) 749-2329 | Senior Engineer, Master of Unix-Fu
                 wpaul@windriver.com | Wind River Systems
=============================================================================
              <adamw> you're just BEGGING to face the moose
=============================================================================



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051116193347.009E516A420>