ath9k_htc: add new WMI_REG_RMW_CMDID command
Since usb bus add extra delay on each request, a command with read + write requests is too expensive. We can dramtically reduce usb load by moving this command to firmware. In my tests, this patch will reduce channel scan time for about 5-10 seconds. Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

committed by
Kalle Valo

vanhempi
e480e13448
commit
8badb50cfa
@@ -112,6 +112,7 @@ enum wmi_cmd_id {
|
||||
WMI_TX_STATS_CMDID,
|
||||
WMI_RX_STATS_CMDID,
|
||||
WMI_BITRATE_MASK_CMDID,
|
||||
WMI_REG_RMW_CMDID,
|
||||
};
|
||||
|
||||
enum wmi_event_id {
|
||||
@@ -125,12 +126,19 @@ enum wmi_event_id {
|
||||
};
|
||||
|
||||
#define MAX_CMD_NUMBER 62
|
||||
#define MAX_RMW_CMD_NUMBER 15
|
||||
|
||||
struct register_write {
|
||||
__be32 reg;
|
||||
__be32 val;
|
||||
};
|
||||
|
||||
struct register_rmw {
|
||||
__be32 reg;
|
||||
__be32 set;
|
||||
__be32 clr;
|
||||
} __packed;
|
||||
|
||||
struct ath9k_htc_tx_event {
|
||||
int count;
|
||||
struct __wmi_event_txstatus txs;
|
||||
@@ -156,10 +164,18 @@ struct wmi {
|
||||
|
||||
spinlock_t wmi_lock;
|
||||
|
||||
/* multi write section */
|
||||
atomic_t mwrite_cnt;
|
||||
struct register_write multi_write[MAX_CMD_NUMBER];
|
||||
u32 multi_write_idx;
|
||||
struct mutex multi_write_mutex;
|
||||
|
||||
/* multi rmw section */
|
||||
atomic_t m_rmw_cnt;
|
||||
struct register_rmw multi_rmw[MAX_RMW_CMD_NUMBER];
|
||||
u32 multi_rmw_idx;
|
||||
struct mutex multi_rmw_mutex;
|
||||
|
||||
};
|
||||
|
||||
struct wmi *ath9k_init_wmi(struct ath9k_htc_priv *priv);
|
||||
|
Viittaa uudesa ongelmassa
Block a user