Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jun 2009 07:17:49 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/dev/fxp if_fxp.c if_fxpvar.h
Message-ID:  <200906210718.n5L7IDUr052470@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
yongari     2009-06-21 07:17:49 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/fxp          if_fxp.c if_fxpvar.h 
  Log:
  SVN rev 194573 on 2009-06-21 07:17:49Z by yongari
  
  Overhaul fxp(4) multicast filter programming. fxp(4) hardwares do
  not allow multicast filter programming when controller is busy to
  send/receive frames. So it used to mark need_mcsetup bit and defer
  multicast filter programming until controller becomes idle state.
  To detect when the controller is idle fxp(4) relied on Tx
  completion interrupt with NOP command and fxp_start_body and
  fxp_intr_body had to see whether pending multicast filter
  programming was requested. This resulted in very complex logic and
  sometimes it did not work as expected.
  Since the controller should be in idle state before any multicast
  filter modifications I changed it to reinitialize the controller
  whenever multicast filter programming is required. This is the same
  way what OpenBSD and NetBSD does. Also I added IFF_DRV_RUNNING
  check in ioctl handler so controller would be reinitialized only if
  it is absolutely needed.
  With this change I guess we can remove fxp(4) DELAY hack in ifioctl
  for IPv6 case.
  
  Revision  Changes    Path
  1.293     +37 -132   src/sys/dev/fxp/if_fxp.c
  1.48      +1 -2      src/sys/dev/fxp/if_fxpvar.h



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