1. 28 Sep, 2012 37 commits
  2. 27 Sep, 2012 3 commits
    • Eliad Peller's avatar
      wlcore: protect wlcore_op_set_key with mutex · af390f4d
      Eliad Peller authored
      wlcore_op_set_key() calls wl18xx_set_key(),
      which in turn executes some of his function
      calls without acquiring wl->mutex and making
      sure the fw is awake.
      
      Adding mutex_lock()/ps_elp_wakeup() calls is
      not enough, as wl18xx_set_key() calls
      wl1271_tx_flush() which can't be called while
      the mutex is taken.
      
      Add the required calls to wlcore_op_set_key,
      but limit the queues_stop and flushing
      to the only encryption types in which
      a spare block might be needed (GEM and TKIP).
      
      [Arik - move state != ON check]
      Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
      Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
      af390f4d
    • Eliad Peller's avatar
      wlcore: decrease elp timeout · ab2c4f37
      Eliad Peller authored
      The current elp timeout (the same as the dynamic
      ps timeout - 1500ms) is too high. Usually,
      wl1271_ps_elp_sleep() get called right after tx/rx,
      which is fine, but some command might get sent
      even when there is no traffic (e.g. ht changes
      triggered by beacon frames), and leaving the
      device awake for 1500ms in this case is redundant.
      
      Use a timeout of 30ms.
      The fw won't enter elp anyway before the dynamic-ps
      timeout was expired as well (and it entered ps
      successfully).
      Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
      ab2c4f37
    • Ido Yariv's avatar
      wlcore: Load the NVS file asynchronously · 6f8d6b20
      Ido Yariv authored
      The NVS file is loaded by the device's probe callback with the help of
      request_firmware(). Since request_firmware() relies on udevd, the
      modules cannot be loaded before hotplug events are handled.
      
      Fix this by loading the NVS file asynchronously and continue
      initialization only after the firmware request is over.
      Signed-off-by: default avatarIdo Yariv <ido@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
      6f8d6b20