* [RFC 0/5] ath6kl: non WMI data service support
@ 2016-10-13 16:39 Erik Stromdahl
2016-10-13 16:39 ` [RFC 1/5] ath6kl: HTC mbox tx complete cb support Erik Stromdahl
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw)
To: kvalo, linux-wireless; +Cc: Erik Stromdahl
This patch series is intended to prepare the ath6kl driver
for newer chipsets that doesn't use the current WMI data
endpoints for data traffic.
The chipset I have been working with (and used for testing)
is QCA6584. It is SDIO based (at least the variant I have
been using) with 802.11p WAVE DSRC capabilities.
This chipset is different from the AR600X family in that
it does not use the WMI data services (service id's 0x101
to 0x104 ) for data traffic.
Instead it uses the HTT data service for data and wmi unified
for control messages.
It is also different when it comes to mailbox addresses
and HTC header format as well, but these differences are not
part of this patch series.
Erik Stromdahl (5):
ath6kl: HTC mbox tx complete cb support
ath6kl: Updated TARG_VTOP macro with default value
ath6kl: Added disable credit flow ctrl for mbox
ath6kl: Updated credit setup
ath6kl: service connect rewrite
drivers/net/wireless/ath/ath6kl/core.h | 3 +
drivers/net/wireless/ath/ath6kl/htc-ops.h | 2 +-
drivers/net/wireless/ath/ath6kl/htc.h | 4 +-
drivers/net/wireless/ath/ath6kl/htc_mbox.c | 75 +++++-------
drivers/net/wireless/ath/ath6kl/htc_pipe.c | 16 +--
drivers/net/wireless/ath/ath6kl/init.c | 187 +++++++++++++++++------------
drivers/net/wireless/ath/ath6kl/target.h | 4 +-
7 files changed, 156 insertions(+), 135 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 15+ messages in thread* [RFC 1/5] ath6kl: HTC mbox tx complete cb support 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl @ 2016-10-13 16:39 ` Erik Stromdahl 2016-10-13 16:39 ` [RFC 2/5] ath6kl: Updated TARG_VTOP macro with default value Erik Stromdahl ` (5 subsequent siblings) 6 siblings, 0 replies; 15+ messages in thread From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw) To: kvalo, linux-wireless; +Cc: Erik Stromdahl The current implementation always call ath6kl_tx_complete regardless if a tx_complete callback has been associated with the endpoint or not. This patch fixes this by calling the associated callback in case it is present. Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com> --- drivers/net/wireless/ath/ath6kl/htc_mbox.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath6kl/htc_mbox.c b/drivers/net/wireless/ath/ath6kl/htc_mbox.c index 65c31da..6e8c493 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_mbox.c +++ b/drivers/net/wireless/ath/ath6kl/htc_mbox.c @@ -445,7 +445,10 @@ static void htc_tx_complete(struct htc_endpoint *endpoint, "htc tx complete ep %d pkts %d\n", endpoint->eid, get_queue_depth(txq)); - ath6kl_tx_complete(endpoint->target, txq); + if (endpoint->ep_cb.tx_comp_multi) + endpoint->ep_cb.tx_comp_multi(endpoint->target, txq); + else + ath6kl_tx_complete(endpoint->target, txq); } static void htc_tx_comp_handler(struct htc_target *target, -- 2.1.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC 2/5] ath6kl: Updated TARG_VTOP macro with default value 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl 2016-10-13 16:39 ` [RFC 1/5] ath6kl: HTC mbox tx complete cb support Erik Stromdahl @ 2016-10-13 16:39 ` Erik Stromdahl 2016-10-13 16:39 ` [RFC 3/5] ath6kl: Added disable credit flow ctrl for mbox Erik Stromdahl ` (4 subsequent siblings) 6 siblings, 0 replies; 15+ messages in thread From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw) To: kvalo, linux-wireless; +Cc: Erik Stromdahl A minor modification of the TARG_VTOP macro. The AR6004 VTOP macro is used as default (for all chip's except AR6003) Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com> --- drivers/net/wireless/ath/ath6kl/target.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/target.h b/drivers/net/wireless/ath/ath6kl/target.h index d5eeeae..c6c49b0 100644 --- a/drivers/net/wireless/ath/ath6kl/target.h +++ b/drivers/net/wireless/ath/ath6kl/target.h @@ -331,11 +331,11 @@ struct host_interest { /* Convert a Target virtual address into a Target physical address */ #define AR6003_VTOP(vaddr) ((vaddr) & 0x001fffff) -#define AR6004_VTOP(vaddr) (vaddr) +#define DEFAULT_VTOP(vaddr) (vaddr) #define TARG_VTOP(target_type, vaddr) \ (((target_type) == TARGET_TYPE_AR6003) ? AR6003_VTOP(vaddr) : \ - (((target_type) == TARGET_TYPE_AR6004) ? AR6004_VTOP(vaddr) : 0)) + DEFAULT_VTOP(vaddr)) #define ATH6KL_FWLOG_PAYLOAD_SIZE 1500 -- 2.1.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC 3/5] ath6kl: Added disable credit flow ctrl for mbox 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl 2016-10-13 16:39 ` [RFC 1/5] ath6kl: HTC mbox tx complete cb support Erik Stromdahl 2016-10-13 16:39 ` [RFC 2/5] ath6kl: Updated TARG_VTOP macro with default value Erik Stromdahl @ 2016-10-13 16:39 ` Erik Stromdahl 2016-10-13 16:39 ` [RFC 4/5] ath6kl: Updated credit setup Erik Stromdahl ` (3 subsequent siblings) 6 siblings, 0 replies; 15+ messages in thread From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw) To: kvalo, linux-wireless; +Cc: Erik Stromdahl Added support for disabling credit flow control for htc_mbox in a similar way as htc_pipe. The tx_credit_flow_enabled member was moved out from the pipe struct in struct htc_endpoint since it is now used by htc_mbox as well. Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com> --- drivers/net/wireless/ath/ath6kl/htc.h | 2 +- drivers/net/wireless/ath/ath6kl/htc_mbox.c | 18 ++++++++++++++++-- drivers/net/wireless/ath/ath6kl/htc_pipe.c | 14 +++++++------- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/htc.h b/drivers/net/wireless/ath/ath6kl/htc.h index 112d8a9..532b13b 100644 --- a/drivers/net/wireless/ath/ath6kl/htc.h +++ b/drivers/net/wireless/ath/ath6kl/htc.h @@ -521,12 +521,12 @@ struct htc_endpoint { u32 conn_flags; struct htc_endpoint_stats ep_st; u16 tx_drop_packet_threshold; + bool tx_credit_flow_enabled; struct { u8 pipeid_ul; u8 pipeid_dl; struct list_head tx_lookup_queue; - bool tx_credit_flow_enabled; } pipe; }; diff --git a/drivers/net/wireless/ath/ath6kl/htc_mbox.c b/drivers/net/wireless/ath/ath6kl/htc_mbox.c index 6e8c493..2c4477d 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_mbox.c +++ b/drivers/net/wireless/ath/ath6kl/htc_mbox.c @@ -603,7 +603,7 @@ static void ath6kl_htc_tx_pkts_get(struct htc_target *target, struct htc_endpoint *endpoint, struct list_head *queue) { - int req_cred; + int req_cred = 0; u8 flags; struct htc_packet *packet; unsigned int len; @@ -623,7 +623,8 @@ static void ath6kl_htc_tx_pkts_get(struct htc_target *target, len = CALC_TXRX_PADDED_LEN(target, packet->act_len + HTC_HDR_LENGTH); - if (htc_check_credits(target, endpoint, &flags, + if (endpoint->tx_credit_flow_enabled && + htc_check_credits(target, endpoint, &flags, packet->endpoint, len, &req_cred)) break; @@ -2434,6 +2435,7 @@ static int ath6kl_htc_mbox_conn_service(struct htc_target *target, struct htc_conn_service_msg *conn_msg; struct htc_endpoint *endpoint; enum htc_endpoint_id assigned_ep = ENDPOINT_MAX; + bool disable_credit_flowctrl = false; unsigned int max_msg_sz = 0; int status = 0; u16 msg_id; @@ -2459,6 +2461,10 @@ static int ath6kl_htc_mbox_conn_service(struct htc_target *target, conn_msg->svc_id = cpu_to_le16(conn_req->svc_id); conn_msg->conn_flags = cpu_to_le16(conn_req->conn_flags); + if (conn_req->conn_flags & + HTC_CONN_FLGS_DISABLE_CRED_FLOW_CTRL) + disable_credit_flowctrl = true; + set_htc_pkt_info(tx_pkt, NULL, (u8 *) conn_msg, sizeof(*conn_msg) + conn_msg->svc_meta_len, ENDPOINT_0, HTC_SERVICE_TX_PACKET_TAG); @@ -2562,6 +2568,13 @@ static int ath6kl_htc_mbox_conn_service(struct htc_target *target, /* save local connection flags */ endpoint->conn_flags = conn_req->flags; + if (disable_credit_flowctrl && endpoint->tx_credit_flow_enabled) { + endpoint->tx_credit_flow_enabled = false; + ath6kl_dbg(ATH6KL_DBG_HTC, + "SVC: 0x%4.4X ep:%d TX flow control off\n", + endpoint->svc_id, assigned_ep); + } + fail_tx: if (tx_pkt) htc_reclaim_txctrl_buf(target, tx_pkt); @@ -2590,6 +2603,7 @@ static void reset_ep_state(struct htc_target *target) INIT_LIST_HEAD(&endpoint->rx_bufq); INIT_LIST_HEAD(&endpoint->txq); endpoint->target = target; + endpoint->tx_credit_flow_enabled = true; } /* reset distribution list */ diff --git a/drivers/net/wireless/ath/ath6kl/htc_pipe.c b/drivers/net/wireless/ath/ath6kl/htc_pipe.c index ca1a18c..93aac63 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_pipe.c +++ b/drivers/net/wireless/ath/ath6kl/htc_pipe.c @@ -408,7 +408,7 @@ static enum htc_send_queue_result htc_try_send(struct htc_target *target, } } - if (!ep->pipe.tx_credit_flow_enabled) { + if (!ep->tx_credit_flow_enabled) { tx_resources = ath6kl_hif_pipe_get_free_queue_number(ar, ep->pipe.pipeid_ul); @@ -452,7 +452,7 @@ static enum htc_send_queue_result htc_try_send(struct htc_target *target, if (get_queue_depth(&ep->txq) == 0) break; - if (ep->pipe.tx_credit_flow_enabled) { + if (ep->tx_credit_flow_enabled) { /* * Credit based mechanism provides flow control * based on target transmit resource availability, @@ -482,7 +482,7 @@ static enum htc_send_queue_result htc_try_send(struct htc_target *target, /* send what we can */ htc_issue_packets(target, ep, &send_queue); - if (!ep->pipe.tx_credit_flow_enabled) { + if (!ep->tx_credit_flow_enabled) { pipeid = ep->pipe.pipeid_ul; tx_resources = ath6kl_hif_pipe_get_free_queue_number(ar, pipeid); @@ -768,7 +768,7 @@ static int ath6kl_htc_pipe_tx_complete(struct ath6kl *ar, struct sk_buff *skb) } skb = NULL; - if (!ep->pipe.tx_credit_flow_enabled) { + if (!ep->tx_credit_flow_enabled) { /* * note: when using TX credit flow, the re-checking of queues * happens when credits flow back from the target. in the @@ -1194,7 +1194,7 @@ static void reset_endpoint_states(struct htc_target *target) INIT_LIST_HEAD(&ep->pipe.tx_lookup_queue); INIT_LIST_HEAD(&ep->rx_bufq); ep->target = target; - ep->pipe.tx_credit_flow_enabled = true; + ep->tx_credit_flow_enabled = true; } } @@ -1399,8 +1399,8 @@ static int ath6kl_htc_pipe_conn_service(struct htc_target *target, ep->svc_id, ep->pipe.pipeid_ul, ep->pipe.pipeid_dl, ep->eid); - if (disable_credit_flowctrl && ep->pipe.tx_credit_flow_enabled) { - ep->pipe.tx_credit_flow_enabled = false; + if (disable_credit_flowctrl && ep->tx_credit_flow_enabled) { + ep->tx_credit_flow_enabled = false; ath6kl_dbg(ATH6KL_DBG_HTC, "SVC: 0x%4.4X ep:%d TX flow control off\n", ep->svc_id, assigned_epid); -- 2.1.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC 4/5] ath6kl: Updated credit setup 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl ` (2 preceding siblings ...) 2016-10-13 16:39 ` [RFC 3/5] ath6kl: Added disable credit flow ctrl for mbox Erik Stromdahl @ 2016-10-13 16:39 ` Erik Stromdahl 2016-10-13 16:39 ` [RFC 5/5] ath6kl: service connect rewrite Erik Stromdahl ` (2 subsequent siblings) 6 siblings, 0 replies; 15+ messages in thread From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw) To: kvalo, linux-wireless; +Cc: Erik Stromdahl This patch simplifies the credit setup and removes a dependency from htc_mbox.c. The service priority (the order in which the endpoint credits are added in target->cred_dist_list) is now determined by the sequence in which the host connects to services. The HTC control endpoint will have highest prio (just as before) since it is the first endpoint that is connected (done in htc_wait_target). The remaining service prio's will be prioritized in the order in which they are connected. The rationale behind this patch is to remove the service dependecies (the prio list in ath6kl_htc_mbox_credit_setup) from htc_mbox.c. Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com> --- drivers/net/wireless/ath/ath6kl/htc_mbox.c | 50 ++++++------------------------ 1 file changed, 9 insertions(+), 41 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/htc_mbox.c b/drivers/net/wireless/ath/ath6kl/htc_mbox.c index 2c4477d..eed3939 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_mbox.c +++ b/drivers/net/wireless/ath/ath6kl/htc_mbox.c @@ -29,9 +29,6 @@ static void ath6kl_htc_mbox_cleanup(struct htc_target *target); static void ath6kl_htc_mbox_stop(struct htc_target *target); static int ath6kl_htc_mbox_add_rxbuf_multiple(struct htc_target *target, struct list_head *pkt_queue); -static void ath6kl_htc_set_credit_dist(struct htc_target *target, - struct ath6kl_htc_credit_info *cred_info, - u16 svc_pri_order[], int len); /* threshold to re-enable Tx bundling for an AC*/ #define TX_RESUME_BUNDLE_THRESHOLD 1500 @@ -146,18 +143,9 @@ static void ath6kl_credit_init(struct ath6kl_htc_credit_info *cred_info, static int ath6kl_htc_mbox_credit_setup(struct htc_target *htc_target, struct ath6kl_htc_credit_info *cred_info) { - u16 servicepriority[5]; - memset(cred_info, 0, sizeof(struct ath6kl_htc_credit_info)); - servicepriority[0] = WMI_CONTROL_SVC; /* highest */ - servicepriority[1] = WMI_DATA_VO_SVC; - servicepriority[2] = WMI_DATA_VI_SVC; - servicepriority[3] = WMI_DATA_BE_SVC; - servicepriority[4] = WMI_DATA_BK_SVC; /* lowest */ - - /* set priority list */ - ath6kl_htc_set_credit_dist(htc_target, cred_info, servicepriority, 5); + htc_target->credit_info = cred_info; return 0; } @@ -1094,34 +1082,6 @@ static int htc_setup_tx_complete(struct htc_target *target) return status; } -static void ath6kl_htc_set_credit_dist(struct htc_target *target, - struct ath6kl_htc_credit_info *credit_info, - u16 srvc_pri_order[], int list_len) -{ - struct htc_endpoint *endpoint; - int i, ep; - - target->credit_info = credit_info; - - list_add_tail(&target->endpoint[ENDPOINT_0].cred_dist.list, - &target->cred_dist_list); - - for (i = 0; i < list_len; i++) { - for (ep = ENDPOINT_1; ep < ENDPOINT_MAX; ep++) { - endpoint = &target->endpoint[ep]; - if (endpoint->svc_id == srvc_pri_order[i]) { - list_add_tail(&endpoint->cred_dist.list, - &target->cred_dist_list); - break; - } - } - if (ep >= ENDPOINT_MAX) { - WARN_ON(1); - return; - } - } -} - static int ath6kl_htc_mbox_tx(struct htc_target *target, struct htc_packet *packet) { @@ -2575,6 +2535,14 @@ static int ath6kl_htc_mbox_conn_service(struct htc_target *target, endpoint->svc_id, assigned_ep); } + /* Add the credit distribution list of the current endpoint + * to target->cred_dist_list. + * The order in which this function is called will determine + * the priority of the services. + */ + list_add_tail(&endpoint->cred_dist.list, + &target->cred_dist_list); + fail_tx: if (tx_pkt) htc_reclaim_txctrl_buf(target, tx_pkt); -- 2.1.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RFC 5/5] ath6kl: service connect rewrite 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl ` (3 preceding siblings ...) 2016-10-13 16:39 ` [RFC 4/5] ath6kl: Updated credit setup Erik Stromdahl @ 2016-10-13 16:39 ` Erik Stromdahl 2016-10-13 23:57 ` [RFC 0/5] ath6kl: non WMI data service support Steve deRosier 2016-10-14 7:34 ` Valo, Kalle 6 siblings, 0 replies; 15+ messages in thread From: Erik Stromdahl @ 2016-10-13 16:39 UTC (permalink / raw) To: kvalo, linux-wireless; +Cc: Erik Stromdahl This patch removes the hardcoded struct htc_service_connect_req from ath6kl_init_service_ep and adds an array of struct htc_service_connect_req's to each element in hw_list. The rationale behind this patch is to make it possible to select which services to connect to depending on chipset. Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com> --- drivers/net/wireless/ath/ath6kl/core.h | 3 + drivers/net/wireless/ath/ath6kl/htc-ops.h | 2 +- drivers/net/wireless/ath/ath6kl/htc.h | 2 +- drivers/net/wireless/ath/ath6kl/htc_mbox.c | 2 +- drivers/net/wireless/ath/ath6kl/htc_pipe.c | 2 +- drivers/net/wireless/ath/ath6kl/init.c | 187 +++++++++++++++++------------ 6 files changed, 117 insertions(+), 81 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/core.h b/drivers/net/wireless/ath/ath6kl/core.h index ac25f17..f907ef4 100644 --- a/drivers/net/wireless/ath/ath6kl/core.h +++ b/drivers/net/wireless/ath/ath6kl/core.h @@ -799,6 +799,9 @@ struct ath6kl { const char *testscript; } fw; + const struct htc_service_connect_req *services; + u32 service_count; + const char *fw_board; const char *fw_default_board; } hw; diff --git a/drivers/net/wireless/ath/ath6kl/htc-ops.h b/drivers/net/wireless/ath/ath6kl/htc-ops.h index 2d4eed5..80700a4 100644 --- a/drivers/net/wireless/ath/ath6kl/htc-ops.h +++ b/drivers/net/wireless/ath/ath6kl/htc-ops.h @@ -36,7 +36,7 @@ static inline int ath6kl_htc_start(struct htc_target *target) } static inline int ath6kl_htc_conn_service(struct htc_target *target, - struct htc_service_connect_req *req, + const struct htc_service_connect_req *req, struct htc_service_connect_resp *resp) { return target->dev->ar->htc_ops->conn_service(target, req, resp); diff --git a/drivers/net/wireless/ath/ath6kl/htc.h b/drivers/net/wireless/ath/ath6kl/htc.h index 532b13b..bfff466 100644 --- a/drivers/net/wireless/ath/ath6kl/htc.h +++ b/drivers/net/wireless/ath/ath6kl/htc.h @@ -550,7 +550,7 @@ struct ath6kl_htc_ops { int (*wait_target)(struct htc_target *target); int (*start)(struct htc_target *target); int (*conn_service)(struct htc_target *target, - struct htc_service_connect_req *req, + const struct htc_service_connect_req *req, struct htc_service_connect_resp *resp); int (*tx)(struct htc_target *target, struct htc_packet *packet); void (*stop)(struct htc_target *target); diff --git a/drivers/net/wireless/ath/ath6kl/htc_mbox.c b/drivers/net/wireless/ath/ath6kl/htc_mbox.c index eed3939..24fb9a7 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_mbox.c +++ b/drivers/net/wireless/ath/ath6kl/htc_mbox.c @@ -2386,7 +2386,7 @@ static void ath6kl_htc_mbox_flush_rx_buf(struct htc_target *target) } static int ath6kl_htc_mbox_conn_service(struct htc_target *target, - struct htc_service_connect_req *conn_req, + const struct htc_service_connect_req *conn_req, struct htc_service_connect_resp *conn_resp) { struct htc_packet *rx_pkt = NULL; diff --git a/drivers/net/wireless/ath/ath6kl/htc_pipe.c b/drivers/net/wireless/ath/ath6kl/htc_pipe.c index 93aac63..9a39f3d 100644 --- a/drivers/net/wireless/ath/ath6kl/htc_pipe.c +++ b/drivers/net/wireless/ath/ath6kl/htc_pipe.c @@ -1226,7 +1226,7 @@ static u8 htc_get_credit_alloc(struct htc_target *target, u16 service_id) } static int ath6kl_htc_pipe_conn_service(struct htc_target *target, - struct htc_service_connect_req *conn_req, + const struct htc_service_connect_req *conn_req, struct htc_service_connect_resp *conn_resp) { struct ath6kl *ar = target->dev->ar; diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c index 58fb227..a4c7abe 100644 --- a/drivers/net/wireless/ath/ath6kl/init.c +++ b/drivers/net/wireless/ath/ath6kl/init.c @@ -32,6 +32,94 @@ #include "hif-ops.h" #include "htc-ops.h" +const struct htc_service_connect_req ar600x_services[] = { + { + .svc_id = WMI_CONTROL_SVC, + .ep_cb = { + .tx_comp_multi = ath6kl_tx_complete, + .rx = ath6kl_rx, + .rx_refill = ath6kl_rx_refill, + .tx_full = ath6kl_tx_queue_full, + .rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4, + }, + .max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH, + }, + { + .svc_id = WMI_DATA_BE_SVC, + .conn_flags = HTC_CONN_FLGS_REDUCE_CRED_DRIB | + HTC_CONN_FLGS_THRESH_LVL_HALF, + .ep_cb = { + .tx_comp_multi = ath6kl_tx_complete, + .rx = ath6kl_rx, + .rx_refill = ath6kl_rx_refill, + .tx_full = ath6kl_tx_queue_full, + .rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4, + .rx_alloc_thresh = ATH6KL_BUFFER_SIZE, + .rx_allocthresh = ath6kl_alloc_amsdu_rxbuf, + }, + .max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH, + .flags = HTC_FLGS_TX_BNDL_PAD_EN, + .max_rxmsg_sz = WMI_MAX_TX_DATA_FRAME_LENGTH, + }, + { + .svc_id = WMI_DATA_BK_SVC, + .conn_flags = HTC_CONN_FLGS_REDUCE_CRED_DRIB | + HTC_CONN_FLGS_THRESH_LVL_HALF, + .ep_cb = { + .tx_comp_multi = ath6kl_tx_complete, + .rx = ath6kl_rx, + .rx_refill = ath6kl_rx_refill, + .tx_full = ath6kl_tx_queue_full, + .rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4, + .rx_alloc_thresh = ATH6KL_BUFFER_SIZE, + .rx_allocthresh = ath6kl_alloc_amsdu_rxbuf, + }, + .max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH, + .flags = HTC_FLGS_TX_BNDL_PAD_EN, + .max_rxmsg_sz = WMI_MAX_TX_DATA_FRAME_LENGTH, + }, + { + .svc_id = WMI_DATA_VI_SVC, + .conn_flags = HTC_CONN_FLGS_REDUCE_CRED_DRIB | + HTC_CONN_FLGS_THRESH_LVL_HALF, + .ep_cb = { + .tx_comp_multi = ath6kl_tx_complete, + .rx = ath6kl_rx, + .rx_refill = ath6kl_rx_refill, + .tx_full = ath6kl_tx_queue_full, + .rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4, + .rx_alloc_thresh = ATH6KL_BUFFER_SIZE, + .rx_allocthresh = ath6kl_alloc_amsdu_rxbuf, + }, + .max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH, + .flags = HTC_FLGS_TX_BNDL_PAD_EN, + .max_rxmsg_sz = WMI_MAX_TX_DATA_FRAME_LENGTH, + }, + /* VO service, this is currently not mapped to a WMI + * priority stream due to historical reasons. WMI originally + * defined 3 priorities over 3 mailboxes We can change this when + * WMI is reworked so that priorities are not dependent on + * mailboxes. + */ + { + .svc_id = WMI_DATA_VO_SVC, + .conn_flags = HTC_CONN_FLGS_REDUCE_CRED_DRIB | + HTC_CONN_FLGS_THRESH_LVL_HALF, + .ep_cb = { + .tx_comp_multi = ath6kl_tx_complete, + .rx = ath6kl_rx, + .rx_refill = ath6kl_rx_refill, + .tx_full = ath6kl_tx_queue_full, + .rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4, + .rx_alloc_thresh = ATH6KL_BUFFER_SIZE, + .rx_allocthresh = ath6kl_alloc_amsdu_rxbuf, + }, + .max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH, + .flags = HTC_FLGS_TX_BNDL_PAD_EN, + .max_rxmsg_sz = WMI_MAX_TX_DATA_FRAME_LENGTH, + }, +}; + static const struct ath6kl_hw hw_list[] = { { .id = AR6003_HW_2_0_VERSION, @@ -57,6 +145,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6003_HW_2_0_BOARD_DATA_FILE, .fw_default_board = AR6003_HW_2_0_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6003_HW_2_1_1_VERSION, @@ -82,6 +172,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6003_HW_2_1_1_BOARD_DATA_FILE, .fw_default_board = AR6003_HW_2_1_1_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6004_HW_1_0_VERSION, @@ -102,6 +194,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6004_HW_1_0_BOARD_DATA_FILE, .fw_default_board = AR6004_HW_1_0_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6004_HW_1_1_VERSION, @@ -121,6 +215,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6004_HW_1_1_BOARD_DATA_FILE, .fw_default_board = AR6004_HW_1_1_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6004_HW_1_2_VERSION, @@ -140,6 +236,8 @@ static const struct ath6kl_hw hw_list[] = { }, .fw_board = AR6004_HW_1_2_BOARD_DATA_FILE, .fw_default_board = AR6004_HW_1_2_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6004_HW_1_3_VERSION, @@ -163,6 +261,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6004_HW_1_3_BOARD_DATA_FILE, .fw_default_board = AR6004_HW_1_3_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, { .id = AR6004_HW_3_0_VERSION, @@ -186,6 +286,8 @@ static const struct ath6kl_hw hw_list[] = { .fw_board = AR6004_HW_3_0_BOARD_DATA_FILE, .fw_default_board = AR6004_HW_3_0_DEFAULT_BOARD_DATA_FILE, + .services = ar600x_services, + .service_count = ARRAY_SIZE(ar600x_services), }, }; @@ -280,8 +382,7 @@ static inline void set_ac2_ep_map(struct ath6kl *ar, /* connect to a service */ static int ath6kl_connectservice(struct ath6kl *ar, - struct htc_service_connect_req *con_req, - char *desc) + const struct htc_service_connect_req *con_req) { int status; struct htc_service_connect_resp response; @@ -290,8 +391,8 @@ static int ath6kl_connectservice(struct ath6kl *ar, status = ath6kl_htc_conn_service(ar->htc_target, con_req, &response); if (status) { - ath6kl_err("failed to connect to %s service status:%d\n", - desc, status); + ath6kl_err("failed to connect to %x service status: %d\n", + con_req->svc_id, status); return status; } @@ -323,80 +424,12 @@ static int ath6kl_connectservice(struct ath6kl *ar, static int ath6kl_init_service_ep(struct ath6kl *ar) { - struct htc_service_connect_req connect; - - memset(&connect, 0, sizeof(connect)); - - /* these fields are the same for all service endpoints */ - connect.ep_cb.tx_comp_multi = ath6kl_tx_complete; - connect.ep_cb.rx = ath6kl_rx; - connect.ep_cb.rx_refill = ath6kl_rx_refill; - connect.ep_cb.tx_full = ath6kl_tx_queue_full; - - /* - * Set the max queue depth so that our ath6kl_tx_queue_full handler - * gets called. - */ - connect.max_txq_depth = MAX_DEFAULT_SEND_QUEUE_DEPTH; - connect.ep_cb.rx_refill_thresh = ATH6KL_MAX_RX_BUFFERS / 4; - if (!connect.ep_cb.rx_refill_thresh) - connect.ep_cb.rx_refill_thresh++; - - /* connect to control service */ - connect.svc_id = WMI_CONTROL_SVC; - if (ath6kl_connectservice(ar, &connect, "WMI CONTROL")) - return -EIO; - - connect.flags |= HTC_FLGS_TX_BNDL_PAD_EN; - - /* - * Limit the HTC message size on the send path, although e can - * receive A-MSDU frames of 4K, we will only send ethernet-sized - * (802.3) frames on the send path. - */ - connect.max_rxmsg_sz = WMI_MAX_TX_DATA_FRAME_LENGTH; - - /* - * To reduce the amount of committed memory for larger A_MSDU - * frames, use the recv-alloc threshold mechanism for larger - * packets. - */ - connect.ep_cb.rx_alloc_thresh = ATH6KL_BUFFER_SIZE; - connect.ep_cb.rx_allocthresh = ath6kl_alloc_amsdu_rxbuf; - - /* - * For the remaining data services set the connection flag to - * reduce dribbling, if configured to do so. - */ - connect.conn_flags |= HTC_CONN_FLGS_REDUCE_CRED_DRIB; - connect.conn_flags &= ~HTC_CONN_FLGS_THRESH_MASK; - connect.conn_flags |= HTC_CONN_FLGS_THRESH_LVL_HALF; - - connect.svc_id = WMI_DATA_BE_SVC; - - if (ath6kl_connectservice(ar, &connect, "WMI DATA BE")) - return -EIO; - - /* connect to back-ground map this to WMI LOW_PRI */ - connect.svc_id = WMI_DATA_BK_SVC; - if (ath6kl_connectservice(ar, &connect, "WMI DATA BK")) - return -EIO; - - /* connect to Video service, map this to HI PRI */ - connect.svc_id = WMI_DATA_VI_SVC; - if (ath6kl_connectservice(ar, &connect, "WMI DATA VI")) - return -EIO; + int i; - /* - * Connect to VO service, this is currently not mapped to a WMI - * priority stream due to historical reasons. WMI originally - * defined 3 priorities over 3 mailboxes We can change this when - * WMI is reworked so that priorities are not dependent on - * mailboxes. - */ - connect.svc_id = WMI_DATA_VO_SVC; - if (ath6kl_connectservice(ar, &connect, "WMI DATA VO")) - return -EIO; + for (i = 0; i < ar->hw.service_count; i++) { + if (ath6kl_connectservice(ar, &ar->hw.services[i])) + return -EIO; + } return 0; } -- 2.1.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl ` (4 preceding siblings ...) 2016-10-13 16:39 ` [RFC 5/5] ath6kl: service connect rewrite Erik Stromdahl @ 2016-10-13 23:57 ` Steve deRosier 2016-10-14 4:32 ` Valo, Kalle 2016-10-14 7:34 ` Valo, Kalle 6 siblings, 1 reply; 15+ messages in thread From: Steve deRosier @ 2016-10-13 23:57 UTC (permalink / raw) To: Erik Stromdahl; +Cc: Kalle Valo, linux-wireless Hi Eric, On Thu, Oct 13, 2016 at 9:39 AM, Erik Stromdahl <erik.stromdahl@gmail.com> wrote: > This patch series is intended to prepare the ath6kl driver > for newer chipsets that doesn't use the current WMI data > endpoints for data traffic. > > The chipset I have been working with (and used for testing) > is QCA6584. It is SDIO based (at least the variant I have > been using) with 802.11p WAVE DSRC capabilities. > > This chipset is different from the AR600X family in that > it does not use the WMI data services (service id's 0x101 > to 0x104 ) for data traffic. > Instead it uses the HTT data service for data and wmi unified > for control messages. > It is also different when it comes to mailbox addresses > and HTC header format as well, but these differences are not > part of this patch series. > I've only taken a quick look and I'll make specific comments to specific patches later, but I've got to ask the question, should these changes go into ath6kl or be a new driver? Just because the number starts with 6000 doesn't mean it's a ath6kl chip. The 10k series chips all start with 9000 for example, but they rate their own driver. You state that all of the underpinnings of the communication with the chip are totally different: * Doesn't use WMI * Different mailboxing * Different HTC layer If all of the commands and all of the communication layers to the chip are totally different, then perhaps it isn't an ath6kl chip. So if it's largely similar, then OK, but seems to me with the changes you're saying above, it's mostly different. I'm saying all that without any knowledge of this chip. My experience is limited to various versions of the 6003 and 6004 chips. Just trying to stimulate discussion here. Thanks, - Steve ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-13 23:57 ` [RFC 0/5] ath6kl: non WMI data service support Steve deRosier @ 2016-10-14 4:32 ` Valo, Kalle 2016-10-14 15:38 ` Erik Stromdahl 0 siblings, 1 reply; 15+ messages in thread From: Valo, Kalle @ 2016-10-14 4:32 UTC (permalink / raw) To: Steve deRosier; +Cc: Erik Stromdahl, linux-wireless Steve deRosier <derosier@gmail.com> writes: > Hi Eric, > > On Thu, Oct 13, 2016 at 9:39 AM, Erik Stromdahl > <erik.stromdahl@gmail.com> wrote: >> This patch series is intended to prepare the ath6kl driver >> for newer chipsets that doesn't use the current WMI data >> endpoints for data traffic. >> >> The chipset I have been working with (and used for testing) >> is QCA6584. It is SDIO based (at least the variant I have >> been using) with 802.11p WAVE DSRC capabilities. >> >> This chipset is different from the AR600X family in that >> it does not use the WMI data services (service id's 0x101 >> to 0x104 ) for data traffic. >> Instead it uses the HTT data service for data and wmi unified >> for control messages. >> It is also different when it comes to mailbox addresses >> and HTC header format as well, but these differences are not >> part of this patch series. >> > > I've only taken a quick look and I'll make specific comments to > specific patches later, but I've got to ask the question, should these > changes go into ath6kl or be a new driver? > > Just because the number starts with 6000 doesn't mean it's a ath6kl > chip. The 10k series chips all start with 9000 for example, but they > rate their own driver. > > You state that all of the underpinnings of the communication with the > chip are totally different: > * Doesn't use WMI > * Different mailboxing > * Different HTC layer > > If all of the commands and all of the communication layers to the chip > are totally different, then perhaps it isn't an ath6kl chip. So if > it's largely similar, then OK, but seems to me with the changes you're > saying above, it's mostly different. > > I'm saying all that without any knowledge of this chip. My experience > is limited to various versions of the 6003 and 6004 chips. Exactly what I was thinking. When I saw terms like "HTT" and "unified WMI" my first thought was that is this actually an ath10k based design? The product numbers really don't give any indication what driver supports, the division goes something like this: * ath9k: "non-mobile" 11n chips * ath6k: mobile 11n chips * ath10k: mobile and "non-mobile" 11ac chips For example QCA6174 is an 11ac mobile chip supported by ath10k. ath10k only supports PCI bus at the moment, but I'm hoping someone would add USB and SDIO support. Patches are very welcome. I'm starting to suspect that QCA6584 is actually based on the same design as QCA6174. If that's the case when we should also think if instead we should add SDIO support to ath10k, maybe by taking relevant parts from ath6kl? I'll investigate more what this QCA6584 is, I haven't heard about it before. --=20 Kalle Valo= ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-14 4:32 ` Valo, Kalle @ 2016-10-14 15:38 ` Erik Stromdahl 2016-10-15 5:24 ` Valo, Kalle 0 siblings, 1 reply; 15+ messages in thread From: Erik Stromdahl @ 2016-10-14 15:38 UTC (permalink / raw) To: Valo, Kalle, Steve deRosier; +Cc: linux-wireless On 10/14/2016 06:32 AM, Valo, Kalle wrote: > Steve deRosier <derosier@gmail.com> writes: > >> Hi Eric, >> >> On Thu, Oct 13, 2016 at 9:39 AM, Erik Stromdahl >> <erik.stromdahl@gmail.com> wrote: >>> This patch series is intended to prepare the ath6kl driver >>> for newer chipsets that doesn't use the current WMI data >>> endpoints for data traffic. >>> >>> The chipset I have been working with (and used for testing) >>> is QCA6584. It is SDIO based (at least the variant I have >>> been using) with 802.11p WAVE DSRC capabilities. >>> >>> This chipset is different from the AR600X family in that >>> it does not use the WMI data services (service id's 0x101 >>> to 0x104 ) for data traffic. >>> Instead it uses the HTT data service for data and wmi unified >>> for control messages. >>> It is also different when it comes to mailbox addresses >>> and HTC header format as well, but these differences are not >>> part of this patch series. >>> >> >> I've only taken a quick look and I'll make specific comments to >> specific patches later, but I've got to ask the question, should these >> changes go into ath6kl or be a new driver? >> >> Just because the number starts with 6000 doesn't mean it's a ath6kl >> chip. The 10k series chips all start with 9000 for example, but they >> rate their own driver. >> >> You state that all of the underpinnings of the communication with the >> chip are totally different: >> * Doesn't use WMI >> * Different mailboxing >> * Different HTC layer >> >> If all of the commands and all of the communication layers to the chip >> are totally different, then perhaps it isn't an ath6kl chip. So if >> it's largely similar, then OK, but seems to me with the changes you're >> saying above, it's mostly different. >> >> I'm saying all that without any knowledge of this chip. My experience >> is limited to various versions of the 6003 and 6004 chips. > > Exactly what I was thinking. When I saw terms like "HTT" and "unified > WMI" my first thought was that is this actually an ath10k based design? > The product numbers really don't give any indication what driver > supports, the division goes something like this: > > * ath9k: "non-mobile" 11n chips > * ath6k: mobile 11n chips > * ath10k: mobile and "non-mobile" 11ac chips > > For example QCA6174 is an 11ac mobile chip supported by ath10k. ath10k > only supports PCI bus at the moment, but I'm hoping someone would add > USB and SDIO support. Patches are very welcome. > > I'm starting to suspect that QCA6584 is actually based on the same > design as QCA6174. If that's the case when we should also think if > instead we should add SDIO support to ath10k, maybe by taking relevant > parts from ath6kl? > > I'll investigate more what this QCA6584 is, I haven't heard about it > before. > The reason I have patched to ath6kl driver was that it is the only driver with sdio/mbox support. I was actually thinking of writing a new driver from scratch, but I thought that it was less work to modify the existing ath6kl driver. I just haven't considered the option to add sdio/mbox support to ath10k. This is definitely something I will have a look at. I should mention that I have been using the qcacld2.0 driver as "documentation" of the chipset. The qcacld driver identifies the chipset as AR6320 >From the qcacld2.0 driver bmi_msg.h: #define TARGET_TYPE_AR6320 8 Perhaps this can shed some light on what kind of chip this is? ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-14 15:38 ` Erik Stromdahl @ 2016-10-15 5:24 ` Valo, Kalle 0 siblings, 0 replies; 15+ messages in thread From: Valo, Kalle @ 2016-10-15 5:24 UTC (permalink / raw) To: Erik Stromdahl; +Cc: Steve deRosier, linux-wireless, ath10k@lists.infradead.org (Adding ath10k list to CC) Erik Stromdahl <erik.stromdahl@gmail.com> writes: >> Exactly what I was thinking. When I saw terms like "HTT" and "unified >> WMI" my first thought was that is this actually an ath10k based design? >> The product numbers really don't give any indication what driver >> supports, the division goes something like this: >> >> * ath9k: "non-mobile" 11n chips >> * ath6k: mobile 11n chips >> * ath10k: mobile and "non-mobile" 11ac chips >> >> For example QCA6174 is an 11ac mobile chip supported by ath10k. ath10k >> only supports PCI bus at the moment, but I'm hoping someone would add >> USB and SDIO support. Patches are very welcome. >> >> I'm starting to suspect that QCA6584 is actually based on the same >> design as QCA6174. If that's the case when we should also think if >> instead we should add SDIO support to ath10k, maybe by taking relevant >> parts from ath6kl? >> >> I'll investigate more what this QCA6584 is, I haven't heard about it >> before. >> > > The reason I have patched to ath6kl driver was that it is the > only driver with sdio/mbox support. > > I was actually thinking of writing a new driver from scratch, but I > thought that it was less work to modify the existing ath6kl driver. Ok. > I just haven't considered the option to add sdio/mbox support to ath10k. > This is definitely something I will have a look at. > > I should mention that I have been using the qcacld2.0 driver as > "documentation" of the chipset. > > The qcacld driver identifies the chipset as AR6320 > > From the qcacld2.0 driver bmi_msg.h: > > #define TARGET_TYPE_AR6320 8 > > Perhaps this can shed some light on what kind of chip this is? I'm pretty sure that this is QCA6174 based design which is already supported by ath10k. So my suggestion is to first look at adding SDIO support to ath10k and see if that's feasible. We already have PCI code split from the core code (ath10k_core.ko and ath10k_pci.ko) just because I was expecting that we would add SDIO and USB support later. That has just never happened due to lack of time, hopefully you can fix that now ;) I haven't studied SDIO support at all yet but hopefully WMI, core.c and mac.c won't need that much modifications. HTT and HTC most likely need bigger changes. And then you would need to add sdio.c, similarly like we have pci.c now. Keep in mind that later we might want to add USB support also so if there's something which both SDIO and USB need to that would need to be easily sharable. Actually after adding SDIO I hope USB would be easier to add. -- Kalle Valo _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support @ 2016-10-15 5:24 ` Valo, Kalle 0 siblings, 0 replies; 15+ messages in thread From: Valo, Kalle @ 2016-10-15 5:24 UTC (permalink / raw) To: Erik Stromdahl; +Cc: Steve deRosier, linux-wireless, ath10k@lists.infradead.org (Adding ath10k list to CC) Erik Stromdahl <erik.stromdahl@gmail.com> writes: >> Exactly what I was thinking. When I saw terms like "HTT" and "unified >> WMI" my first thought was that is this actually an ath10k based design? >> The product numbers really don't give any indication what driver >> supports, the division goes something like this: >>=20 >> * ath9k: "non-mobile" 11n chips >> * ath6k: mobile 11n chips >> * ath10k: mobile and "non-mobile" 11ac chips >>=20 >> For example QCA6174 is an 11ac mobile chip supported by ath10k. ath10k >> only supports PCI bus at the moment, but I'm hoping someone would add >> USB and SDIO support. Patches are very welcome. >>=20 >> I'm starting to suspect that QCA6584 is actually based on the same >> design as QCA6174. If that's the case when we should also think if >> instead we should add SDIO support to ath10k, maybe by taking relevant >> parts from ath6kl? >>=20 >> I'll investigate more what this QCA6584 is, I haven't heard about it >> before. >>=20 > > The reason I have patched to ath6kl driver was that it is the > only driver with sdio/mbox support. > > I was actually thinking of writing a new driver from scratch, but I > thought that it was less work to modify the existing ath6kl driver. Ok. > I just haven't considered the option to add sdio/mbox support to ath10k. > This is definitely something I will have a look at. > > I should mention that I have been using the qcacld2.0 driver as > "documentation" of the chipset. > > The qcacld driver identifies the chipset as AR6320 > > From the qcacld2.0 driver bmi_msg.h: > > #define TARGET_TYPE_AR6320 8 > > Perhaps this can shed some light on what kind of chip this is? I'm pretty sure that this is QCA6174 based design which is already supported by ath10k. So my suggestion is to first look at adding SDIO support to ath10k and see if that's feasible. We already have PCI code split from the core code (ath10k_core.ko and ath10k_pci.ko) just because I was expecting that we would add SDIO and USB support later. That has just never happened due to lack of time, hopefully you can fix that now ;) I haven't studied SDIO support at all yet but hopefully WMI, core.c and mac.c won't need that much modifications. HTT and HTC most likely need bigger changes. And then you would need to add sdio.c, similarly like we have pci.c now. Keep in mind that later we might want to add USB support also so if there's something which both SDIO and USB need to that would need to be easily sharable. Actually after adding SDIO I hope USB would be easier to add. --=20 Kalle Valo= ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl ` (5 preceding siblings ...) 2016-10-13 23:57 ` [RFC 0/5] ath6kl: non WMI data service support Steve deRosier @ 2016-10-14 7:34 ` Valo, Kalle 2016-10-14 15:54 ` Erik Stromdahl 6 siblings, 1 reply; 15+ messages in thread From: Valo, Kalle @ 2016-10-14 7:34 UTC (permalink / raw) To: Erik Stromdahl; +Cc: linux-wireless@vger.kernel.org Erik Stromdahl <erik.stromdahl@gmail.com> writes: > This patch series is intended to prepare the ath6kl driver > for newer chipsets that doesn't use the current WMI data > endpoints for data traffic. > > The chipset I have been working with (and used for testing) > is QCA6584. It is SDIO based (at least the variant I have > been using) with 802.11p WAVE DSRC capabilities. > > This chipset is different from the AR600X family in that > it does not use the WMI data services (service id's 0x101 > to 0x104 ) for data traffic. > Instead it uses the HTT data service for data and wmi unified > for control messages. > It is also different when it comes to mailbox addresses > and HTC header format as well, but these differences are not > part of this patch series. Do you have more patches implemented, like something already working or have just started? --=20 Kalle Valo= ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-14 7:34 ` Valo, Kalle @ 2016-10-14 15:54 ` Erik Stromdahl 2016-10-15 5:29 ` Valo, Kalle 0 siblings, 1 reply; 15+ messages in thread From: Erik Stromdahl @ 2016-10-14 15:54 UTC (permalink / raw) To: Valo, Kalle; +Cc: linux-wireless@vger.kernel.org On 10/14/2016 09:34 AM, Valo, Kalle wrote: > Erik Stromdahl <erik.stromdahl@gmail.com> writes: > >> This patch series is intended to prepare the ath6kl driver >> for newer chipsets that doesn't use the current WMI data >> endpoints for data traffic. >> >> The chipset I have been working with (and used for testing) >> is QCA6584. It is SDIO based (at least the variant I have >> been using) with 802.11p WAVE DSRC capabilities. >> >> This chipset is different from the AR600X family in that >> it does not use the WMI data services (service id's 0x101 >> to 0x104 ) for data traffic. >> Instead it uses the HTT data service for data and wmi unified >> for control messages. >> It is also different when it comes to mailbox addresses >> and HTC header format as well, but these differences are not >> part of this patch series. > > Do you have more patches implemented, like something already working or > have just started? > I have an implementation with all features I need so far, but the other patches will require cleanup before I can submit anything. I have been using the qcacld driver as a basis for the work and some of the stuff in that driver is not really compliant with the kernel coding style (to say the least). I have so far mainly been focused on getting all features up and running and that has (unfortunately) resulted in some copy-pasting from qcacld. I will start having a look at ath10k and see how much work it would be to add sdio support to it... ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support 2016-10-14 15:54 ` Erik Stromdahl @ 2016-10-15 5:29 ` Valo, Kalle 0 siblings, 0 replies; 15+ messages in thread From: Valo, Kalle @ 2016-10-15 5:29 UTC (permalink / raw) To: Erik Stromdahl; +Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org (Adding ath10k list) Erik Stromdahl <erik.stromdahl@gmail.com> writes: > On 10/14/2016 09:34 AM, Valo, Kalle wrote: >> Erik Stromdahl <erik.stromdahl@gmail.com> writes: >> >>> This patch series is intended to prepare the ath6kl driver >>> for newer chipsets that doesn't use the current WMI data >>> endpoints for data traffic. >>> >>> The chipset I have been working with (and used for testing) >>> is QCA6584. It is SDIO based (at least the variant I have >>> been using) with 802.11p WAVE DSRC capabilities. >>> >>> This chipset is different from the AR600X family in that >>> it does not use the WMI data services (service id's 0x101 >>> to 0x104 ) for data traffic. >>> Instead it uses the HTT data service for data and wmi unified >>> for control messages. >>> It is also different when it comes to mailbox addresses >>> and HTC header format as well, but these differences are not >>> part of this patch series. >> >> Do you have more patches implemented, like something already working or >> have just started? >> > > I have an implementation with all features I need so far, but the other > patches will require cleanup before I can submit anything. > > I have been using the qcacld driver as a basis for the work and some of > the stuff in that driver is not really compliant with the kernel coding > style (to say the least). > > I have so far mainly been focused on getting all features up and running > and that has (unfortunately) resulted in some copy-pasting from > qcacld. Can you share the current code you have somewhere so that I could take a quick look? I don't care how ugly it is, I would just like to understand what kind of changes are needed. > I will start having a look at ath10k and see how much work it would be > to add sdio support to it... Thanks, let me know how it goes or if I can help somehow. My time is limited but if nothing else I can give some tips. -- Kalle Valo _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC 0/5] ath6kl: non WMI data service support @ 2016-10-15 5:29 ` Valo, Kalle 0 siblings, 0 replies; 15+ messages in thread From: Valo, Kalle @ 2016-10-15 5:29 UTC (permalink / raw) To: Erik Stromdahl; +Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org (Adding ath10k list) Erik Stromdahl <erik.stromdahl@gmail.com> writes: > On 10/14/2016 09:34 AM, Valo, Kalle wrote: >> Erik Stromdahl <erik.stromdahl@gmail.com> writes: >>=20 >>> This patch series is intended to prepare the ath6kl driver >>> for newer chipsets that doesn't use the current WMI data >>> endpoints for data traffic. >>> >>> The chipset I have been working with (and used for testing) >>> is QCA6584. It is SDIO based (at least the variant I have >>> been using) with 802.11p WAVE DSRC capabilities. >>> >>> This chipset is different from the AR600X family in that >>> it does not use the WMI data services (service id's 0x101 >>> to 0x104 ) for data traffic. >>> Instead it uses the HTT data service for data and wmi unified >>> for control messages. >>> It is also different when it comes to mailbox addresses >>> and HTC header format as well, but these differences are not >>> part of this patch series. >>=20 >> Do you have more patches implemented, like something already working or >> have just started? >>=20 > > I have an implementation with all features I need so far, but the other > patches will require cleanup before I can submit anything. > > I have been using the qcacld driver as a basis for the work and some of > the stuff in that driver is not really compliant with the kernel coding > style (to say the least). > > I have so far mainly been focused on getting all features up and running > and that has (unfortunately) resulted in some copy-pasting from > qcacld. Can you share the current code you have somewhere so that I could take a quick look? I don't care how ugly it is, I would just like to understand what kind of changes are needed. > I will start having a look at ath10k and see how much work it would be > to add sdio support to it... Thanks, let me know how it goes or if I can help somehow. My time is limited but if nothing else I can give some tips. --=20 Kalle Valo= ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2016-10-15 5:30 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-10-13 16:39 [RFC 0/5] ath6kl: non WMI data service support Erik Stromdahl 2016-10-13 16:39 ` [RFC 1/5] ath6kl: HTC mbox tx complete cb support Erik Stromdahl 2016-10-13 16:39 ` [RFC 2/5] ath6kl: Updated TARG_VTOP macro with default value Erik Stromdahl 2016-10-13 16:39 ` [RFC 3/5] ath6kl: Added disable credit flow ctrl for mbox Erik Stromdahl 2016-10-13 16:39 ` [RFC 4/5] ath6kl: Updated credit setup Erik Stromdahl 2016-10-13 16:39 ` [RFC 5/5] ath6kl: service connect rewrite Erik Stromdahl 2016-10-13 23:57 ` [RFC 0/5] ath6kl: non WMI data service support Steve deRosier 2016-10-14 4:32 ` Valo, Kalle 2016-10-14 15:38 ` Erik Stromdahl 2016-10-15 5:24 ` Valo, Kalle 2016-10-15 5:24 ` Valo, Kalle 2016-10-14 7:34 ` Valo, Kalle 2016-10-14 15:54 ` Erik Stromdahl 2016-10-15 5:29 ` Valo, Kalle 2016-10-15 5:29 ` Valo, Kalle
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.