Skip to content

Commit

Permalink
ath9k_htc: Configure credit size for AR7010
Browse files Browse the repository at this point in the history
For non-AR9271 chips, the credit size is different
and has to be configured appropriately.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Sujith authored and John W. Linville committed Jun 4, 2010
1 parent ea46e64 commit 6267dc7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
30 changes: 27 additions & 3 deletions drivers/net/wireless/ath/ath9k/htc_drv_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ static inline int ath9k_htc_connect_svc(struct ath9k_htc_priv *priv,
return htc_connect_service(priv->htc, &req, ep_id);
}

static int ath9k_init_htc_services(struct ath9k_htc_priv *priv)
static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
{
int ret;

Expand Down Expand Up @@ -237,10 +237,33 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv)
if (ret)
goto err;

/*
* Setup required credits before initializing HTC.
* This is a bit hacky, but, since queuing is done in
* the HIF layer, shouldn't matter much.
*/

switch(devid) {
case 0x9271:
case 0x1006:
priv->htc->credits = 33;
break;
case 0x7010:
priv->htc->credits = 45;
break;
default:
dev_err(priv->dev, "ath9k_htc: Unsupported device id: 0x%x\n",
devid);
goto err;
}

ret = htc_init(priv->htc);
if (ret)
goto err;

dev_info(priv->dev, "ath9k_htc: HTC initialized with %d credits\n",
priv->htc->credits);

return 0;

err:
Expand Down Expand Up @@ -842,7 +865,7 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
goto err_free;
}

ret = ath9k_init_htc_services(priv);
ret = ath9k_init_htc_services(priv, devid);
if (ret)
goto err_init;

Expand Down Expand Up @@ -885,7 +908,8 @@ int ath9k_htc_resume(struct htc_target *htc_handle)
if (ret)
return ret;

ret = ath9k_init_htc_services(htc_handle->drv_priv);
ret = ath9k_init_htc_services(htc_handle->drv_priv,
htc_handle->drv_priv->ah->hw_version.devid);
return ret;
}
#endif
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/wireless/ath/ath9k/htc_hst.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ static void htc_process_target_rdy(struct htc_target *target,
struct htc_endpoint *endpoint;
struct htc_ready_msg *htc_ready_msg = (struct htc_ready_msg *) buf;

target->credits = be16_to_cpu(htc_ready_msg->credits);
target->credit_size = be16_to_cpu(htc_ready_msg->credit_size);

endpoint = &target->endpoint[ENDPOINT0];
Expand Down Expand Up @@ -159,7 +158,7 @@ static int htc_config_pipe_credits(struct htc_target *target)

cp_msg->message_id = cpu_to_be16(HTC_MSG_CONFIG_PIPE_ID);
cp_msg->pipe_id = USB_WLAN_TX_PIPE;
cp_msg->credits = 33;
cp_msg->credits = target->credits;

target->htc_flags |= HTC_OP_CONFIG_PIPE_CREDITS;

Expand Down

0 comments on commit 6267dc7

Please sign in to comment.