Commit Graph

126 Commits

Author SHA1 Message Date
Poul-Henning Kamp
aeaf0a3a68 Fix compilation of DEVICE_POLLING code. 2005-01-07 23:52:41 +00:00
Warner Losh
60727d8b86 /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
Poul-Henning Kamp
72f0eb9104 We no longer recurse the mutex. 2005-01-07 00:02:11 +00:00
Poul-Henning Kamp
8397f22c34 If we get an interrupt and the interface is down, return before we
grab the lock.  This should help a tiny bit on machines where unused
if_sis interfaces share IRQ.
2005-01-07 00:01:43 +00:00
Poul-Henning Kamp
41166e0488 Don't tweak DSP on the ..16 chips. 2005-01-06 23:56:13 +00:00
Poul-Henning Kamp
4ce7885f87 Fix for an issue with excessive collisions in half duplex mode. 2005-01-06 23:54:55 +00:00
Poul-Henning Kamp
bce3bc624c Nail the short cable problem the exact way National says it should be. 2005-01-06 23:49:26 +00:00
Poul-Henning Kamp
0608b4a20c Simplify and fix bugs in rx/tx ring cleanup. 2005-01-06 23:36:43 +00:00
Poul-Henning Kamp
7302042943 Rewrite the rx/tx ring initialization to use pointers instead of arrays. 2005-01-06 23:31:41 +00:00
Poul-Henning Kamp
1bad258b05 Eliminate a bunch of unnecessary prototypes. 2005-01-06 23:26:13 +00:00
Poul-Henning Kamp
878f347274 Move the module related stuff to the bottom of the file. This will
allow us to save prototypes.
2005-01-06 23:22:38 +00:00
Poul-Henning Kamp
951365068b Make sure to clear any pending interrupts when we stop the interface. 2005-01-06 23:18:44 +00:00
Poul-Henning Kamp
c884a1dc23 Close a theoretical race: By the time the watchdog comes around
the interface may have been stopped, so we should not restart it.
2005-01-06 23:13:50 +00:00
Poul-Henning Kamp
9be9637246 Align if else if properly 2005-01-05 22:28:24 +00:00
Poul-Henning Kamp
93368d1eb2 Style: new-speak functions, remove pointless "return". 2005-01-05 22:23:03 +00:00
Poul-Henning Kamp
1e079a9113 Make sis_initl() take a typed argument.
Expect caller to lock before calling sis_stop()
Various style stuff.
2005-01-05 10:26:12 +00:00
Poul-Henning Kamp
a55fd2ad97 Add locked/unlocked variants of sis_init() 2005-01-05 10:11:37 +00:00
Poul-Henning Kamp
93e6be6cd7 Make a locked and unlocked variant of sis_start() 2005-01-05 10:04:45 +00:00
Poul-Henning Kamp
93a8f35688 Don't declare variables "register", the compiler ought to know what to do. 2005-01-05 09:02:05 +00:00
Poul-Henning Kamp
dc010b7380 Instead of keeping track of the index into the receive ring use the already
implemented "sis_nextdesc" pointer to keep a pointer instead.
2005-01-04 22:39:35 +00:00
Poul-Henning Kamp
32a300364d Forget about the sis_list_data and sis_ring_data structures and embedd
their fields directly in the softc structure.

This is a no-op which shortens most of the affected source lines
by N * 10 characters.
2005-01-04 22:25:58 +00:00
Poul-Henning Kamp
42eb5bb725 Prototype busdma callback using the typedef. 2005-01-04 22:14:18 +00:00
Max Laier
22d0ab2ef8 Fix sis, bfe and ndis in the same way dc was fixed:
Do not tell the hardware to send when there were no packets enqueued.

Found and reviewed by:	green
MFC after:		1 days
2004-10-08 16:14:42 +00:00
Max Laier
7929aa036c Bring in the first chunk of altq driver modifications. This covers the
following drivers: bfe(4), em(4), fxp(4), lnc(4), tun(4), de(4) rl(4),
sis(4) and xl(4)

