Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Nov 2009 18:20:31 +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:  <200911041820.nA4IKl8l071789@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
yongari     2009-11-04 18:20:31 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_7)
    sys/dev/fxp          if_fxp.c if_fxpvar.h 
  Log:
  SVN rev 198917 on 2009-11-04 18:20:31Z by yongari
  
  MFC r194573:
    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.266.2.21  +37 -132   src/sys/dev/fxp/if_fxp.c
  1.40.2.8    +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?200911041820.nA4IKl8l071789>