cvs commit: src/sys/dev/em if_em.c if_em.h if_em_hw.c if_em_hw.h if_em_osdep.h

Gleb Smirnoff glebius at
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:
  revision 1.83
  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 [1]
   - replace inl/outl with bus_space(9) [1]
   - fix endian issue on VLAN handling.
   - reorder header files and remove unnecessary one.
  Reviewed by:            cognet
  No response from:       pdeuskar, tackerman
  Obtained from:          OpenBSD [1]
  revision 1.84
  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 [1].
  - 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().
  revision 1.86
  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.
  revision 1.88
  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
  revision 1.89
  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
  revision 1.90
  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  +325 -199  src/sys/dev/em/if_em.c  +30 -24    src/sys/dev/em/if_em.h  +274 -77   src/sys/dev/em/if_em_hw.c  +106 -16   src/sys/dev/em/if_em_hw.h  +15 -12    src/sys/dev/em/if_em_osdep.h

More information about the cvs-src mailing list