[ATM] second pass at fixing atm spinlock

From: chas williams (chas@locutus.cmf.nrl.navy.mil)
Date: Thu Mar 27 2003 - 17:28:28 EST


ok, here is a further attempt at fixing the smp problems in the linux-atm
stack. things have been moved around in net/atm:

. atm sk's are reference counted. this makes the vcc_release (renamed
  from atm_release_vcc for consistency) and svc_release easier to write
  since you dont need to explicity free the sk
. vcc's are stored as a list of sockets, like other protocols
. atm drivers should use vcc_hold/vcc_put to modify reference counts. the
  driver should read_lock(vcc_sklist_lock) before doing a vcc_hold() if
  they are in their 'bottom half'. i converted eni, idt77252 (untested --
  no hardware), fore200e (untest -- lazy) and nicstar. i also included the
  he driver. the eni driver is special, since the bottom half is a tasklet
  you can simply stop the bottom half and be sure the bottom half
  isnt holding a reference. the he just grabs the vcc_sklist_lock and
  processes all the vcc's needing serviced. a vcc cant disappear while
  the lock is held (since the vcc_release needs to do a write_lock to unhash
  the socket/vcc before dropping the refcnt to 0).
. the nodev list has been removed and bind_vcc/unlink have been changed to
  just insert/remove vcc list operations. this makes things a bit clearer.
. driver's check_ci() routine have been removed in favor of the one in
  atm_misc.c. very few were actually any faster, and this functionality is
  rarely used.
. there is a new function, vcc_lookup(), used mostly by the fore200e and he
  driver. vcc's returned by this function will need a vcc_put() or the
  ref count will be wrong. in the future, most drivers should probably
  use this function to find the vcc for their newly arrived data. there
  possibly could be a routine atmif_rx(atmdev, skb, vpi, vci) which
  just does the right thing. ideally, atm would use netif_rx() but one
  would need to dummy up a ethernet header on each of the pdu's. comments
  on that idea?
. all the stuff from the previous version: atmdev ref counting, atm and
  clip can now build as modules.

ftp://ftp.cmf.nrl.navy.mil/pub/chas/linux-atm/2_5_64_atm_dev_lock.patch

[i will try to get a 2.5.65 version available this weekend]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Mar 31 2003 - 22:00:29 EST