Commit Graph

255 Commits

Author SHA1 Message Date
kiyohara
a748aedcb5 Clean up gt and peripherals.
This change tested compile only.
2010-04-28 13:51:55 +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
matt
7b012669b8 Adapt to <powerpc/spr.h> breakup. 2010-02-25 23:34:54 +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
cegger
99747a8099 struct device * -> device_t, no functional changes intended. 2009-05-12 14:28:22 +00:00
cegger
32c4940900 struct cfdata * -> cfdata_t, no functional changes intended. 2009-05-12 12:10:29 +00:00
tsutsui
d779b85d3e Remove extra whitespace added by a stupid tool.
XXX: more in src/sys/arch
2009-04-18 14:58:02 +00:00
cegger
e2cb85904d bcopy -> memcpy 2009-03-18 17:06:41 +00:00
cegger
c363a9cb62 bzero -> memset 2009-03-18 16:00:08 +00:00
cegger
df7f595ecd Ansify function definitions w/o arguments. Generated with sed. 2009-03-18 10:22:21 +00:00
dsl
454af1c0e8 Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
2009-03-14 15:35:58 +00:00
yamt
b1fea83762 remove extra semicolons. 2009-01-03 03:43:21 +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
gmcgarry
0de5da9678 Replace most gcc-specific __attribute__ uses with BSD-style sys/cdef.h
preprocessor macros.
2008-09-08 23:36:53 +00:00
he
bd8aa5583f Use a local temporary struct gt_softc* so we don't try to
de-reference void*.  Restores buildability of this file.
2008-06-17 22:41:30 +00:00
cegger
4795ee76a4 use device_lookup_private to get softc 2008-06-12 22:28:26 +00:00
cegger
5819fc04b4 use device_lookup_private to get softc 2008-06-11 20:52:14 +00:00
he
26a302aa36 Avoid the effects of name space pollution caused by <sys/rb.h>,
which defines rb_data, by instead naming the struct field rxb_data.
2008-06-10 22:44:07 +00:00
he
04446152e8 Put back a %s so that the format matches again. Fixes build for evbppc. 2008-04-11 06:25:25 +00:00
cegger
1ef783cb7b use aprint_*_dev and device_xname 2008-04-08 20:40:42 +00:00
dyoung
2ccede0a9c Start patching up the kernel so that a network driver always has
the opportunity to handle an ioctl before generic ifioctl handling
occurs.  This will ease extending the kernel and sharing of code
between drivers.

First steps:  Make the signature of ifioctl_common() match struct
ifinet->if_ioctl.  Convert SIOCSIFCAP and SIOCSIFMTU to the new
ifioctl() regime, throughout the kernel.
2008-02-07 01:21:52 +00:00
dyoung
b480b62270 Make many ethernet drivers share the common code for MII media
handling, ether_mediastatus() and ether_mediachange().  Check for
a non-ENXIO error return from mii_mediachg().  (ENXIO indicates
that a PHY is suspended.)

This patch shrinks the source code size by 979 lines.  There was
a 5100-byte savings on the NetBSD/i386 kernel configuration, ALL.

I have made a few miscellaneous changes, too:

gem(4): use LIST_EMPTY(), LIST_FOREACH().
mtd(4): handle media ioctls, for a change!
axe(4): do not track link status in sc->axe_link any longer
nfe(4), aue(4), axe(4), udav(4), url(4): do not reset all PHYs
        on a change of media

Except for the change to mtd(4), no functional changes are intended.

XXX This patch affects more architectures than I can feasibly
XXX compile and run.  I have compiled macppc, sparc64, i386.  I
XXX have run the patches on i386 boxen with bnx(4) and sip(4).
XXX Compiling and running on evbmips (MERAKI, ADM5120) is in
XXX progress.
2008-01-19 22:10:14 +00:00
he
5ccc78e887 Remove a local variable which is no longer used. 2007-12-16 14:21:43 +00:00
ad
6874e511b7 lockmgr -> mutex 2007-12-05 07:58:29 +00:00
ad
4b293a84e1 Interrupt handling changes, in discussion since February:
- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
2007-12-03 15:33:00 +00:00
ad
dc26833bb6 - Factor out too many copies of the same bit of tty code.
- Fix another tty signalling/wakeup problem.
2007-11-19 18:51:36 +00:00
ad
a2a3828545 machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h 2007-10-19 11:59:34 +00:00
garbled
56452ceddd Fix a missing include noted by Gerald Lee on tech-kern 2007-10-17 00:43:51 +00:00
ad
46ed8f7d77 Use the softint API. 2007-10-08 16:18:02 +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
ad
88ab7da936 Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
2007-07-09 20:51:58 +00:00
he
4e894df92a Cast to char* and int before doing pointer arithmetic. 2007-03-07 09:15:21 +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
thorpej
712239e366 Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
2007-02-21 22:59:35 +00:00
hubertf
eda05c6413 Remove more duplicate headers.
Patch by Slava Semushin <slava.semushin@gmail.com>

