Commit Graph

87 Commits

Author SHA1 Message Date
drochner
4bd7f95161 -remove references to crypto/arc4/arc4.* -- the code isn't used
anywhere afaics
 (The confusion comes probably from use of arc4random() at various places,
  but this lives in libkern and doesn't share code with the former.)
-g/c non-implementation of arc4 encryption in swcrypto(4)
-remove special casing of ARC4 in crypto(4) -- the point is that it
 doesn't use an IV, and this fact is made explicit by the new "ivsize"
 property of xforms
2011-05-23 15:37:35 +00:00
christos
794726de70 clear register 0x41 as FreeBSD and OpenBSD do. Update copyright to the latest. 2011-01-31 00:01:07 +00:00
uebayasi
e379b4b16c tsleep needs sys/proc.h. 2010-11-15 05:57:07 +00:00
joerg
58e867556f Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
2010-04-05 07:19:28 +00:00
pooka
10fe49d72c Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client.  This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached.  However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff.  ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
2010-01-19 22:06:18 +00:00
tsutsui
64cbab9fdb Invert logic around nested pmf(9) registrations for readability. 2009-09-05 14:09:55 +00:00
cegger
59717d7121 struct cfdata * -> cfdata_t, no functional changes intended. 2009-05-06 09:25:14 +00:00
jym
96f9080096 Fixes in the iwi(4) driver to better handle errors:
- bus_dmamap fixes, with checks against NULL
- move the rings' allocation code later in iwi_attach() to avoid NULL pointer
dereference if allocation fails
- avoid double free() in case of failure during attach. If an allocation fails,
do not free the ring directly, as it is handled by iwi_detach()
- only set ring->count for RX/TX rings when ring allocation is successful, or
else the for loop during detach will fail with a NULL dereference.
- call pci_intr_disestablish() if iwi_reset() fails during attach; driver is
in an incoherent state, interrupt handler should not be used.

Proposed by me on tech-net@, approved by christos@. Compiled and tested
with GENERIC and XEN3_DOM0 kernels.
2009-03-13 21:57:07 +00:00
bouyer
b48bdec72e make iwi_alloc_tx_ring() prototype match function declaration (shows up when
bus_addr_t != bus_size_t). Fix cast for 64bit paddr_t on i386.
2009-02-13 21:11:47 +00:00
jmcneill
df68862dbf Make the "EULA not accepted" message a bit more informative, now reads:
EULA not accepted; please see the <driver>(4) man page.
2009-01-09 21:14:36 +00:00
joerg
5787d39971 Fix typo in fw name. 2008-11-10 18:05:12 +00:00
joerg
866b295da8 Match image name with upstream distfiles. 2008-11-07 14:58:27 +00:00
dyoung
de87fe677d *** Summary ***
When a link-layer address changes (e.g., ifconfig ex0 link
02🇩🇪ad:be:ef:02 active), send a gratuitous ARP and/or a Neighbor
Advertisement to update the network-/link-layer address bindings
on our LAN peers.

Refuse a change of ethernet address to the address 00:00:00:00:00:00
or to any multicast/broadcast address.  (Thanks matt@.)

Reorder ifnet ioctl operations so that driver ioctls may inherit
the functions of their "class"---ether_ioctl(), fddi_ioctl(), et
cetera---and the class ioctls may inherit from the generic ioctl,
ifioctl_common(), but both driver- and class-ioctls may override
the generic behavior.  Make network drivers share more code.

Distinguish a "factory" link-layer address from others for the
purposes of both protecting that address from deletion and computing
EUI64.

Return consistent, appropriate error codes from network drivers.

Improve readability.  KNF.

*** Details ***

In if_attach(), always initialize the interface ioctl routine,
ifnet->if_ioctl, if the driver has not already initialized it.
Delete if_ioctl == NULL tests everywhere else, because it cannot
happen.

In the ioctl routines of network interfaces, inherit common ioctl
behaviors by calling either ifioctl_common() or whichever ioctl
routine is appropriate for the class of interface---e.g., ether_ioctl()
for ethernets.

Stop (ab)using SIOCSIFADDR and start to use SIOCINITIFADDR.  In
the user->kernel interface, SIOCSIFADDR's argument was an ifreq,
but on the protocol->ifnet interface, SIOCSIFADDR's argument was
an ifaddr.  That was confusing, and it would work against me as I
make it possible for a network interface to overload most ioctls.
On the protocol->ifnet interface, replace SIOCSIFADDR with
SIOCINITIFADDR.  In ifioctl(), return EPERM if userland tries to
invoke SIOCINITIFADDR.

In ifioctl(), give the interface the first shot at handling most
interface ioctls, and give the protocol the second shot, instead
of the other way around. Finally, let compatibility code (COMPAT_OSOCK)
take a shot.

Pull device initialization out of switch statements under
SIOCINITIFADDR.  For example, pull ..._init() out of any switch
statement that looks like this:

        switch (...->sa_family) {
        case ...:
                ..._init();
                ...
                break;
        ...
        default:
                ..._init();
                ...
                break;
        }

Rewrite many if-else clauses that handle all permutations of IFF_UP
and IFF_RUNNING to use a switch statement,

        switch (x & (IFF_UP|IFF_RUNNING)) {
        case 0:
                ...
                break;
        case IFF_RUNNING:
                ...
                break;
        case IFF_UP:
                ...
                break;
        case IFF_UP|IFF_RUNNING:
                ...
                break;
        }

unifdef lots of code containing #ifdef FreeBSD, #ifdef NetBSD, and
#ifdef SIOCSIFMTU, especially in fwip(4) and in ndis(4).

In ipw(4), remove an if_set_sadl() call that is out of place.

In nfe(4), reuse the jumbo MTU logic in ether_ioctl().

Let ethernets register a callback for setting h/w state such as
promiscuous mode and the multicast filter in accord with a change
in the if_flags: ether_set_ifflags_cb() registers a callback that
returns ENETRESET if the caller should reset the ethernet by calling
if_init(), 0 on success, != 0 on failure.  Pull common code from
ex(4), gem(4), nfe(4), sip(4), tlp(4), vge(4) into ether_ioctl(),
and register if_flags callbacks for those drivers.

Return ENOTTY instead of EINVAL for inappropriate ioctls.  In
zyd(4), use ENXIO instead of ENOTTY to indicate that the device is
not any longer attached.

Add to if_set_sadl() a boolean 'factory' argument that indicates
whether a link-layer address was assigned by the factory or some
other source.  In a comment, recommend using the factory address
for generating an EUI64, and update in6_get_hw_ifid() to prefer a
factory address to any other link-layer address.

Add a routing message, RTM_LLINFO_UPD, that tells protocols to
update the binding of network-layer addresses to link-layer addresses.
Implement this message in IPv4 and IPv6 by sending a gratuitous
ARP or a neighbor advertisement, respectively.  Generate RTM_LLINFO_UPD
messages on a change of an interface's link-layer address.

In ether_ioctl(), do not let SIOCALIFADDR set a link-layer address
that is broadcast/multicast or equal to 00:00:00:00:00:00.

Make ether_ioctl() call ifioctl_common() to handle ioctls that it
does not understand.

In gif(4), initialize if_softc and use it, instead of assuming that
the gif_softc and ifp overlap.

Let ifioctl_common() handle SIOCGIFADDR.

Sprinkle rtcache_invariants(), which checks on DIAGNOSTIC kernels
that certain invariants on a struct route are satisfied.

In agr(4), rewrite agr_ioctl_filter() to be a bit more explicit
about the ioctls that we do not allow on an agr(4) member interface.

bzero -> memset.  Delete unnecessary casts to void *.  Use
sockaddr_in_init() and sockaddr_in6_init().  Compare pointers with
NULL instead of "testing truth".  Replace some instances of (type
*)0 with NULL.  Change some K&R prototypes to ANSI C, and join
lines.
2008-11-07 00:20:01 +00:00
joerg
68ab5fbb16 Add glue to ship Intel firmware images. For ipw and iwi require user to
accept the EULA via sysctl as discussed with core@.
2008-10-30 00:27:31 +00:00
mlelstv
c2b3f9acc5 Compute the correct number of pages spanned by the firmware.
The old code just uses the firmware size and rounds up to full
pages. However, if the firmware isn't loaded aligned to a page
boundary (which it isn't), then one more page (and thus DMA
segment) might be necessary.
2008-06-16 06:19:24 +00:00
dyoung
8ce2158b0c pci_activate() expects for its void * argument to be a device_t,
so change the type of the argument to device_t.  Update each use
of pci_activate().

Use device_t and accessors.  Use aprint_*_dev().
2008-03-21 07:47:43 +00:00
dyoung
0dddb5735e Finish the job: pci_disable_retry() is now a no-op, so don't call
it any more.
2008-03-11 20:41:35 +00:00
dyoung
5f07fde2c9 pci_disable_retry() is now a no-op, so don't call it any more. 2008-03-11 20:40:51 +00:00
dyoung
f580a3a869 Use PMF_FN_ARGS, PMF_FN_PROTO. 2008-02-29 06:13:39 +00:00
jmcneill
4c1d81b2b5 Merge jmcneill-pm branch. 2007-12-09 20:27:42 +00:00
joerg
2f9fa522b8 Also convert detach function. 2007-10-22 15:31:46 +00:00
joerg
2136a42b1e Convert to device_t/softc split and aprint usage. 2007-10-22 15:28:48 +00:00
ad
a2a3828545 machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h 2007-10-19 11:59:34 +00:00
dyoung
dcd8923429 Change a bazillion occurrences of code resembling this,
error = (cmd == SIOCADDMULTI) ?
	    ether_addmulti(ifr, &sc->sc_ec) :
	    ether_delmulti(ifr, &sc->sc_ec);

	if (error == ENETRESET) {

to this,

	if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) {

which does the same thing.

(A bazillion is a very large number.  This seems to make the i386
ALL kernel smaller by 3kB to 4kB.)

Use ifreq_getaddr() twice in es(4).

Whitespace nits.
2007-09-01 07:32:22 +00:00
dyoung
71e77a61b4 Constify: LLADDR -> CLLADDR. I'm aiming here to make it easier to
identify sockaddr_dl abuse that remains in the kernel, especially
the potential for overwriting memory past the end of a sockaddr_dl
with, e.g., memcpy(LLADDR(), ...).
2007-08-26 22:45:55 +00:00
sketch
cbbf3374dd Put unformatted firmware version output behind IWI_DEBUG 2007-03-04 19:14:25 +00:00
christos
53524e44ef Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
skrll
65cd49f99e Pass the right pointer to firmware_free.
Fixes the DIAGNOSTIC panic reported by Sverre Froyen on current-users.
2007-01-23 15:02:50 +00:00
skrll
be0d7b99e3 - Upgrade to the latest firmware and as a result remove the error log dump.
- Mostly sync with OpenBSD
	- Serialise sending commands to the firmware
	- Remove redundant calls to bpfdetach.
	- use bus_size_t where appropriate and not fetch iobase as it's not
	  used.
	- improve 802.11 radiotap support (correct rx rate)
	- add short preamble flag
	- add short slot time support
	- ignore parity errors (as per the Linux driver)
	- Set Tx power for all channels.
	- disable bluetooth co-existance
	- Check that ni->ni_rates.rs_nrates is not greater than the maximum
	  handled by the firmware.
- Begin syncing with the FreeBSD driver by renaming a few things.
2006-12-20 16:30:20 +00:00
christos
168cd830d2 __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
christos
4d595fd7b1 - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
2006-10-12 01:30:41 +00:00
jmcneill
f135e0d607 Add "name" parameter to powerhook_establish, to aid debugging. No objections
on tech-kern@
2006-09-24 03:53:07 +00:00
christos
26f4467d26 fix initializers. 2006-08-30 16:43:56 +00:00
skrll
326bcc171a Add some sysctl knobs to bring us closer to the FreeBSD driver.
Also sysctl enable the debug message printing (if IWI_DEBUG) is defined.
2006-08-19 06:32:52 +00:00
skrll
7274555f30 s/printf/aprint_error/ for one message. 2006-08-09 11:49:41 +00:00
skrll
6458f6d488 Adapt iwi(4) to use firmload(9) and remove firmware loading from
iwictl(8).
2006-08-09 11:35:59 +00:00
ad
3029ac48c7 - Use the LWP cached credentials where sane.
- Minor cosmetic changes.
2006-07-21 16:48:45 +00:00
christos
63bbcb495a re-factor the pci powestate api. reviewed by gimpy 2006-06-17 23:34:26 +00:00
blymn
3a0170518a Clean up bogus whitespace 2006-05-28 13:12:42 +00:00
elad
2867b68bc3 integrate kauth. 2006-05-14 21:42:26 +00:00
rpaulo
3fd310011d Coverity ID 2442: check if one can dereference ifp before calling
iwi_stop() in iwi_detach().
2006-04-11 15:42:56 +00:00
jmcneill
777ce723e2 Save and restore PCI configuration state on suspend/resume. 2006-03-09 16:02:55 +00:00
skrll
14041a25af Fix from Sam Leffler "correct check for whether wpa is enabled".
wpa_supplicant and static WEP doesn't crash the firmware now. YAY!
2006-02-21 07:24:07 +00:00
perry
93124077ae Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:27:29 +00:00
skrll
a599d2ebb4 Finally (I hope) fix iwi_ioctl:
- handle SIOCADDMULTI/SIOCDELMULTI properly, i.e. no need to reset
	  anything as we don't do multicast filters (yet)
	- restructure some code and use an IS_RUNNING macro

Fix iwi_init to set if_flags before the net80211 state machine is kicked
and init to IEEE80211_S_INIT.
2005-12-05 09:24:54 +00:00
rpaulo
ff67bb3168 Add support for software controlled LEDs as found on some
boards. Currently, only the associated LED is being used because
that's the only LED my card has. The other two LEDs (OFDM and
activity) can later be set by someone, easily, who owns some board
with that LEDs.

Reviewed by Nick Hudson.
2005-11-29 13:57:00 +00:00
skrll
535aed4540 Fixes from Steve Woodford:
- add some missing bus_dmamap_sync operations.
	- don't process other interrupts if we get an error/radio off
	  interrupt.
	- improve command handling - sleep against the descriptor instead
	  of the descriptor set.
2005-11-26 07:42:10 +00:00
skrll
3b6e301485 Fix the handling of ENETRESET in iwi_ioctl.
This fixes PR 32143
2005-11-23 20:35:54 +00:00
skrll
d40d6be769 Correct a bpf tap. 2005-11-23 20:08:29 +00:00
skrll
38d4ca67e5 Resolve conflicts. Changelog to follow. 2005-11-18 16:42:22 +00:00