1. 28 Sep, 2012 35 commits
  2. 27 Sep, 2012 5 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
    • Ido Yariv's avatar
      wlcore: Refactor probe · 3992eb2b
      Ido Yariv authored
      Move most of the device-specific probe functionality into setup(), a new
      op. By doing this, wlcore_probe will be the first to request a firmware
      from userspace, making it easier to load the NVS file asynchronously.
      Signed-off-by: default avatarIdo Yariv <ido@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
      3992eb2b
    • Ido Yariv's avatar
      wlcore: Allow memory access when the FW crashes · d5560238
      Ido Yariv authored
      When the no_recovery flag is used, the recovery work will not restart
      the FW and the state will not be set to 'on'. To enable post-mortem
      analysis, allow memory access in the 'restarting' state.
      
      Also, since the FW might not be operational, don't fail the read/write
      operations if elp_wakeup fails.
      Reported-by: default avatarArkady Miasnikov <a-miasnikov@ti.com>
      Signed-off-by: default avatarIdo Yariv <ido@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
      d5560238