On Wed, Sep 01, 2010 at 02:52:33PM +0200, Johannes Berg wrote: > > static int iwl_send_scan_abort(struct iwl_priv *priv) > > { > > - int ret = 0; > > + int ret; > > struct iwl_rx_packet *pkt; > > struct iwl_host_cmd cmd = { > > .id = REPLY_SCAN_ABORT_CMD, > > .flags = CMD_WANT_SKB, > > }; > > Since you're going through, and probably know where what lock is needed, > could you annotate the places with, e.g. > > lockdep_assert_held(&priv->mutex)? Ok > These "inline" annotations seem wrong, either the function is used once, > then gcc will inline it, or it is used multiple times, then we shouldn't > inline it. Ok > > +int iwl_scan_cancel_sleep(struct iwl_priv *priv) > > +{ > > + int ret; > > + unsigned long timeout = jiffies + IWL_SCAN_ABORT_SLEEP; > > + > > + IWL_DEBUG_SCAN(priv, "Scan cancel wait\n"); > > + > > + cancel_delayed_work(&priv->scan_timeout); > > + iwl_do_scan_abort(priv); > > + > > + while (time_before_eq(jiffies, timeout)) { > > + if (!test_bit(STATUS_SCAN_HW, &priv->status)) > > + break; > > + msleep(20); > > + } > > This, and > > > +void iwl_wait_for_scan_end(struct iwl_priv *priv) > > +{ > > + unsigned long timeout = jiffies + IWL_SCAN_WAIT_END; > > + > > + while (time_before_eq(jiffies, timeout)) { > > + if (!test_bit(STATUS_SCANNING, &priv->status)) > > + break; > > + msleep(20); > > + } > > this seems like it could use a completion? We don't know is scanning is currently performed or not, so we nobody could ever call complete(). Above code works fine if no scan is running. Stanislaw -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html