linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Farina <sidhayn@gmail.com>
To: Sujith <m.sujith@gmail.com>
Cc: wireless <linux-wireless@vger.kernel.org>
Subject: Re: ath9k_htc oddity
Date: Mon, 11 Apr 2011 10:36:35 -0400	[thread overview]
Message-ID: <4DA311F3.6010007@gmail.com> (raw)
In-Reply-To: <19871.62035.829719.402615@gargle.gargle.HOWL>

On 04/09/11 01:44, Sujith wrote:
> Richard Farina wrote:
>> I've been using the ethool -i output a lot recently and have been very
>> much enjoying it, however I've noticed some oddity.  My ath9k_htc card,
>> Ubiquiti Wifistation-EXT, doesn't have good output while using
>> compat-wireless stable 2.6.39-rc1.
>>
>> flea scripts # ethtool -i wlan15
>> driver: usb
>> version: 2.6.37-pentoo-r6-grsec
>> firmware-version: N/A
>> bus-info: 2-5
>>
>>
>> Not only is the driver listed incorrectly, but the firmware-version is
>> not listed at all. Is it just me?
> The driver name/bus-info is wrong because the wrong device pointer is used
> when registering the wireless device.
>
> The firmware version is N/A because, well, the FW has no version. :)
>
> I have a patch queued up and ethtool show this now:
> (This requires a FW update ...)
>
> sujith@atheros-dev ~  $ ethtool -i wlan0
> driver: ath9k_htc
> version: 2.6.39-rc2-wl
> firmware-version: 1.0
> bus-info: 1-3:1.0
The following commit causes extreme sadness:
[ 4094.241243] usb 2-5: new high speed USB device using ehci_hcd and 
address 3
[ 4095.550452] usb 2-5: ath9k_htc: Transferred FW: ar9271.fw, size: 51312
[ 4095.816072] ath9k_htc 2-5:1.0: ath9k_htc: HTC initialized with 33 credits
[ 4159.812888] usb 2-5: USB disconnect, address 3
[ 4159.929317] ath: Couldn't reset chip
[ 4159.929321] ath: Unable to initialize hardware; initialization status: -5
[ 4159.929323] ath: Unable to initialize hardware; initialization status: -5
[ 4159.929340] Failed to initialize the device
[ 4160.012603] ath9k_htc: probe of 2-5:1.0 failed with error -22
[ 4160.012771] usbcore: registered new interface driver ath9k_htc
[ 4163.595059] usb 2-5: new high speed USB device using ehci_hcd and 
address 4
[ 4164.018920] usb 2-5: ath9k_htc: Transferred FW: ar9271.fw, size: 51312
[ 4164.284420] ath9k_htc 2-5:1.0: ath9k_htc: HTC initialized with 33 credits

I'm guessing because I need the mentioned firmware update? Where can I 
get it? Or better yet can you (this is almost laughable considering the 
ralink thread right now) get it into linux-firmware? Or is the needed 
firmware update an unstable thing?

Either way I can wait on the firmware-version fix but where can I find 
the patch that shows fixes the "driver: usb" issue? Your obviously shows 
properly :-)

