Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Aug 2008 21:14:24 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/iicbus ad7418.c icee.c if_ic.c
Message-ID:  <200808042114.m74LEZo1057254@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
jhb         2008-08-04 21:14:24 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/iicbus       ad7418.c icee.c if_ic.c 
  Log:
  SVN rev 181305 on 2008-08-04 21:14:24Z by jhb
  
  Lock the consumers of the iicbus(4) infrastructure:
  - ad7418(4) uses an sx lock instead of a mtx since the iicbus(4) stuff it
    calls can sleep (request_bus()).  Also, I expanded the locking slightly
    to serialize writes to data stored in the softc.
  - Similarly, the icee(4) driver now uses an sx lock instead of a mutex.
    I also removed the pointless OPENED flag and flags field from the softc.
  - The locking for the ic(4) driver was a bit trickier:
    - Add a mutex to the softc to protect softc data.
    - The driver uses malloc'd buffers that are the size of the interface
      MTU to send and receive packets.  Previously, these were allocated
      every time the interface was brought up and anytime the MTU was
      changed, with various races that could result in memory leaks.  I
      changed this to be a bit simpler and more like other NIC drivers in
      that we allocate buffers during attach for the default MTU size and
      only reallocate them on MTU changes.  The reallocation procedure
      goes to some lengths with various flags to not replace either the
      the receive or transmit buffers while the driver is busy receiving
      or transmitting a packet.
    - Store the device_t of the driver in the softc instead of detours into
      new-bus using if_dunit from the ifnet and an even more bizarre detour
      to get the softc instead of using if_softc.
    - Drop the driver mutex when invoking netisr_dispatch() to pass the
      packet up to IP.
    - Use if_printf().
  
  Revision  Changes    Path
  1.2       +10 -10    src/sys/dev/iicbus/ad7418.c
  1.3       +9 -23     src/sys/dev/iicbus/icee.c
  1.27      +86 -70    src/sys/dev/iicbus/if_ic.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200808042114.m74LEZo1057254>