cvs commit: src/sys/dev/em if_em.c if_em.h if_em_hw.c if_em_hw.h
glebius at FreeBSD.org
Fri Nov 25 14:12:21 GMT 2005
glebius 2005-11-25 14:11:59 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_6)
sys/dev/em if_em.c if_em.h if_em_hw.c if_em_hw.h
Sync em(4) driver with HEAD, merging the following changes:
date: 2005/11/09 08:43:18; author: yongari; state: Exp; lines: +41 -38
Make em(4) work on big-endian architectures.
- disable jumbo frame support on strict alignment architectures due
to the limitation of hardware. The driver needs a fix-up code for
RX side. The fix will show up in near future.
- fix endian issue for 82544 on PCI-X bus. I couldn't test this as
I don't have the NIC/hardware.
- prefer PCIR_BAR to hardcoded EM_MMBA.
- Properly checks for for 64bit BAR 
- replace inl/outl with bus_space(9) 
- fix endian issue on VLAN handling.
- reorder header files and remove unnecessary one.
Reviewed by: cognet
No response from: pdeuskar, tackerman
Obtained from: OpenBSD 
date: 2005/11/09 15:23:54; author: glebius; state: Exp; lines: +7 -3
- Introduce two more stat counters, counting number of RX
overruns and number of watchdog timeouts.
- Do not log(9) RX overrun events, since this pessimizes
things under load .
- Do not increase if->if_oerrors in em_watchdog(), since
this leads to counter slipping back, when if->if_oerrors
is recalculated in em_update_stats_counters(). Instead
increase watchdog counter in em_watchdog() and take it
into account in em_update_stats_counters().
date: 2005/11/11 16:04:51; author: ru; state: Exp; lines: +1 -1
- Store pointer to the link-level address right in "struct ifnet"
rather than in ifindex_table; all (except one) accesses are
through ifp anyway. IF_LLADDR() works faster, and all (except
one) ifaddr_byindex() users were converted to use ifp->if_addr.
- Stop storing a (pointer to) Ethernet address in "struct arpcom",
and drop the IFP2ENADDR() macro; all users have been converted
to use IF_LLADDR() instead.
revisions 1.85, 1.87
- Introduce tunables em.hw.txd and em.hw.rxd, which allow administrator
to configure number of transmit and receive descriptors.
- Check em.hw.txd and em.hw.rxd against hardware limits [*] and require
them to be multiple of 128.
date: 2005/11/21 04:17:43; author: yongari; state: Exp; lines: +121 -83
busdma cleanup for em(4).
- don't force busdma to pre-allocate bounce pages for parent tag.
- use system supplied roundup2 macro instead of rolling its own version.
- TX/RX decriptor length should be multiple of 128. There is no
no need to expand the size with the multiple of 4096.
- don't create/destroy DMA maps in TX/RX handlers. Use pre-allocated
DMA maps. Since creating DMA maps on sparc64 is time consuming
operations(resource mananger overhead), this change should boost
performance on sparc64. I could get > 2x speedup on Ultra60.
- TX/RX descriptors could be aligned on 128 boundary. Aligning them
on PAGE_SIZE is waste of resource.
- don't blindly create TX DMA tag with size of MCLBYTES * 8. The size
is only valid under jumbo frame environments. Instead of using the
hardcoded value, re-compute necessary size on the fly.
- RX side bus_dmamap_load_mbuf_sg(9) support.
- remove unused macro EM_ROUNDUP and constant EM_MMBA.
Reviewed by: scottl
Tested by: glebius
date: 2005/11/24 01:44:48; author: glebius; state: Exp; lines: +131 -77
Merge in new driver version from Intel - 3.2.18.
The most important change is support for adapters based on
82571 and 82572 chips.
Tested on: 82547EI on i386
Tested on: 82540EM on sparc64
date: 2005/11/24 15:13:47; author: cognet; state: Exp; lines: +3 -1
Remember the bus_dmamap_t where we loaded the mbuf, and sync this map instead
of tx_buffer->map, or we could end up syncing the wrong map.
Revision Changes Path
126.96.36.199 +325 -199 src/sys/dev/em/if_em.c
188.8.131.52 +30 -24 src/sys/dev/em/if_em.h
184.108.40.206 +274 -77 src/sys/dev/em/if_em_hw.c
220.127.116.11 +106 -16 src/sys/dev/em/if_em_hw.h
18.104.22.168 +15 -12 src/sys/dev/em/if_em_osdep.h
More information about the cvs-src