#482: spin_lock_irqsave problem
----------------------------+-----------------------------------------------
 Reporter:  anonymous       |            Owner:     
     Type:  defect          |           Status:  new
 Priority:  major           |        Milestone:     
Component:  madwifi: other  |          Version:     
 Keywords:                  |   Patch_attached:  0  
----------------------------+-----------------------------------------------
 as i remember you must use only local variable to save flags on funcs like
 save_flags(), spin_lock_irqsave() etc. (maybe i'm wrong?). Now look at
 current code in madwifi_ng:
 #define ATH_NODE_UAPSD_LOCK_IRQ(_an)
 spin_lock_irqsave(&(_an)->an_uapsd_lock, (_an)->an_uapsd_lockflags)
 #define ATH_TXQ_LOCK_IRQ(_tq)
 spin_lock_irqsave(&(_tq)->axq_lock, (_tq)->axq_lockflags)
 #define ATH_RXBUF_LOCK_IRQ(_sc)
 spin_lock_irqsave(&(_sc)->sc_rxbuflock, (_sc)->sc_rxbuflockflags)
 it seems to me that you need macros like that:
 #define ATH_RXBUF_LOCK_IRQSAVE(_sc) do {                                \
         unsigned long __ilockflags;                             \
         spin_lock_irqsave(&(_sc)->sc_rxbuflock, __ilockflags);
 #define ATH_RXBUF_UNLOCK_IRQRESTORE(_sc)                \
         spin_unlock_irqrestore(&(_sc)->sc_rxbuflock, __ilockflags);     \
 } while (0)

-- 
Ticket URL: <http://madwifi.org/ticket/482>
MadWifi <http://madwifi.org/>
Multiband Atheros Driver for Wireless Fidelity

Reply via email to