cvs commit: src/sys/net80211 ieee80211_input.c ieee80211_node.c ieee80211_node.h ieee80211_output.c ieee80211_proto.h ieee80211_var.h src/sys/dev/wi if_wi.c src/sys/dev/ath if_ath.c if_athvar.h

Sam Leffler sam at FreeBSD.org
Tue Aug 19 15:17:05 PDT 2003


sam         2003/08/19 15:17:04 PDT

  FreeBSD src repository

  Modified files:
    sys/net80211         ieee80211_input.c ieee80211_node.c 
                         ieee80211_node.h ieee80211_output.c 
                         ieee80211_proto.h ieee80211_var.h 
    sys/dev/wi           if_wi.c 
    sys/dev/ath          if_ath.c if_athvar.h 
  Log:
  MFp4 changes to fix locking issues and correct reference
  count handling of station entries in hostap mode:
  
  Input path:
  
  o driver is now expected to find the node associated with the
    sender of a received frame; use ic_bss if none is located
  o driver passes the (referenced) node into ieee80211_input for
    use within the wlan module and is responsible for cleaning up
    on return
  o the antenna state is no longer passed up with each frame; this
    is now considered driver-private state and drivers are responsible
    for keeping it in the driver-private part of a node
  
  Output path:
  
  Revamp output path for management frames to eliminate redundant
  locking that causes problems and to correct reference counting
  bogosity that occurs when stations are timed out due to inactivity
  (in AP mode).  On output the refcnt'd node is stashed in the pkthdr's
  recvif field (yech) and retrieved by the driver.  This eliminates
  an unref/ref scenario and related node table unlock/lock due to the
  driver looking up the node.  This is particularly important when
  stations are timed out as this causes a lock order reversal that
  can result in a deadlock.  As a byproduct we also reduce the overhead
  for sending management frames (minimal).  Additional fallout from
  this is a change to ieee80211_encap to return a refcn't node for
  tieing to the outbound frame.  Node refcnts are not reclaimed until
  after a frame is completely processed (e.g. in the tx interrupt
  handler).  This is especially important for timed out stations as
  this deref will be the final one causing the node entry to be
  reclaimed.
  
  Additional semi-related changes:
  o replace m_copym use with m_copypacket (optimization)
  o add assert to verify ic_bss is never free'd during normal operation
  o add comments explaining calling conventions by drivers for frames
    going in each direction
  o remove extraneous code that "cannot be executed" (e.g. because
    pointers may never be null)
  
  Revision  Changes    Path
  1.12      +70 -37    src/sys/dev/ath/if_ath.c
  1.5       +3 -1      src/sys/dev/ath/if_athvar.h
  1.150     +51 -22    src/sys/dev/wi/if_wi.c
  1.8       +55 -73    src/sys/net80211/ieee80211_input.c
  1.6       +18 -15    src/sys/net80211/ieee80211_node.c
  1.5       +1 -2      src/sys/net80211/ieee80211_node.h
  1.4       +104 -37   src/sys/net80211/ieee80211_output.c
  1.4       +6 -6      src/sys/net80211/ieee80211_proto.h
  1.5       +2 -1      src/sys/net80211/ieee80211_var.h


More information about the cvs-src mailing list