[RFC v3 04/11] ath10k: add start_once support
Kalle Valo
kvalo at qca.qualcomm.com
Fri Dec 22 07:25:08 PST 2017
Erik Stromdahl <erik.stromdahl at gmail.com> writes:
> Add possibility to configure the driver to only start target once.
> This can reduce startup time of SDIO devices significantly since
> loading the firmware can take a substantial amount of time.
But it also makes it impossible to restart the firmware if it crashes,
right? Good to mention that in the commit log.
> The patch is also necessary for high latency devices in general since
> it does not seem to be possible to rerun the BMI phase (fw upload)
> without power-cycling the device.
>
> Signed-off-by: Erik Stromdahl <erik.stromdahl at gmail.com>
[...]
> --- a/drivers/net/wireless/ath/ath10k/core.h
> +++ b/drivers/net/wireless/ath/ath10k/core.h
> @@ -784,6 +784,8 @@ struct ath10k {
>
> bool is_high_latency;
>
> + bool is_started;
Is a separate boolean really needed? State management becomes really
difficult if an enum ath10k_state and this boolean to define the state
of the device. Can't you use ar->state?
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -569,6 +569,12 @@ struct ath10k_hw_params {
> bool is_high_latency;
>
> enum ath10k_bus bus;
> +
> + /* Specifies whether or not the device should be started once.
> + * If set, the device will be started once by the early fw probe
> + * and it will not be terminated afterwards.
> + */
> + bool start_once;
> };
I would actually prefer that the bus driver (eg. usb.c) decides this and
provides it though ath10k_core_register(). It might be that some SDIO
devices have a GPIO line to reset the device etc.
The struct ath10k_bus_params I mentioned earlier might be handy also
here.
--
Kalle Valo
More information about the ath10k
mailing list