summaryrefslogtreecommitdiffstats
path: root/sys/dev/nfe
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't fail on device attach if jumbo frame support was unsuccessful.yongari2007-07-242-9/+26
| | | | | | | | | | | | | Because nfe(4) hardware doesn't support SG on Rx path, supporting jumbo frame requires very large contiguous kernel memory(i.e. several mega bytes). In case of lack of contiguous kernel memory that allocation request may always fail. However nfe(4) can operate on normal sized MTU frames, so go ahead and just disable jumbo frame support. While I'm here add a new tunable "hw.nfe.jumbo_disable" to disable jumbo frame support. In nfe_poll, make sure to invoke correct Rx handler. Approved by: re (kensmith)
* The maximum size of the sum of all segment lengths in a given DMA mappingyongari2007-06-121-1/+1
| | | | | | should be 65535 + link layer headers. Pointed out by: gallatin
* Increase a maximum segment size of DMA to 4096. Previously it usedyongari2007-06-122-2/+4
| | | | | | | | MCLBYTES for the segment size but it used too many Tx descriptors in TSO case. While I'm here adjust maximum size of the sum of all segment lengths in a given DMA mapping to 65535, the maximum size, in bytes, of a IP packet.
* Bring overhauled nfe(4) into tree.yongari2007-06-123-909/+2103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o s/printf/device_printf/g o Nuke OpenBSDism. o Nuke NetBSD/OpenBSD specific DMA sync operations.(we don't have a way to sync a single descriptor within a DMA map.) o Remove recursive mutex. o bus_dma(9) clean up. o 40bit DMA address support. o Add protection for Rx map load failure. o Fix a long standing bug for watchdog timeout. [1] o Add additional protections, missing Tx completion interrupt, losing start Tx command, for watchdog timeout. o Switch to taskqueue(9) API to handle interrupts. o Use our own timer for watchdog instead of if_watchdog/if_timer interface. o Advertise VLAN header length/capability correctly to upper layer. o Remove excessive kernel stack consumption in nfe_encap(). o Handle highly fragmented mbuf chains correctly. o Enable etherenet address reprogramming with ifconfig(8). o Add ALTQ/TSO, MSI/MSIX support. o Increased Rx ring to 256 descriptors from 128. o Align Tx/Rx descriptor ring on sizeof(struct nfe_desc64) boundary. o Remove alignment restrictions on Tx/Rx buffers. o Rewritten jumbo frame support code. o Add support for hardware assistend VLAN tag insertion/stripping. o Add support for Tx/Rx flow control based on patches from Peer Chen. [2] o Add a routine that detects whether ethernet address swap routines is required. [3] o Add a workaround that take MAC/PHY out of power down mode. o Add suspend/resume support. o style(9) and code clean up. Special thanks to Shigeaki Tagashira, the original porter of nfe(4), who submitted lots of patches, performed uncountable number of regression tests and maintained nfe(4) for a long time. Without his enthusiastic help and support I could never have completed this overhauling task. The only weak point of nfe(4) compared to nve(4) is instability of manual half-duplex media selection on certain hardwares(auto sensing media type should work for all cases, though). This was a long standing bug of nfe(4) and I still have no idea why it doesn't work on some hardwares. Obtained from: OpenBSD [1] Submitted by: Peer Chen < pchen at nvidia dot com > [2], [3] Reviewed by: Shigeaki Tagashira < shigeaki AT se DOT hiroshima-u DOT ac DOT jp > Tested by: Shigeaki Tagashira, current Discussed with: current Silence from: obrien
* Catch up the rest of the drivers with the ether_vlan_mtap modifications.csjp2007-03-041-1/+1
| | | | | | | | | | If these drivers are setting M_VLANTAG because they are stripping the layer 2 802.1Q headers, then they need to be re-inserting them so any bpf(4) peers can properly decode them. It should be noted that this is compiled tested only. MFC after: 3 weeks
* o break newbus api: add a new argument of type driver_filter_t topiso2007-02-231-1/+1
| | | | | | | | | | | | | 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@
* Fix TX/RX checksum offload.obrien2006-11-272-16/+21
| | | | Submitted by: Peer Chen at nVIDIA
* Reformat to KNF after revision 1.12.obrien2006-11-271-85/+81
|
* Fix the jumbo frame support.obrien2006-11-273-209/+63
| | | | Submitted by: Peer Chen at nVIDIA (reworked by me)
* Grrr. new .vimrc file is really giving me trouble.. get the whitespace right.obrien2006-11-271-2/+2
|
* Fix editor fatfingering in rev 1.9.obrien2006-11-271-2/+2
|
* nfe_stop() requires lock to be held when calling.obrien2006-11-261-0/+2
|
* Missed two nits in rev 1.7.obrien2006-11-171-2/+2
|
* style(9)obrien2006-10-191-153/+153
|
* style(9) cleanup.obrien2006-10-191-243/+332
|
* Correct the WOL magic value.obrien2006-10-161-1/+1
| | | | Submitted by: Peer Chen at nVIDIA
* Try to be more precise in identifying the various nForce networking adapters.obrien2006-10-161-14/+14
|
* Move ethernet VLAN tags from mtags to its own mbuf packet header fieldandre2006-09-171-16/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m_pkthdr.ether_vlan. The presence of the M_VLANTAG flag on the mbuf signifies the presence and validity of its content. Drivers that support hardware VLAN tag stripping fill in the received VLAN tag (containing both vlan and priority information) into the ether_vtag mbuf packet header field: m->m_pkthdr.ether_vtag = vlan_id; /* ntohs()? */ m->m_flags |= M_VLANTAG; to mark the packet m with the specified VLAN tag. On output the driver should check the mbuf for the M_VLANTAG flag to see if a VLAN tag is present and valid: if (m->m_flags & M_VLANTAG) { ... = m->m_pkthdr.ether_vtag; /* htons()? */ ... pass tag to hardware ... } VLAN tags are stored in host byte order. Byte swapping may be necessary. (Note: This driver conversion was mechanic and did not add or remove any byte swapping in the drivers.) Remove zone_mtag_vlan UMA zone and MTAG_VLAN definition. No more tag memory allocation have to be done. Reviewed by: thompsa, yar Sponsored by: TCP/IP Optimization Fundraise 2005
* Add support for MCP61 and MCP65 adaptors.obrien2006-09-112-0/+36
| | | | Submitted by: Peer Chen at nVIDIA
* Fix alignment of RX bufs DMA map to be realistic. Maybe it works onru2006-08-141-2/+2
| | | | | | | | | i386 (I don't know) but on amd64 at hand here, it paniced early at boot. (I'm pretty sure that PAGE_SIZE here was miscopied from another place during porting, where in OpenBSD bus_dmamem_alloc() is used, but there PAGE_SIZE means completely different thing.)
* Add a pure open source nForce Ethernet driver, under BSDL.obrien2006-06-263-999/+1484
| | | | | | | | | This driver was ported from OpenBSD by Shigeaki Tagashira <shigeaki@se.hiroshima-u.ac.jp> and posted at http://www.se.hiroshima-u.ac.jp/~shigeaki/software/freebsd-nfe.html It was additionally cleaned up by me. It is still a work-in-progress and thus is purposefully not in GENERIC. And it conflicts with nve(4), so only one should be loaded.
* Import the nfe (nForce Ethernet) driver from OpenBSD.obrien2006-06-263-0/+2009
This is a pure open source NIC driver with a BSD license. These bits were taken from the OpenBSD public CVS repository on 1-May-06.
OpenPOWER on IntegriCloud