[PATCH, take 2] libertas: convert GET_LOG to a direct command
Dan Williams
dcbw at redhat.com
Mon Mar 17 17:32:54 EDT 2008
On Mon, 2008-03-17 at 12:45 +0100, Holger Schurig wrote:
> [PATCH] libertas: convert GET_LOG to a direct command
>
> Now uses __lbs_cmd() to get the "log" (it's actually more a snapshot of
> various counters, not a sequential log). Besides the "mechanical" convertion
> the patch add the following logical changes:
>
> * Removes the priv->logmsg variable, it was only used in one place anyway,
> also don't blindly get the counters when associating. Getting the
> counters then the user asks via WEXT for them is good enought.
> * don't set wstats.discard.fragment with log.rxfrag, because the latter is
> a counter for successfully received packets, not for fragmented packets.
>
> Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw at redhat.com>
> Index: wireless-testing/drivers/net/wireless/libertas/wext.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/wext.c 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/wext.c 2008-03-17 11:38:04.000000000 +0100
> @@ -820,6 +821,7 @@ static struct iw_statistics *lbs_get_wir
> int stats_valid = 0;
> u8 rssi;
> u32 tx_retries;
> + struct cmd_ds_802_11_get_log log;
>
> lbs_deb_enter(LBS_DEB_WEXT);
>
> @@ -863,7 +865,11 @@ static struct iw_statistics *lbs_get_wir
> /* Quality by TX errors */
> priv->wstats.discard.retries = priv->stats.tx_errors;
>
> - tx_retries = le32_to_cpu(priv->logmsg.retry);
> + memset(&log, 0, sizeof(log));
> + log.hdr.size = cpu_to_le16(sizeof(log));
> + lbs_cmd_with_response(priv, CMD_802_11_GET_LOG, &log);
> +
> + tx_retries = le32_to_cpu(log.retry);
>
> if (tx_retries > 75)
> tx_qual = (90 - tx_retries) * POOR / 15;
> @@ -879,10 +885,9 @@ static struct iw_statistics *lbs_get_wir
> (PERFECT - VERY_GOOD) / 50 + VERY_GOOD;
> quality = min(quality, tx_qual);
>
> - priv->wstats.discard.code = le32_to_cpu(priv->logmsg.wepundecryptable);
> - priv->wstats.discard.fragment = le32_to_cpu(priv->logmsg.rxfrag);
> + priv->wstats.discard.code = le32_to_cpu(log.wepundecryptable);
> priv->wstats.discard.retries = tx_retries;
> - priv->wstats.discard.misc = le32_to_cpu(priv->logmsg.ackfailure);
> + priv->wstats.discard.misc = le32_to_cpu(log.ackfailure);
>
> /* Calculate quality */
> priv->wstats.qual.qual = min_t(u8, quality, 100);
> @@ -892,8 +897,6 @@ static struct iw_statistics *lbs_get_wir
> /* update stats asynchronously for future calls */
> lbs_prepare_and_send_command(priv, CMD_802_11_RSSI, 0,
> 0, 0, NULL);
> - lbs_prepare_and_send_command(priv, CMD_802_11_GET_LOG, 0,
> - 0, 0, NULL);
> out:
> if (!stats_valid) {
> priv->wstats.miss.beacon = 0;
> Index: wireless-testing/drivers/net/wireless/libertas/assoc.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/assoc.c 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/assoc.c 2008-03-17 11:21:29.000000000 +0100
> @@ -628,10 +628,6 @@ void lbs_association_worker(struct work_
> lbs_prepare_and_send_command(priv,
> CMD_802_11_RSSI,
> 0, CMD_OPTION_WAITFORRSP, 0, NULL);
> -
> - lbs_prepare_and_send_command(priv,
> - CMD_802_11_GET_LOG,
> - 0, CMD_OPTION_WAITFORRSP, 0, NULL);
> } else {
> ret = -1;
> }
> Index: wireless-testing/drivers/net/wireless/libertas/cmd.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/cmd.c 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/cmd.c 2008-03-17 11:22:06.000000000 +0100
> @@ -454,18 +454,6 @@ static int lbs_cmd_802_11_reset(struct l
> return 0;
> }
>
> -static int lbs_cmd_802_11_get_log(struct lbs_private *priv,
> - struct cmd_ds_command *cmd)
> -{
> - lbs_deb_enter(LBS_DEB_CMD);
> - cmd->command = cpu_to_le16(CMD_802_11_GET_LOG);
> - cmd->size =
> - cpu_to_le16(sizeof(struct cmd_ds_802_11_get_log) + S_DS_GEN);
> -
> - lbs_deb_leave(LBS_DEB_CMD);
> - return 0;
> -}
> -
> static int lbs_cmd_802_11_get_stat(struct lbs_private *priv,
> struct cmd_ds_command *cmd)
> {
> @@ -1384,10 +1372,6 @@ int lbs_prepare_and_send_command(struct
> ret = lbs_cmd_802_11_reset(priv, cmdptr, cmd_action);
> break;
>
> - case CMD_802_11_GET_LOG:
> - ret = lbs_cmd_802_11_get_log(priv, cmdptr);
> - break;
> -
> case CMD_802_11_AUTHENTICATE:
> ret = lbs_cmd_80211_authenticate(priv, cmdptr, pdata_buf);
> break;
> Index: wireless-testing/drivers/net/wireless/libertas/cmdresp.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/cmdresp.c 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/cmdresp.c 2008-03-17 11:21:29.000000000 +0100
> @@ -303,20 +303,6 @@ static int lbs_ret_802_11_eeprom_access(
> return 0;
> }
>
> -static int lbs_ret_get_log(struct lbs_private *priv,
> - struct cmd_ds_command *resp)
> -{
> - struct cmd_ds_802_11_get_log *logmessage = &resp->params.glog;
> -
> - lbs_deb_enter(LBS_DEB_CMD);
> -
> - /* Stored little-endian */
> - memcpy(&priv->logmsg, logmessage, sizeof(struct cmd_ds_802_11_get_log));
> -
> - lbs_deb_leave(LBS_DEB_CMD);
> - return 0;
> -}
> -
> static int lbs_ret_802_11_bcn_ctrl(struct lbs_private * priv,
> struct cmd_ds_command *resp)
> {
> @@ -352,10 +338,6 @@ static inline int handle_cmd_response(st
> ret = lbs_ret_reg_access(priv, respcmd, resp);
> break;
>
> - case CMD_RET(CMD_802_11_GET_LOG):
> - ret = lbs_ret_get_log(priv, resp);
> - break;
> -
> case CMD_RET_802_11_ASSOCIATE:
> case CMD_RET(CMD_802_11_ASSOCIATE):
> case CMD_RET(CMD_802_11_REASSOCIATE):
> Index: wireless-testing/drivers/net/wireless/libertas/dev.h
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/dev.h 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/dev.h 2008-03-17 11:21:29.000000000 +0100
> @@ -323,8 +323,6 @@ struct lbs_private {
> u8 *prdeeprom;
> struct lbs_offset_value offsetvalue;
>
> - struct cmd_ds_802_11_get_log logmsg;
> -
> u32 monitormode;
> u8 fw_ready;
> };
> Index: wireless-testing/drivers/net/wireless/libertas/hostcmd.h
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/hostcmd.h 2008-03-17 11:21:02.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/hostcmd.h 2008-03-17 11:21:29.000000000 +0100
> @@ -195,6 +195,8 @@ struct cmd_ds_802_11_scan_rsp {
> };
>
> struct cmd_ds_802_11_get_log {
> + struct cmd_header hdr;
> +
> __le32 mcasttxframe;
> __le32 failed;
> __le32 retry;
> @@ -701,7 +703,6 @@ struct cmd_ds_command {
> struct cmd_ds_802_11_ad_hoc_start ads;
> struct cmd_ds_802_11_reset reset;
> struct cmd_ds_802_11_ad_hoc_result result;
> - struct cmd_ds_802_11_get_log glog;
> struct cmd_ds_802_11_authenticate auth;
> struct cmd_ds_802_11_get_stat gstat;
> struct cmd_ds_802_3_get_stat gstat_8023;
>
More information about the libertas-dev
mailing list