Again, this was tested by comparing obj files from a pristine and a patched
source tree against an i386/ALL kernel, and also for src/sbin/fsck_ffs,
src/sbin/fsdb and src/usr.sbin/makefs. Only changes in assert() line numbers
were detected in 'objdump -d' output.
2007-01-29 01:52:43 +00:00
elad
bdc51baebb Adapt MD code to KAUTH_DEVICE_TTY_OPEN, batch #2 from Matt Fleming, thanks!
Also, add forgotten splx() calls in some places.
2006-10-01 19:28:43 +00:00
ad
3029ac48c7 - Use the LWP cached credentials where sane.
- Minor cosmetic changes.
2006-07-21 16:48:45 +00:00
drochner
a3464e1d27 use the "i2cbus" interface attribute rather than putting a string name
into the i2cbus attach args
2006-06-26 18:21:38 +00:00
mrg
27fdcc3d32 'volatile' is not a valid return type qualifier - remove it. 2006-05-24 21:22:36 +00:00
he
aa1b731e45 Include now needed <sys/kauth.h>, and fold a long line. 2006-05-16 16:49:41 +00:00
elad
2867b68bc3 integrate kauth. 2006-05-14 21:42:26 +00:00
thorpej
838ee1e0d9 Use device_private(). 2006-03-29 06:51:47 +00:00
thorpej
2be6494fc9 Use device_cfdata(). 2006-03-29 04:16:44 +00:00
thorpej
39cd836ee1 Use device_unit(). 2006-03-28 17:38:24 +00:00
thorpej
6e53f1366a Use device_parent(). 2006-03-25 23:14:58 +00:00
lukem
a1f606d3fd Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
2006-03-08 23:46:22 +00:00
he
fbe2f1783f Remove another instance of the SET/CLR/ISSET macro triplet, now found
in <sys/types.h>.
2006-03-06 08:13:58 +00:00
perry
fbae48b901 Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
2006-02-16 20:17:12 +00:00
perry
00d6acb4b6 bare asm -> __asm 2005-12-24 22:59:39 +00:00
perry
93124077ae Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:27:29 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
kleink
aece7a90fd Change the driver open function's conditional for overriding exclusive tty
use from checking the proc's uid to suser(9), and account for the use of
privileges.  Noted by David Holland in PR kern/31126.
2005-09-06 21:40:37 +00:00
drochner
46ed4b50c4 s/locdesc_t/int/g 2005-08-26 12:42:11 +00:00
scw
5d1801d88f Use underscores to prefix local variables in macros. 2005-06-03 11:22:08 +00:00
perry
f31bd063e9 nuke trailing whitespace 2005-02-27 00:26:58 +00:00
perry
18db93c7f6 de-__P 2005-02-04 02:10:35 +00:00
matt
411c843baa Add entry for gti2c.c 2005-02-01 20:59:15 +00:00
matt
57b77a8963 Add a i2c driver for the onboard i2c/twsi controller on the GT642x0 2005-02-01 20:58:46 +00:00
matt
b3eef3bb0b Allow the driver to allocate needs resources on attach and not free
depending on cf_flags (instead of on interface up / down).
2005-02-01 20:47:02 +00:00
matt
61b5c08265 Add I2C child hooks. 2005-02-01 20:37:09 +00:00
thorpej
53eac4d6eb Eliminate use of M_HASFCS. 2005-01-30 19:15:41 +00:00
jmc
25287474ca Put back a few locators.h includes that are still needed here. Now evbppc
kernels build clean once again
2004-11-26 05:10:31 +00:00
drochner
96b589fc18 a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
 config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
 on "locators.h"
2004-09-13 12:55:47 +00:00
drochner
8fd40ab43d "gtpci" doesn't provide an ISA bus, so it shouldn't have an "isabus"
attribute
2004-09-13 12:36:18 +00:00
drochner
4eda675cde use interface attribute / locator passing versions
of config_search()
2004-09-08 20:08:46 +00:00
drochner
46289e1fef Phase out the use of a string as first "attach args" member to control
which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
2004-08-30 15:05:15 +00:00
nisimura
a98d1a3398 Typos in comment description. 2004-05-01 12:55:06 +00:00
matt
bcc199a19c Add gt_dma_bus_mem_to_phys and gt_dma_phys_to_bus_mem. 2004-03-20 01:55:00 +00:00
wiz
d20841bb64 Uppercase CPU, plural is CPUs. 2004-02-13 11:36:08 +00:00
wiz
d88f7b1d62 boundary, not boundry. Inspired by Tom Cosgrove. 2003-11-02 10:31:06 +00:00
scw
0dcbc9ae84 Try to drain the Tx pending queues after dealing with Rx/Tx interrupts.
This fixes a bug whereby a fast cpu with a decent cache can easily
outstrip the GT's ability to put packets on the wire, resulting in a
permanent backlog of mbufs in the Tx pending queues under heavy Tx load.

