summaryrefslogtreecommitdiffstats
path: root/sys/dev/gem/if_gem.c
Commit message (Collapse)AuthorAgeFilesLines
* Stop the interface before detaching and freeing it, rather than after.brooks2005-06-121-1/+1
| | | | Reported by: marius
* Stop embedding struct ifnet at the top of driver softcs. Instead thebrooks2005-06-101-13/+21
| | | | | | | | | | | | | | | | | | | | struct ifnet or the layer 2 common structure it was embedded in have been replaced with a struct ifnet pointer to be filled by a call to the new function, if_alloc(). The layer 2 common structure is also allocated via if_alloc() based on the interface type. It is hung off the new struct ifnet member, if_l2com. This change removes the size of these structures from the kernel ABI and will allow us to better manage them as interfaces come and go. Other changes of note: - Struct arpcom is no longer referenced in normal interface code. Instead the Ethernet address is accessed via the IFP2ENADDR() macro. To enforce this ac_enaddr has been renamed to _ac_enaddr. - The second argument to ether_ifattach is now always the mac address from driver private storage rather than sometimes being ac_enaddr. Reviewed by: sobomax, sam
* Since if_gem doesn't contain locking or run with INTR_MPSAFE, markrwatson2004-08-131-1/+2
| | | | the interface as IFF_NEEDSGIANT so if_start is run holding Giant.
* - Remove a variable no longer used after the conversion to ether_crc32_le().marius2004-06-101-4/+2
| | | | | - While here, save on another one no longer really necessary after the conversion.
* Replace handrolled CRC calculation with ether_crc32_[lb]e().naddy2004-06-091-17/+1
|
* Add missing <sys/module.h> includes currently relying on nested includephk2004-06-031-0/+1
| | | | in <sys/kernel.h>
* We don't need to initialize if_output, ether_ifattach() does itmux2004-05-231-1/+0
| | | | for us.
* Clean up two printf()s that were on a line by themselves unintendedlytmm2004-04-231-2/+2
| | | | after the ethernet address printing was moved to common code.
* Let ether_ifattach() announce our MAC address.mdodd2004-03-201-5/+0
| | | | Submitted by: Marius Strobl <marius@alchemy.franken.de>
* Replace the if_name and if_unit members of struct ifnet with new membersbrooks2003-10-311-2/+2
| | | | | | | | | | | | | 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)
* Use __FBSDID().obrien2003-08-241-3/+4
| | | | Also some minor style cleanups.
* s=gem/foo=dev/gem/foo=imp2003-08-231-2/+2
|
* Mega busdma API commit.scottl2003-07-011-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Miscellaneous fixes:tmm2003-05-151-5/+56
| | | | | | | | | | | | | | | | | - Fix compilation without GEM_DEBUG. - Do not #define GEM_DEBUG by default; it adds overhead (due to bzero()ing RX space) and is not needed any more, since the driver is quite stable now. - Fix watchdog timeouts when failing to load TX packets. - Do not forcibly limit the number of descriptors used for a packet to GEM_NTXSEGS, by passing this number to bus_dma_tag_create(). There is no requirement for a limit any lower than the total number of available descriptors, and the present limit caused network problems due to mbuf chains requiring more descriptors. GEM_NTXSEGS is still used to estimate the interrupt window size, for which we just need an estimate. Approved by: re (rwatson)
* Back out M_* changes, per decision of the TRB.imp2003-02-191-1/+1
| | | | Approved by: trb
* bus_dmamap_sync() overhaul:tmm2003-01-211-17/+17
| | | | | | | | | | | - Remove NetBSD-style or-ed together BUS_DMASYNC operations, in some cases relaxing the (intended) syncing operation a bit. - Stop pretending that that we can sync part of a dmamap: replace the GEM_CDTXSYNC and GEM_CDRXSYNC macros with GEM_CDSYNC to sync the complete control map, and combine syncs wherever possible to avoid the overhead. - Sync all maps before unloading them. - Remove a few syncs which should be unnecessary.
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-1/+1
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* Add detach, shutdown, suspend and resume methods. The latter two aretmm2003-01-081-40/+49
| | | | not really tested, but are derived from the original NetBSD version.
* - Convert to use bus_dmamap_load_mbuf().tmm2003-01-061-370/+149
| | | | | | - remove DPRINTF(), there is a CTR*() for any of them, and KTR is far more useful to debug this driver. - some cleanups; remove some unused code and definitions.
* Catch up with sam's changes to network interfaces.mux2002-11-151-2/+1
|
* network interface driver changes:sam2002-11-141-5/+3
| | | | | | | | | | | | | | o don't strip the Ethernet header from inbound packets; pass packets up the stack intact (required significant changes to some drivers) o reference common definitions in net/ethernet.h (e.g. ETHER_ALIGN) o track ether_ifattach/ether_ifdetach API changes o track bpf changes (use BPF_TAP and BPF_MTAP) o track vlan changes (ifnet capabilities, revised processing scheme, etc.) o use if_input to pass packets "up" o call ether_ioctl for default handling of ioctls Reviewed by: many Approved by: re
* Call bpf_mtap() on outgoing packets.tmm2002-10-261-3/+6
|
* Fix warning.jake2002-07-241-0/+4
|
* Incorporate changes made to the NetBSD version of this driver.benno2002-07-101-76/+132
| | | | | | | | | | | | | | - Remove some obsolete code (NetBSD gem.c r1.12) - Clean up how the local MAC address is programmed (NetBSD gem.c r1.13) - Make the driver work on PowerMacs with gigabit interfaces (NetBSD gem.c r1.14 and r1.15, gemreg.h r1.3 and r1.4, gemvar.h r1.6 and 1.7) - Suppress RX_MAC interrutps regarding the FRAME_COUNT register. (NetBSD gem.c r1.16 and r1.17) - Fix receiver lockups. (NetBSD gem.c r1.18, gemvar.h r1.8) - Distinguish between Apple and Sun variants (NetBSD if_gem_pci.c r1.9) Reviewed by: tmm Obtained from: NetBSD
* Fully reset a gem on some error conditions; otherwise it would hang intmm2002-05-241-0/+4
| | | | | | about 1 of 10 cases. Proposed and tested by: phk
* Move the new byte order function prototypes from <sys/param.h> tomike2002-04-261-0/+1
| | | | <sys/endian.h>. This puts us in line with NetBSD and OpenBSD.
* In some cases, RX descriptors that are signalled to have been completedtmm2002-03-231-3/+19
| | | | | | by the hardware are still marked as owned. Handle this by installing a timeout handler to collect this descriptor to avoid having received packets remain unhandled until the next one arrives.
* Remove __P.alfred2002-03-201-34/+32
|
* Add a driver for the Sun GEM (Gigabit) and ERI (100 Mb/s) PCI ethernettmm2002-02-271-0/+2017
adaptors, ported from NetBSD.
OpenPOWER on IntegriCloud