[RFC,v3,01/11] ath10k: high_latency detection
diff mbox

Message ID 20170917194013.8658-2-erik.stromdahl@gmail.com
State New
Headers show

Commit Message

Erik Stromdahl Sept. 17, 2017, 7:40 p.m. UTC
The setup of high latency chips (USB and SDIO) is
sometimes different than for chips using low latency
interfaces.

The bus type is used to determine if the interface is
a high latency interface.

Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
---
 drivers/net/wireless/ath/ath10k/core.c | 1 +
 drivers/net/wireless/ath/ath10k/core.h | 7 +++++++
 2 files changed, 8 insertions(+)

Comments

Kalle Valo Dec. 22, 2017, 3:06 p.m. UTC | #1
Erik Stromdahl <erik.stromdahl@gmail.com> writes:

> The setup of high latency chips (USB and SDIO) is
> sometimes different than for chips using low latency
> interfaces.
>
> The bus type is used to determine if the interface is
> a high latency interface.
>
> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
> ---
>  drivers/net/wireless/ath/ath10k/core.c | 1 +
>  drivers/net/wireless/ath/ath10k/core.h | 7 +++++++
>  2 files changed, 8 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
> index a4f635820f35..f1924c974a12 100644
> --- a/drivers/net/wireless/ath/ath10k/core.c
> +++ b/drivers/net/wireless/ath/ath10k/core.c
> @@ -2496,6 +2496,7 @@ struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
>  	ar->hw_rev = hw_rev;
>  	ar->hif.ops = hif_ops;
>  	ar->hif.bus = bus;
> +	ar->is_high_latency = ath10k_is_high_latency(bus);

I would prefer the bus driver to provide this via a parameter in
ath10k_core_register() call.

> --- a/drivers/net/wireless/ath/ath10k/core.h
> +++ b/drivers/net/wireless/ath/ath10k/core.h
> @@ -789,6 +789,8 @@ struct ath10k {
>  
>  	bool p2p;
>  
> +	bool is_high_latency;
> +
>  	struct {
>  		enum ath10k_bus bus;
>  		const struct ath10k_hif_ops *ops;
> @@ -1013,6 +1015,11 @@ static inline bool ath10k_peer_stats_enabled(struct ath10k *ar)
>  	return false;
>  }
>  
> +static inline bool ath10k_is_high_latency(enum ath10k_bus bus)
> +{
> +	return ((bus == ATH10K_BUS_SDIO) || (bus == ATH10K_BUS_USB));
> +}

That way this function is not needed.

Also I'm wondering should the parameter be actually 'struct
ath10k_bus_params' (or something like that) to make it easier to extend.

Patch
diff mbox

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index a4f635820f35..f1924c974a12 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -2496,6 +2496,7 @@  struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
 	ar->hw_rev = hw_rev;
 	ar->hif.ops = hif_ops;
 	ar->hif.bus = bus;
+	ar->is_high_latency = ath10k_is_high_latency(bus);
 
 	switch (hw_rev) {
 	case ATH10K_HW_QCA988X:
diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 949ebb3e967b..dc9ecf773d51 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -789,6 +789,8 @@  struct ath10k {
 
 	bool p2p;
 
+	bool is_high_latency;
+
 	struct {
 		enum ath10k_bus bus;
 		const struct ath10k_hif_ops *ops;
@@ -1013,6 +1015,11 @@  static inline bool ath10k_peer_stats_enabled(struct ath10k *ar)
 	return false;
 }
 
+static inline bool ath10k_is_high_latency(enum ath10k_bus bus)
+{
+	return ((bus == ATH10K_BUS_SDIO) || (bus == ATH10K_BUS_USB));
+}
+
 struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
 				  enum ath10k_bus bus,
 				  enum ath10k_hw_rev hw_rev,