The bug was masked if the packet buffer was mapped non-cached, which
slowed down the cpu to where it couldn't keep up with the GT at 100mbit.
2003-08-05 14:55:06 +00:00
lukem
365cbd9428 add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
scw
588cfa226b Add basic support for non-PCI host mode. 2003-06-12 19:18:49 +00:00
scw
b8ce8543eb Always pass BUS_DMA_COHERENT to bus_dmamem_map() when allocating
descriptor/buffer memory.
2003-06-12 19:18:02 +00:00
scw
b751df8807 Tickle the watchdog while doing polled console i/o.
This is especially important if we spend any time in ddb. :)
2003-06-12 19:16:18 +00:00
scw
269144aef4 Disable the watchdog during autoconf of sub-devices.
Some drivers (e.g. pciide(4)) can take long enough to probe that the
watchdog barks before they're done.
2003-06-12 19:14:37 +00:00
scw
6fab97c614 Add an option to control whether the GT's internal PCI Arbiter should
be enabled or not.
2003-05-27 11:39:50 +00:00
scw
d1fb17639e defflag GT_ECC. 2003-05-17 08:27:58 +00:00
scw
84d2659d16 In gtmpscinit_stop(), don't wait for abort completion status if the
receiver is disabled. It'll never complete in this case.
2003-05-01 12:13:26 +00:00
matt
de36c1091b Update inptr *after* we do the dmasync. 2003-04-30 20:49:49 +00:00
matt
0259e9541c Fix overrun of TX buffer dmamap. 2003-04-30 18:31:30 +00:00
scw
dd3614f13a When attaching, make sure the "Reject Broadcast Mode", "Promiscuous Mode"
and "Pass Bad Frames" bits in the EPCR register are clear.

This works around a problem where firmware sets RBM for some reason before
handing control to the NetBSD kernel.
2003-04-10 15:23:19 +00:00
thorpej
cf9d21bf8e Use PAGE_SIZE rather than NBPG. 2003-04-08 23:39:14 +00:00
thorpej
106ae5d65e Use PAGE_SIZE rather than NBPG. 2003-04-08 22:33:33 +00:00
matt
46acdfd875 Deal with discovery strangeness/timing issue. Sometimes the Ownership bit
on descriptor doesn't get reset so look beyond to the next descriptor to
see if it's been returned.  If it has, then just process the current one.
2003-04-08 19:37:17 +00:00
matt
6193e8a4a1 Remove #define DEBUG. (this was working right. The problem I encountered
was due to a bug in PPCBOOT.  It was not ordering DIMM space largest to
smallest so that you could badly alignment memory).
2003-04-04 20:09:07 +00:00
matt
d914d04522 Cleanup PCI support. 2003-04-01 19:11:44 +00:00
matt
8909c240f2 Add GT_PCI{0,1}_{IO,MEM}{SIZE,START} options 2003-03-27 07:21:30 +00:00
matt
caff52554f Only print IRQ is it's not the default value. 2003-03-27 07:20:48 +00:00
matt
0e5392f73f Make reset delay depend on the baud rate. 2003-03-24 20:03:23 +00:00
matt
bd800e6684 Fix tyops. Add 2 defines. 2003-03-24 17:03:18 +00:00
matt
a69a0868cc Make gtmpsc configurable via config file. (baud rate source, frequency). 2003-03-24 17:02:14 +00:00
matt
a09a7e1927 Update bpf interface to current. Make output buffers aligned to a
cacheline bounary.  Only put hash table and descriptors in uncached
memory, buffers are in cached memory.
2003-03-24 17:00:54 +00:00
matt
0e4975df24 Split PCI initialization out of attach hook. 2003-03-18 19:32:46 +00:00
matt
923175a28a remove some unneeded code. 2003-03-18 15:09:28 +00:00
matt
ee2ba43d39 Enable I/O & memory access too. 2003-03-18 15:00:00 +00:00
matt
8fb546ff67 Do minimal initialization of PCI. 2003-03-18 05:51:51 +00:00
matt
051e31601c Derive baud rate from cpu_timebase on powerpc. 2003-03-18 05:50:02 +00:00
matt
631dbeba1a Use generic softintr. switch from consinit to explicit cnattach
framework.  Use bus_space for access register access.
2003-03-17 16:42:47 +00:00
matt
f27033251e Use a subregion for the mac's ethernet registers. Shaves 512 bytes
from the driver.
2003-03-17 16:41:15 +00:00
matt
08ea2a499c Cleanup. Move much of the code to bus_space instead of using
private mechanisms.
2003-03-16 07:05:33 +00:00
matt
7f87f176b2 Add obio attachment for things like rtcs, com, and flash. 2003-03-16 07:03:30 +00:00
matt
3dc865b386 Relocate Discovery first thing in initppc (if not at expected address).
This implies that if PMON tells us where the GT is, we write that address
in gtbase.
2003-03-06 06:04:21 +00:00
matt
ff2281b498 Add preliminary support Marvell (Galileo) Discovery System Controllers.
This code was contributed by Allegro Networks.
2003-03-05 22:08:18 +00:00