More patches are pending on: http://peoples.freebsd.org/~mlaier/ Please take
a look and tell me if "your" driver is missing, so I can fix this.

Tested-by:	many
No-objection:	-current, -net
2004-07-02 12:16:02 +00:00
Warner Losh
c3e7434f34 Remove burn bridges code that saved/restored the pci config registers
that are now handled in the pci bus layer.  They are no longer
necessary.
2004-06-28 20:07:03 +00:00
Christian Weisgerber
0e939c0cea Replace handrolled CRC calculation with ether_crc32_[lb]e(). 2004-06-09 14:34:04 +00:00
Poul-Henning Kamp
41ee9f1c69 Add some missing <sys/module.h> includes which are masked by the
one on death-row in <sys/kernel.h>
2004-05-30 17:57:46 +00:00
Robert Watson
baad32ada6 Only initialize the if_sis callout as MPSAFE if debug.mpsafenet is set
true.  Otherwise, assertion checks for Giant in the network stack will
fail causing a panic.

Reported by:	simon
2004-05-23 22:22:29 +00:00
Yaroslav Tykhiy
25fbb2c38c A handler for ioctl(SIOCSIFCAP) should not alter a bit in
if_capenable unless the interface driver is actually able
to toggle the respective capability on and off.

Reviewed by:	ru
2004-05-23 21:05:08 +00:00
Ruslan Ermilov
f4ab22c94a Implemented per-interface polling(4) control. 2004-04-11 20:34:08 +00:00
Nate Lawson
5f96beb9e0 Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by:	Mark Santcroos <marks@ripe.net>
Reviewed by:	imp, dfr, bde
2004-03-17 17:50:55 +00:00
Matthew N. Dodd
e3bbbec2ca Announce ethernet MAC addresss in ether_ifattach(). 2004-03-14 07:12:25 +00:00
Maxime Henrion
aa0444ecdb Stop setting ifp->if_output to ether_output() since ether_ifattach()
does it for us already.
2004-03-11 14:04:59 +00:00
Poul-Henning Kamp
8c27747768 Vastly improve performance of IRQ handling on stopped interfaces with
this driver by introducing a flag saying we already stopped the device.

On my Soekris net4801, this took a ping -i 0.001 from spending 80% of
time in interrupt handling to 10% (approx numbers).

This was a particular problem for the net4801 because the tree
interfaces share the same interrupt, but it would be a problem for
any configuration where an unused if_sis interface shares an interrupt
with a busy device.

Other drivers may have similar problems.

Thanks to:	Luigi
2003-12-25 22:14:25 +00:00
Poul-Henning Kamp
48529e81e4 Attempt to get the short cable fix to work better on the if_sis:
Only do short-cable on revisions that need it.

Move generic initialization before short-cable fix, in order to not
clobber short cable fix register setting.
2003-12-12 10:15:39 +00:00
David E. O'Brien
a55a017f42 Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones.
Requested by:	bde,imp
2003-12-08 07:54:15 +00:00
Sam Leffler
5120abbfb4 Drop the driver lock around calls to if_input to avoid a LOR when
the packets are immediately returned for sending (e.g.  when bridging
or packet forwarding).  There are more efficient ways to do this
but for now use the least intrusive approach.

Reviewed by:	imp, rwatson
2003-11-14 19:00:32 +00:00
David E. O'Brien
4dc52c32bf Remove duplicate FBSDID's, move others to their right place. 2003-11-14 17:16:58 +00:00
David E. O'Brien
aa8255025a Try to create some sort of consistency in how the routings to find the
multicast hash are written.  There are still two distinct algorithms used,
and there actually isn't any reason each driver should have its own copy
of this function as they could all share one copy of it (if it grew an
additional argument).
2003-11-13 20:55:53 +00:00
Brooks Davis
9bf40ede4a Replace the if_name and if_unit members of struct ifnet with new members
if_xname, if_dname, and if_dunit. if_xname is the name of the interface
and if_dname/unit are the driver name and instance.