Thanks,
Rick Farina
> commit d3ce084bd9ce550d80fc0e92dd91393ca02d3429
> Author: Sujith Manoharan<Sujith.Manoharan@atheros.com>
> Date:   Wed Apr 6 09:23:50 2011 +0530
>
>      ath9k_htc: Add a WMI command to get the firmware version
>
>      Also, update the wiphy information and use the correct
>      device pointer when registering. This would fix ethtool.
>
>      Signed-off-by: Sujith Manoharan<Sujith.Manoharan@atheros.com>
>
> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
> index 23094b7..c81b2da 100644
> --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
> @@ -1035,7 +1035,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
>   	}
>
>   	ret = ath9k_htc_hw_init(hif_dev->htc_handle,
> -				&hif_dev->udev->dev, hif_dev->device_id,
> +				&interface->dev, hif_dev->device_id,
>   				hif_dev->udev->product, id->driver_info);
>   	if (ret) {
>   		ret = -EINVAL;
> @@ -1153,7 +1153,7 @@ fail_resume:
>   #endif
>
>   static struct usb_driver ath9k_hif_usb_driver = {
> -	.name = "ath9k_hif_usb",
> +	.name = KBUILD_MODNAME,
>   	.probe = ath9k_hif_usb_probe,
>   	.disconnect = ath9k_hif_usb_disconnect,
>   #ifdef CONFIG_PM
> diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
> index ec47be9..9544cd7 100644
> --- a/drivers/net/wireless/ath/ath9k/htc.h
> +++ b/drivers/net/wireless/ath/ath9k/htc.h
> @@ -388,6 +388,9 @@ struct ath9k_htc_priv {
>   	struct htc_target *htc;
>   	struct wmi *wmi;
>
> +	u16 fw_version_major;
> +	u16 fw_version_minor;
> +
>   	enum htc_endpoint_id wmi_cmd_ep;
>   	enum htc_endpoint_id beacon_ep;
>   	enum htc_endpoint_id cab_ep;
> diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
> index 8303b34..6bbfca5 100644
> --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
> +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
> @@ -782,6 +782,32 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv,
>   	SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
>   }
>
> +static int ath9k_init_firmware_version(struct ath9k_htc_priv *priv)
> +{
> +	struct ieee80211_hw *hw = priv->hw;
> +	struct wmi_fw_version cmd_rsp;
> +	int ret;
> +
> +	memset(&cmd_rsp, 0, sizeof(cmd_rsp));
> +
> +	WMI_CMD(WMI_GET_FW_VERSION);
> +	if (ret)
> +		return -EINVAL;
> +
> +	priv->fw_version_major = be16_to_cpu(cmd_rsp.major);
> +	priv->fw_version_minor = be16_to_cpu(cmd_rsp.minor);
> +
> +	snprintf(hw->wiphy->fw_version, ETHTOOL_BUSINFO_LEN, "%d.%d",
> +		 priv->fw_version_major,
> +		 priv->fw_version_minor);
> +
> +	dev_info(priv->dev, "ath9k_htc: FW Version: %d.%d\n",
> +		 priv->fw_version_major,
> +		 priv->fw_version_minor);
> +
> +	return 0;
> +}
> +
>   static int ath9k_init_device(struct ath9k_htc_priv *priv,
>   			     u16 devid, char *product, u32 drv_info)
>   {
> @@ -801,6 +827,10 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv,
>   	common = ath9k_hw_common(ah);
>   	ath9k_set_hw_capab(priv, hw);
>
> +	error = ath9k_init_firmware_version(priv);
> +	if (error != 0)
> +		goto err_fw;
> +
>   	/* Initialize regulatory */
>   	error = ath_regd_init(&common->regulatory, priv->hw->wiphy,
>   			      ath9k_reg_notifier);
> @@ -861,6 +891,8 @@ err_rx:
>   err_tx:
>   	/* Nothing */
>   err_regd:
> +	/* Nothing */
> +err_fw:
>   	ath9k_deinit_priv(priv);
>   err_init:
>   	return error;
> diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c
> index d3d2490..267a98f 100644
> --- a/drivers/net/wireless/ath/ath9k/wmi.c
> +++ b/drivers/net/wireless/ath/ath9k/wmi.c
> @@ -23,6 +23,8 @@ static const char *wmi_cmd_to_name(enum wmi_cmd_id wmi_cmd)
>   		return "WMI_ECHO_CMDID";
>   	case WMI_ACCESS_MEMORY_CMDID:
>   		return "WMI_ACCESS_MEMORY_CMDID";
> +	case WMI_GET_FW_VERSION:
> +		return "WMI_GET_FW_VERSION";
>   	case WMI_DISABLE_INTR_CMDID:
>   		return "WMI_DISABLE_INTR_CMDID";
>   	case WMI_ENABLE_INTR_CMDID:
> diff --git a/drivers/net/wireless/ath/ath9k/wmi.h b/drivers/net/wireless/ath/ath9k/wmi.h
> index 4208427..6a36572 100644
> --- a/drivers/net/wireless/ath/ath9k/wmi.h
> +++ b/drivers/net/wireless/ath/ath9k/wmi.h
> @@ -31,11 +31,17 @@ struct wmi_cmd_hdr {
>   	__be16 seq_no;
>   } __packed;
>
> +struct wmi_fw_version {
> +	__be16 major;
> +	__be16 minor;
> +
> +} __packed;
>   enum wmi_cmd_id {
>   	WMI_ECHO_CMDID = 0x0001,
>   	WMI_ACCESS_MEMORY_CMDID,
>
>   	/* Commands to Target */
> +	WMI_GET_FW_VERSION,
>   	WMI_DISABLE_INTR_CMDID,
>   	WMI_ENABLE_INTR_CMDID,
>   	WMI_RX_LINK_CMDID,
>
>
>


  reply	other threads:[~2011-04-11 14:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-09  3:03 ath9k_htc oddity Richard Farina
2011-04-09  5:44 ` Sujith
2011-04-11 14:36   ` Richard Farina [this message]
2011-04-11 15:28     ` Sujith
2011-04-11 15:29       ` Sujith
2011-04-11 16:04       ` Richard Farina
2011-04-11 16:14         ` Sujith
2011-04-11 16:59           ` Richard Farina

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DA311F3.6010007@gmail.com \
    --to=sidhayn@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=m.sujith@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).