Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jun 2004 18:47:25 +0000 (UTC)
From:      Max Laier <mlaier@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/contrib/altq/altq if_altq.h
Message-ID:  <200406121847.i5CIlPVt066137@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
mlaier      2004-06-12 18:47:25 UTC

  FreeBSD src repository

  Modified files:
    sys/contrib/altq/altq if_altq.h 
  Log:
  Add an additional queue which will be "owned by the driver". This allows to
  rig a PREPEND macro for ALTQ as the POLL/DEQUEUE semantic is very bad in
  terms of locking. We make this a full functional queue to allow "bulk
  dequeue" which will further reduce the locking overhead (for non-altq
  enabled devices). Drivers will access this via the following macros, which
  will show up in <net/if_var.h> once we expose ALTQ to the build:
  
  IFQ_DRV_DEQUEUE(ifq, m) - takes a mbuf off the queue (driver queue first)
  IFQ_DRV_PREPEND(ifq, m) - pushes a mbuf back to the driver queue
  IFQ_DRV_PURGE(ifq)      - drops all packets in both queues
  IFQ_DRV_IS_EMPTY(ifq)   - checks for pending mbufs in either queue
  
  One has to make sure that the first three are protected by a driver mutex.
  At the moment most network drivers still require Giant, so this is not an
  issue. Even those that have thier own mutex usually hold it in if_start and
  the like, so this requirement is almost always satisfied.
  
  This evolved from a discussion with Andrew Gallatin.
  
  Revision  Changes    Path
  1.2       +7 -0      src/sys/contrib/altq/altq/if_altq.h



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