This change paves the way for interface renaming and enhanced pseudo
device creation and configuration symantics.

Approved By:	re (in principle)
Reviewed By:	njl, imp
Tested On:	i386, amd64, sparc64
Obtained From:	NetBSD (if_xname)
2003-10-31 18:32:15 +00:00
Sam Leffler
b237430cfe mark interrupt handlers MPSAFE 2003-10-29 18:32:14 +00:00
Mike Silbersack
180b0f65cc Fix m_head handling in sis_encap so that the correct mbuf is always handed
to BPF_MTAP.
2003-10-19 23:28:02 +00:00
Sam Leffler
55b659ffc1 change timer to MPSAFE
Sponsored by:	FreeBSD Foundation
2003-09-05 22:33:44 +00:00
Poul-Henning Kamp
8196d06a54 Examine and record the Silicon Revision Register on NS parts.
We can't update the device description in attach (why not ?), so
we device_print() what we find.

Conditionalize the short cable fix on this being older than rev 16A.

Call device_printf() when we apply short cable fix.

Include interrupt hold-off setting for rev 16+ under "#ifdef notyet"

The device_printf()'s will go under bootverbose once the various
issues have settled a bit.
2003-09-03 07:40:04 +00:00
Warner Losh
19b7ffd1b8 Prefer new location of pci include files (which have only been in the
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.
2003-08-22 07:20:27 +00:00
Sam Leffler
0143cfd730 "short cable" fix for DP8315
Derived from:	netbsd and tech note at soekris web site
MFC after:	1 week
2003-08-19 16:57:00 +00:00
Maxime Henrion
fa31bfaa13 Use the BUS_DMA_ZERO flag. 2003-07-27 14:38:54 +00:00
Olivier Houchard
2722485b08 Erm, my previous commit was wrong and sis_tick() was only called each time
sis_ioctl() was called, so one had to use ifconfig each time the cable got
plugged in to be able to use the connection.
Do it a better way now, add a "in_tick" field in the softc structure,
call timeout() in sis_tick() and don't call it in sis_init() if in_tick is
non-zero.
Reported by:    Landmark Networks
Pointy hat to:  cognet
2003-07-22 01:35:09 +00:00
Warner Losh
b84e866a18 Due to extreme bogusness in the pci bus layer, these drivers were
forced to do slightly bogus power state manipulation.  However, this
is one of those features that is preventing further progress, so mark
them as BURN_BIRDGES like I did for the drivers in sys/dev/...

This, like the other change, are a no-op unless you have BURN_BRIDGES
in your kernel.
2003-07-03 21:39:53 +00:00
Scott Long
f6b1c44d1f Mega busdma API commit.
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg.
Lockfunc allows a driver to provide a function for managing its locking
semantics while using busdma.  At the moment, this is used for the
asynchronous busdma_swi and callback mechanism.  Two lockfunc implementations
are provided: busdma_lock_mutex() performs standard mutex operations on the
mutex that is specified from lockfuncarg.  dftl_lock() is a panic
implementation and is defaulted to when NULL, NULL are passed to
bus_dma_tag_create().  The only time that NULL, NULL should ever be used is
when the driver ensures that bus_dmamap_load() will not be deferred.
Drivers that do not provide their own locking can pass
busdma_lock_mutex,&Giant args in order to preserve the former behaviour.

sparc64 and powerpc do not provide real busdma_swi functions, so this is
largely a noop on those platforms.  The busdma_swi on is64 is not properly
locked yet, so warnings will be emitted on this platform when busdma
callback deferrals happen.

If anyone gets panics or warnings from dflt_lock() being called, please
let me know right away.

Reviewed by:	tmm, gibbs
2003-07-01 15:52:06 +00:00