Commit e1fe7c38 authored by Sujith Manoharan's avatar Sujith Manoharan Committed by John W. Linville

ath9k_htc: Optimize HTC start/stop API

There is no point in looping over all the endpoints,
since the HIF layer uses the start/stop APIs only
for the TX pipe. Simplify the API accordingly.
Signed-off-by: default avatarSujith Manoharan <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent b587fc81
...@@ -310,7 +310,7 @@ static int hif_usb_send_tx(struct hif_device_usb *hif_dev, struct sk_buff *skb) ...@@ -310,7 +310,7 @@ static int hif_usb_send_tx(struct hif_device_usb *hif_dev, struct sk_buff *skb)
return 0; return 0;
} }
static void hif_usb_start(void *hif_handle, u8 pipe_id) static void hif_usb_start(void *hif_handle)
{ {
struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle;
unsigned long flags; unsigned long flags;
...@@ -322,7 +322,7 @@ static void hif_usb_start(void *hif_handle, u8 pipe_id) ...@@ -322,7 +322,7 @@ static void hif_usb_start(void *hif_handle, u8 pipe_id)
spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags);
} }
static void hif_usb_stop(void *hif_handle, u8 pipe_id) static void hif_usb_stop(void *hif_handle)
{ {
struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle;
struct tx_buf *tx_buf = NULL, *tx_buf_tmp = NULL; struct tx_buf *tx_buf = NULL, *tx_buf_tmp = NULL;
......
...@@ -302,27 +302,12 @@ int htc_send_epid(struct htc_target *target, struct sk_buff *skb, ...@@ -302,27 +302,12 @@ int htc_send_epid(struct htc_target *target, struct sk_buff *skb,
void htc_stop(struct htc_target *target) void htc_stop(struct htc_target *target)
{ {
enum htc_endpoint_id epid; target->hif->stop(target->hif_dev);
struct htc_endpoint *endpoint;
for (epid = ENDPOINT0; epid < ENDPOINT_MAX; epid++) {
endpoint = &target->endpoint[epid];
if (endpoint->service_id != 0)
target->hif->stop(target->hif_dev, endpoint->ul_pipeid);
}
} }
void htc_start(struct htc_target *target) void htc_start(struct htc_target *target)
{ {
enum htc_endpoint_id epid; target->hif->start(target->hif_dev);
struct htc_endpoint *endpoint;
for (epid = ENDPOINT0; epid < ENDPOINT_MAX; epid++) {
endpoint = &target->endpoint[epid];
if (endpoint->service_id != 0)
target->hif->start(target->hif_dev,
endpoint->ul_pipeid);
}
} }
void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle, void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle,
......
...@@ -33,8 +33,8 @@ struct ath9k_htc_hif { ...@@ -33,8 +33,8 @@ struct ath9k_htc_hif {
u8 control_dl_pipe; u8 control_dl_pipe;
u8 control_ul_pipe; u8 control_ul_pipe;
void (*start) (void *hif_handle, u8 pipe); void (*start) (void *hif_handle);
void (*stop) (void *hif_handle, u8 pipe); void (*stop) (void *hif_handle);
int (*send) (void *hif_handle, u8 pipe, struct sk_buff *buf); int (*send) (void *hif_handle, u8 pipe, struct sk_buff *buf);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment