aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/le
Commit message (Collapse)AuthorAgeFilesLines
* le(4): Fix a typo in a source code commentGordon Bergling2022-06-041-1/+1
| | | | | | - s/brodcast/broadcast/ MFC after: 3 days
* le: Remove unused devclass arguments to DRIVER_MODULE.John Baldwin2022-05-064-6/+2
|
* Miscellaneous typo fixesEd Maste2020-02-071-1/+1
| | | | | | | | Submitted by: Gordon Bergling <gbergling_gmail.com> Differential Revision: https://reviews.freebsd.org/D23453 Notes: svn path=/head/; revision=357664
* Remove sparc64 kernel supportWarner Losh2020-02-033-1194/+0
| | | | | | | | | Remove all sparc64 specific files Remove all sparc64 ifdefs Removee indireeect sparc64 ifdefs Notes: svn path=/head/; revision=357455
* Convert to if_foreach_llmaddr() KPI.Gleb Smirnoff2019-10-211-17/+23
| | | | Notes: svn path=/head/; revision=353817
* ifnet: Replace if_addr_lock rwlock with epoch + mutexMatt Macy2018-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Run on LLNW canaries and tested by pho@ gallatin: Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5 based ConnectX 4-LX NIC, I see an almost 12% improvement in received packet rate, and a larger improvement in bytes delivered all the way to userspace. When the host receiving 64 streams of netperf -H $DUT -t UDP_STREAM -- -m 1, I see, using nstat -I mce0 1 before the patch: InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree 4.98 0.00 4.42 0.00 4235592 33 83.80 4720653 2149771 1235 247.32 4.73 0.00 4.20 0.00 4025260 33 82.99 4724900 2139833 1204 247.32 4.72 0.00 4.20 0.00 4035252 33 82.14 4719162 2132023 1264 247.32 4.71 0.00 4.21 0.00 4073206 33 83.68 4744973 2123317 1347 247.32 4.72 0.00 4.21 0.00 4061118 33 80.82 4713615 2188091 1490 247.32 4.72 0.00 4.21 0.00 4051675 33 85.29 4727399 2109011 1205 247.32 4.73 0.00 4.21 0.00 4039056 33 84.65 4724735 2102603 1053 247.32 After the patch InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree 5.43 0.00 4.20 0.00 3313143 33 84.96 5434214 1900162 2656 245.51 5.43 0.00 4.20 0.00 3308527 33 85.24 5439695 1809382 2521 245.51 5.42 0.00 4.19 0.00 3316778 33 87.54 5416028 1805835 2256 245.51 5.42 0.00 4.19 0.00 3317673 33 90.44 5426044 1763056 2332 245.51 5.42 0.00 4.19 0.00 3314839 33 88.11 5435732 1792218 2499 245.52 5.44 0.00 4.19 0.00 3293228 33 91.84 5426301 1668597 2121 245.52 Similarly, netperf reports 230Mb/s before the patch, and 270Mb/s after the patch Reviewed by: gallatin Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15366 Notes: svn path=/head/; revision=333813
* Clean up OF_getprop_alloc APIOleksandr Tymoshenko2018-04-081-2/+2
| | | | | | | | | | | | | | | | | | | | OF_getprop_alloc takes element size argument and returns number of elements in the property. There are valid use cases for such behavior but mostly API consumers pass 1 as element size to get string properties. What API users would expect from OF_getprop_alloc is to be a combination of malloc + OF_getprop with the same semantic of return value. This patch modifies API signature to match these expectations. For the valid use cases with element size != 1 and to reduce modification scope new OF_getprop_alloc_multi function has been introduced that behaves the same way OF_getprop_alloc behaved prior to this patch. Reviewed by: ian, manu Differential Revision: https://reviews.freebsd.org/D14850 Notes: svn path=/head/; revision=332310
* Create a new ISA_PNP_INFO macro. Use this macro every where we haveWarner Losh2017-12-231-4/+5
| | | | | | | | | | ISA PNP card support (replace by hand version in if_ed). Move module declarations to the end of some files. Fix PCCARD_PNP_INFO to use nitems(). Remove some stale comments about pc98, turns out the comment was simply wrong. Notes: svn path=/head/; revision=327102
* sys/dev: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-2714-0/+28
| | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326255
* sys/dev: Replace zero with NULL for pointers.Pedro F. Giffuni2017-02-203-3/+3
| | | | | | | | | | | Makes things easier to read, plus architectures may set NULL to something different than zero. Found with: devel/coccinelle MFC after: 3 weeks Notes: svn path=/head/; revision=313982
* Remove pc98 support completely.Yoshihiro Takahashi2017-01-282-445/+2
| | | | | | | | | I thank all developers and contributors for pc98. Relnotes: yes Notes: svn path=/head/; revision=312910
* Use OF_prop_free instead of direct call to free(9)Oleksandr Tymoshenko2016-05-181-3/+3
| | | | | | | Reviewed by: marius Notes: svn path=/head/; revision=300173
* sys: use our nitems() macro when param.h is available.Pedro F. Giffuni2016-04-213-7/+4
| | | | | | | | | This should cover all the remaining cases in the kernel. Discussed in: freebsd-current Notes: svn path=/head/; revision=298431
* Fix the resource_list_print_type() calls to use uintmax_t.Justin Hibbits2016-03-221-2/+2
| | | | | | | Missed a bunch from r297000. Notes: svn path=/head/; revision=297199
* Migrate many bus_alloc_resource() calls to bus_alloc_resource_anywhere().Justin Hibbits2016-02-271-3/+3
| | | | | | | | | | | Most calls to bus_alloc_resource() use "anywhere" as the range, with a given count. Migrate these to use the new bus_alloc_resource_anywhere() API. Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D5370 Notes: svn path=/head/; revision=296137
* These files were getting sys/malloc.h and vm/uma.h with header pollutionGleb Smirnoff2016-02-011-0/+1
| | | | | | | via sys/mbuf.h Notes: svn path=/head/; revision=295126
* In order to reduce use of M_EXT outside of the mbuf allocator andRobert Watson2015-01-061-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | socket-buffer implementations, introduce a return value for MCLGET() (and m_cljget() that underlies it) to allow the caller to avoid testing M_EXT itself. Update all callers to use the return value. With this change, very few network device drivers remain aware of M_EXT; the primary exceptions lie in mbuf-chain pretty printers for debugging, and in a few cases, custom mbuf and cluster allocation implementations. NB: This is a difficult-to-test change as it touches many drivers for which I don't have physical devices. Instead we've gone for intensive review, but further post-commit review would definitely be appreciated to spot errors where changes could not easily be made mechanically, but were largely mechanical in nature. Differential Revision: https://reviews.freebsd.org/D1440 Reviewed by: adrian, bz, gnn Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=276750
* Mechanically convert to if_inc_counter().Gleb Smirnoff2014-09-193-29/+29
| | | | Notes: svn path=/head/; revision=271849
* Use define from if_var.h to access a field inside struct if_data,Gleb Smirnoff2014-08-301-1/+1
| | | | | | | | | that resides in struct ifnet. Sponsored by: Nginx, Inc. Notes: svn path=/head/; revision=270856
* Update NetBSD Foundation copyrights to 2-clause BSDEd Maste2014-03-188-56/+0
| | | | | | | | | | | | | | The NetBSD Foundation states "Third parties are encouraged to change the license on any files which have a 4-clause license contributed to the NetBSD Foundation to a 2-clause license." This change removes clauses 3 and 4 from copyright / license blocks that list The NetBSD Foundation as the only copyright holder. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=263289
* Provide necessary includes.Gleb Smirnoff2013-10-281-0/+1
| | | | Notes: svn path=/head/; revision=257290
* The r48589 promised to remove implicit inclusion of if_var.h soon. PrepareGleb Smirnoff2013-10-261-0/+1
| | | | | | | | | | | to this event, adding if_var.h to files that do need it. Also, include all includes that now are included due to implicit pollution via if_var.h Sponsored by: Netflix Sponsored by: Nginx, Inc. Notes: svn path=/head/; revision=257176
* Mechanically substitute flags from historic mbuf allocator withGleb Smirnoff2012-12-041-3/+3
| | | | | | | malloc(9) flags in sys/dev. Notes: svn path=/head/; revision=243857
* Make sparc64 compatible with NEW_PCIB and enable it:Marius Strobl2011-10-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Implement bus_adjust_resource() methods as far as necessary and in non-PCI bridge drivers as far as feasible without rototilling them. - As NEW_PCIB does a layering violation by activating resources at layers above pci(4) without previously bubbling up their allocation there, move the assignment of bus tags and handles from the bus_alloc_resource() to the bus_activate_resource() methods like at least the other NEW_PCIB enabled architectures do. This is somewhat unfortunate as previously sparc64 (ab)used resource activation to indicate whether SYS_RES_MEMORY resources should be mapped into KVA, which is only necessary if their going to be accessed via the pointer returned from rman_get_virtual() but not for bus_space(9) as the later always uses physical access on sparc64. Besides wasting KVA if we always map in SYS_RES_MEMORY resources, a driver also may deliberately not map them in if the firmware already has done so, possibly in a special way. So in order to still allow a driver to decide whether a SYS_RES_MEMORY resource should be mapped into KVA we let it indicate that by calling bus_space_map(9) with BUS_SPACE_MAP_LINEAR as actually documented in the bus_space(9) page. This is implemented by allocating a separate bus tag per SYS_RES_MEMORY resource and passing the resource via the previously unused bus tag cookie so we later on can call rman_set_virtual() in sparc64_bus_mem_map(). As a side effect this now also allows to actually indicate that a SYS_RES_MEMORY resource should be mapped in as cacheable and/or read-only via BUS_SPACE_MAP_CACHEABLE and BUS_SPACE_MAP_READONLY respectively. - Do some minor cleanup like taking advantage of rman_init_from_resource(), factor out the common part of bus tag allocation into a newly added sparc64_alloc_bus_tag(), hook up some missing newbus methods and replace some homegrown versions with the generic counterparts etc. - While at it, let apb_attach() (which can't use the generic NEW_PCIB code as APB bridges just don't have the base and limit registers implemented) regarding the config space registers cached in pcib_softc and the SYSCTL reporting nodes set up. Notes: svn path=/head/; revision=225931
* Use convenience functions where possible instead of accessing the PCITijl Coosemans2010-12-181-1/+0
| | | | | | | | | | | | | | | | configuration registers directly. Remove pci_enable_io calls where they are redundant. The PCI bus driver will set the right bits when the corresponding bus resource is activated. Remove redundant pci_* function calls from suspend/resume methods. The bus driver already saves and restores the PCI configuration. Reviewed by: jhb Approved by: kib (mentor) Notes: svn path=/head/; revision=216518
* Use SYS_RES_IOPORT instead of PCIM_CMD_PORTEN when calling pci_enable_io.Tijl Coosemans2010-12-101-1/+1
| | | | | | | Approved by: kib (mentor) Notes: svn path=/head/; revision=216358
* Add new tunable 'net.link.ifqmaxlen' to set default send interfaceMaxim Sobolev2010-05-031-2/+2
| | | | | | | | | | | | | queue length. The default value for this parameter is 50, which is quite low for many of today's uses and the only way to modify this parameter right now is to edit if_var.h file. Also add read-only sysctl with the same name, so that it's possible to retrieve the current value. MFC after: 1 month Notes: svn path=/head/; revision=207554
* The NetBSD Foundation has granted permission to remove clause 3 and 4 fromJoel Dahl2010-03-034-28/+0
| | | | | | | | | the software. Obtained from: NetBSD Notes: svn path=/head/; revision=204646
* Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/Robert Watson2009-06-261-2/+2
| | | | | | | | | | | | | | | | IF_ADDR_UNLOCK() across network device drivers when accessing the per-interface multicast address list, if_multiaddrs. This will allow us to change the locking strategy without affecting our driver programming interface or binary interface. For two wireless drivers, remove unnecessary locking, since they don't actually access the multicast address list. Approved by: re (kib) MFC after: 6 weeks Notes: svn path=/head/; revision=195049
* - Use bus_{read,write}_*(9) instead of bus_space_{read,write}_*(9) etcMarius Strobl2008-09-245-173/+140
| | | | | | | | | and take advantage of rman_get_rid(9) in order to save some softc members. - Provide and consume module dependency information for lebuffer(4). Notes: svn path=/head/; revision=183337
* o Move the MODULE_DEPEND() for cam(4) from the esp_sbus.c front-end toMarius Strobl2008-09-081-26/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the ncr53c9x.c core where it actually belongs so future front-ends don't need to add it. o Use the correct OFW property when looking for the initiator ID of the SBus device. o Don't specify an alignment when creating the parent DMA tag for SUNW,fas; their DMA engine doesn't require an alignment constraint and it's no inherited by the child DMA tags anyway (which probably is a bug though). o Drop the superfluous sc_maxsync and use sc_minsync instead. The former apparently was added due to a confusion with the maximum frequency used in cam(4), which basically corresponds to the inverse of minimum sync period. o Merge ncr53c9x.c from NetBSD: 1.116: NCRDMA_SETUP() should be called before NCR_SET_COUNT() and NCRCMD_DMA command in ncr53c9x_select(). 1.125: free allocated resources on detach. o Static'ize ncr53c9x_action(), ncr53c9x_init() and ncr53c9x_reset() as these are not required outside of ncr53c9x.c. o In ncr53c9x_attach() don't leak the device mutex in case attaching fails. o Register an asynchronous notification handler so in case cam(4) reports a lost device we can cancel outstanding commands and restore the default parameters for the target in question. o For FAS366 correctly support 16-bit target IDs and let it know that we use 32-bit transfers. o Overhaul the negotiation of transfer settings. This includes distinguishing between current and goal transfer settings of the target so we can renegotiate their goal settings when necessary and correcting the order in which tagged, wide and synchronous transfers are negotiated. o If we are requesting sense, force a renegotiation if we are currently using anything different from asynchronous at 8 bit as the target might have lost our transfer negotiations. o In case of an XPT_RESET_BUS just directly call ncr53c9x_init() instead of issuing a NCRCMD_RSTSCSI, which in turn will issue an interrupt that is treated as an unexpected SCSI bus reset by ncr53c9x_intr() and thus calls ncr53c9x_init(). Remove the now no longer used ncr53c9x_scsi_reset(). o Correct an off-by-one error when setting cpi->max_lun. o In replace printf(9) with device_printf(9) calls where appropriate and in ncr53c9x_action() remove some unnecessarily verbose messages. o In ncr53c9x_sched() use TAILQ_FOREACH() instead of reimplementing it and consolidate two tagging-related target info checks into one. o In ncr53c9x_done() set the CAM status to CAM_SCSI_STATUS_ERROR when appropriate, respect CAM_DIS_AUTOSENSE and teach it to return SCSI status information. o In ncr53c9x_dequeue() ensure the tags are cleared. o Use ulmin() instead of min() where appropriate. o In ncr53c9x_msgout() consistently use the reset label. o When we're interrupted during a data phase and the DMA engine is still active, don't panic but reset the core and the DMA engine as this should be sufficient. Also, the typical problem for triggering this was the lack of renegotiation when requesting sense. o Correctly handle DEVICE RESETs. o Adapt the locking of esp(4) to MPSAFE cam(4). This includes moving the calls of lsi64854_attach() to the bus front-ends so it can pass the esp(4) mutex to bus_dma_tag_create(9). o Change the LSI64854 driver to not create a DMA tag and map for the Ethernet channel as le(4) will handle these on its own as well as sync and unload the DMA maps for the SCSI and parallel port channel after a DMA transfer. o Cam(4)'ify some NetBSD-centric comments. o Use bus_{read,write}_*(9) instead of bus_space_{read,write}_*(9) and take advantage of rman_get_rid(9) in order to save some softc members. Reviewed by: scottl MFC after: 1 month Notes: svn path=/head/; revision=182876
* Correct the comments in am7990_intr() and am79900_intr(); it's notMarius Strobl2007-12-302-8/+6
| | | | | | | | | | | | | | | possible to end up in the interrupt handler again while processing the previous RX interrupt in ifp->if_input() because the MD interrupt code disables the delivery of the respective interrupt until all associated handlers were called (in the INTR_FILTER case the MI code supposedly does the same). Toggling the NIC interrupt enable bit in these handlers still is necessary though as some chips (f.e. the VMware emulated one) require this to be done in order to keep issuing interrupts. MFC after: 1 month Notes: svn path=/head/; revision=174986
* o break newbus api: add a new argument of type driver_filter_t toPaolo Pisati2007-02-235-5/+5
| | | | | | | | | | | | | | | | bus_setup_intr() o add an int return code to all fast handlers o retire INTR_FAST/IH_FAST For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current Reviewed by: many Approved by: re@ Notes: svn path=/head/; revision=166901
* Remove BUS_DMA_WAITOK from bus_dma_tag_create() invocations as it'sMarius Strobl2007-01-204-7/+7
| | | | | | | no valid flag there. Notes: svn path=/head/; revision=166148
* Add front-ends for the 'lebuffer' variants found on some SBus cards.Marius Strobl2007-01-202-0/+708
| | | | | | | | | | | | These are shared-memory variants based on Am79C90-compatible chips that apart from the missing DMA engine are similar to the 'ledma' variant including using a (pseudo-)bus/device for the buffer that the actual LANCE device hangs off from. The performance of these is close to that of the 'ledma' one, like expected at a few times the CPU load though. Notes: svn path=/head/; revision=166144
* For setting the port PCnet chips must be powered down or stopped andMarius Strobl2007-01-201-7/+15
| | | | | | | | | | | | | unlike documented may not take effect without an initialization. So don't invoke (*sc_mediachange) directly in lance_mediachange() but go through lance_init_locked(). It's suboptimal to impose this for all chips but given that besides the affected PCI bus front-end the only other front-end which supports media selection is and likely ever will be the 'ledma' front-end I see not enough reason to break the in-driver API for this (though one could argue both ways here). Notes: svn path=/head/; revision=166139
* Use bus_get_dma_tag() to obtain the parent DMA tag so le(4) works onMarius Strobl2007-01-203-3/+3
| | | | | | | platforms requiring this. Notes: svn path=/head/; revision=166138
* Use our own callout instead of if_slowtimo() for driving lance_watchdog()Marius Strobl2006-12-064-12/+25
| | | | | | | in order to avoid races accessing if_timer. Notes: svn path=/head/; revision=164933
* Revert the part of rev. 1.3 which changed the software style to beMarius Strobl2006-06-051-2/+10
| | | | | | | | | | | set to ILACC rather than PCnet-PCI as VMware doesn't implement ILACC compatibility, resulting in the VMware virtual machine to crash if enabled. Add a comment regarding usage of ILACC vs. PCnet-PCI mode. Reported and tested by: gnn, wsalamon Notes: svn path=/head/; revision=159271
* - Fix the busname in the DRIVER_MODULE.Yoshihiro Takahashi2006-05-221-1/+8
| | | | | | | | | | | | - Skip PnP devices as some wedge when trying to probe them as C-NET(98)S. This fix makes le(4) actually work with the C-NET(98)S. Reviewed by: marius Tested by: Watanabe Kazuhiro < CQG00620 at nifty dot ne dot jp > Notes: svn path=/head/; revision=158829
* - Add C-bus and ISA front-ends for le(4) so it can actually replaceMarius Strobl2006-05-172-0/+953
| | | | | | | | | | | | | | | lnc(4) on PC98 and i386. The ISA front-end supports the same non-PNP network cards as lnc(4) did and additionally a couple of PNP ones. Like lnc(4), the C-bus front-end of le(4) only supports C-NET(98)S and is untested due to lack of such hardware, but given that's it's based on the respective lnc(4) and not too different from the ISA front-end it should be highly likely to work. - Remove the descriptions of le(4), which where converted from lnc(4), from sys/i386/conf/NOTES and sys/pc98/conf/NOTES as there's a common one in sys/conf/NOTES. Notes: svn path=/head/; revision=158712
* - Revert if_le_pci.c rev. 1.2; although lnc(4) is now gone, le_pci_probe()Marius Strobl2006-05-167-215/+223
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | still should return BUS_PROBE_LOW_PRIORITY instead of BUS_PROBE_DEFAULT in order to give pcn(4) a chance to attach in case it probes after le(4). - Rearrange the code related to RX interrupt handling so that ownership of RX descriptors is immediately returned to the NIC after we have copied the data of the hardware, allowing the NIC to already reuse the descriptor while we are processing the data in ifp->if_input(). This results in a small but measurable increase in RX throughput. As a side-effect, this moves the workaround for the LANCE revision C bug to am7900.c (still off by default as I doubt we will actually encounter such an old chip in a machine running FreeBSD) and the workaround for the bug in the VMware PCnet-PCI emulation to am79000.c, which is now also only compiled on i386 (resulting in a small increase in RX throughput on the other platforms). - Change the RX interrupt handlers so that the descriptor error bits are only check once in case there was no error instead of twice (inspired by the NetBSD pcn(4), which additionally predicts the error branch as false). - Fix the debugging output of the RX and TX interrupt handlers; while looping through the descriptors print info about the currently processed one instead of always the previously last used one; remove pointless printing of info about the RX descriptor bits after their values were reset. - Create the DMA tags used to allocate the memory for the init block, descriptors and packet buffers with the alignment the respective NIC actually requires rather than using PAGE_SIZE unconditionally. This might as well fix the alignment of the memory as it seems we do not inherit the alignment constraint from the parent DMA tag. - For the PCI variants double the number of RX descriptors and buffers from 8 to 16 as this minimizes the number of RX overflows im seeing with one NIC-mainboard combination. Nevertheless move reporting of overflows under debugging as they seem unavoidable with some crappy hardware. - Set the software style of the PCI variants to ILACC rather than PCnet-PCI as the former is was am79000.c actually implements. Should not make a difference for this driver though. - Fix the driver name part in the MODULE_DEPEND of the PCI front-end for ether. - Use different device descriptions for PCnet-Home and PCnet-PCI. - Fix some 0/NULL confusion in lance_get(). - Use bus_addr_t for sc_addr and bus_size_t for sc_memsize as these are more appropriate than u_long for these. - Remove the unused LE_DRIVER_NAME macro. - Add a comment describing why we are taking the LE_HTOLE* etc approach instead of using byteorder(9) functions directly. - Improve some comments and fix some wording. MFC after: 2 weeks Notes: svn path=/head/; revision=158663
* Kill more references to lnc(4).Ruslan Ermilov2006-05-161-2/+1
| | | | | | | Submitted by: grep(1) Notes: svn path=/head/; revision=158647
* - In the interrupt handler clear the interrupt source flags beforeMarius Strobl2006-02-212-34/+48
| | | | | | | | | | | | | | | | | | | | | | processing the interrupt events. If we clear them afterwards we can completely miss some events as the NIC can change the source flags while we're in the handler. In order to not get another interrupt while we're in ifp->if_input() with the driver lock dropped we now turn off NIC interrupts while in the interrupt handler. Previously this was meant to be achieved by clearing the interrupt source flags after processing the interrupt events but didn't really work as clearing these flags doesn't actually acknowledge and re-enable the events. This fixes the device timeouts seen with the VMware LANCE. - Relax the watchdog timer somewhat; don't enable it until the last packet is enqueued and if there is a TX interrupt but there are still outstanding ones reload the timer. Reported and tested by: Morten Rodal <morten@rodal.no> MFC after: 3 days Notes: svn path=/head/; revision=155881
* Add le(4), a driver for AMD Am7900 LANCE and Am79C9xx PCnet NICs portedMarius Strobl2006-01-3111-0/+4374
from NetBSD. This driver actually can replace lnc(4). Advantages over lnc(4) are: - Cleaner and more flexible regarding MD needs. - Endian-clean and MPSAFE. - Supports ALTQ, VLAN_MTU, ifmedia. - Uses 32bit DMA for the PCI variants. This commit includes front-ends for the dma(4) pseudo-bus found on SBus- based sparc64 machines (thus supports the on-board LANCE in Sun Ultra 1) and PCI. In order to actually replace lnc(4), the front-ends for ISA and the PC98 CBUS would have to be added but for which I don't have hardware to test. Reviewed and some improvements by: yongari Tested on: i386, sparc64 Notes: svn path=/head/; revision=155093