From: Francois R. <ro...@fr...> - 2003-07-30 18:46:30
|
chas williams <ch...@cm...> : [...] > that is a beaut. i suspect that moving the lock until the skb_peek() > is complete will be just fine. comments about that idea? Do you mean: while (1) { spinlock(); skb = skb_peek(&zatm_vcc->backlog); spin_unlock(); if (!skb) break; sleep(); } (+ same thing for tx_queue) Short review show two uses of close_tx(): 1) zatm_open() -> open_tx_first() -> close_tx() The cli() isn't even reached as tx_chan hasn't been set != 0 and close_tx() starts with: chan = zatm_vcc->tx_chan; if (!chan) return; 2) zatm_close() -> close_tx() zatm_close() does clear_bit(ATM_VF_READY,&vcc->flags); thus zatm_send() can't feed zatm_vcc->backlog Remaining use of backlog/tx_queue is through: zatm_int() -> poll_tx() -> dequeue_tx() <- backlog/tx_queue -> do_tx <- tx_queue Thus it seems you suspect right. Now, could someone tell me what does "beaut" mean ? -- Ueimor |