[PATCH]Remove the PNO verion bit from the update scan param response to get the correcly response status
YanBo
dreamfly281 at gmail.com
Thu May 23 12:17:39 EDT 2013
On Fri, May 24, 2013 at 12:06 AM, Eugene Krasnikov <k.eugene.e at gmail.com> wrote:
> Are we gonna remove PNO from any other response? I mean if we need to
> apply the same logic to any other responses except update_scan_params?
>
Currently only the update_scan_params has such special mark need check.
> By the way update_scan is not at all, do we need it? Dead code?:)
>
I have saw there is discussion about remove hw_scan function in the
previous mails, remove the hw_scan may lead to this as "dead code"
But I do believe the chip support hw_scan, but we just haven't find
the correctly way to enable this function at this moment,
when we get the correctly way to operate the hw_scan, it will be alive code :)
BR /Yanbo
> 2013/5/23 YanBo <dreamfly281 at gmail.com>:
>> On Thu, May 23, 2013 at 11:51 PM, Eugene Krasnikov <k.eugene.e at gmail.com> wrote:
>>> Let's keep function naming the same. Let's use
>>> wcn36xx_smd_update_scan_params_rsp instead
>>> wcn36xx_smd_rsp_update_scan_param_status_check. What do you think?
>>
>> Thanks for quickly feedback, this function is just used for status
>> check which more like the function "wcn36xx_smd_rsp_status_check"
>> so name style is more like this one, that seems more consistent, what
>> your opinion?
>>
>> BR /Yanbo
>>>
>>> 2013/5/23 YanBo <dreamfly281 at gmail.com>:
>>>> The update scan param status always report error cause it contain the PNO mark,
>>>> remove it to get the correctly response status
>>>>
>>>> Signed-off-by: Yanbo Li <yanbol at qti.qualcomm.com>
>>>> ---
>>>> smd.c | 35 ++++++++++++++++++++++-------------
>>>> smd.h | 4 +++-
>>>> 2 files changed, 25 insertions(+), 14 deletions(-)
>>>>
>>>> diff --git a/smd.c b/smd.c
>>>> index af38dcc..460b2da 100644
>>>> --- a/smd.c
>>>> +++ b/smd.c
>>>> @@ -74,6 +74,24 @@ static int wcn36xx_smd_rsp_status_check(void *buf,
>>>> size_t len)
>>>> return 0;
>>>> }
>>>>
>>>> +int wcn36xx_smd_rsp_update_scan_param_status_check(void *buf, size_t len)
>>>> +{
>>>> + struct wcn36xx_fw_msg_status_rsp * rsp;
>>>> + if (len < sizeof(struct wcn36xx_hal_msg_header) +
>>>> + sizeof(struct wcn36xx_fw_msg_status_rsp))
>>>> + return -EIO;
>>>> + rsp = (struct wcn36xx_fw_msg_status_rsp *)
>>>> + (buf + sizeof(struct wcn36xx_hal_msg_header));
>>>> +
>>>> + /* Remove the PNO version bit */
>>>> + rsp->status &= (~(WCN36XX_FW_MSG_PNO_VERSION_MASK));
>>>> +
>>>> + if (WCN36XX_FW_MSG_RESULT_SUCCESS != rsp->status) {
>>>> + return -EIO;
>>>> + }
>>>> + return 0;
>>>> +}
>>>> +
>>>> int wcn36xx_smd_load_nv(struct wcn36xx *wcn)
>>>> {
>>>> struct nv_data *nv_d;
>>>> @@ -298,18 +316,6 @@ int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn){
>>>>
>>>> return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
>>>> }
>>>> -static int wcn36xx_smd_update_scan_params_rsp(void *buf, size_t len)
>>>> -{
>>>> - struct wcn36xx_hal_update_scan_params_resp * rsp;
>>>> -
>>>> - rsp = (struct wcn36xx_hal_update_scan_params_resp *)buf;
>>>> -
>>>> - wcn36xx_dbg(WCN36XX_DBG_HAL,
>>>> - "hal rsp update scan params status %d",
>>>> - rsp->status);
>>>> -
>>>> - return 0;
>>>> -}
>>>>
>>>> int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, u8 *addr, u32 status)
>>>> {
>>>> @@ -901,7 +907,10 @@ static void wcn36xx_smd_rsp_process(struct
>>>> wcn36xx *wcn, void *buf, si
>>>> ze_t len)
>>>> wcn36xx_smd_join_rsp(buf, len);
>>>> break;
>>>> case WCN36XX_HAL_UPDATE_SCAN_PARAM_RSP:
>>>> - wcn36xx_smd_update_scan_params_rsp(buf, len);
>>>> + if(wcn36xx_smd_rsp_update_scan_param_status_check(buf, len)) {
>>>> + wcn36xx_warn("error response from hal request %d",
>>>> + msg_header->msg_type);
>>>> + }
>>>> break;
>>>> case WCN36XX_HAL_CH_SWITCH_RSP:
>>>> wcn36xx_smd_switch_channel_rsp(buf,len);
>>>> diff --git a/smd.h b/smd.h
>>>> index 47a6645..9703e19 100644
>>>> --- a/smd.h
>>>> +++ b/smd.h
>>>> @@ -27,6 +27,9 @@
>>>> #define SMD_MSG_TIMEOUT 200
>>>> #define WCN36XX_SMSM_WLAN_TX_ENABLE 0x00000400
>>>> #define WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY 0x00000200
>>>> +/* The PNO version info be contained in the rsp msg */
>>>> +#define WCN36XX_FW_MSG_PNO_VERSION_MASK 0X8000
>>>> +
>>>>
>>>> enum wcn36xx_fw_msg_result {
>>>> WCN36XX_FW_MSG_RESULT_SUCCESS = 0,
>>>> @@ -54,7 +57,6 @@ int wcn36xx_smd_init_scan(struct wcn36xx *wcn);
>>>> int wcn36xx_smd_start_scan(struct wcn36xx *wcn, int ch);
>>>> int wcn36xx_smd_end_scan(struct wcn36xx *wcn, int ch);
>>>> int wcn36xx_smd_finish_scan(struct wcn36xx *wcn);
>>>> -int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn);
>>>> int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, u8 *addr, u32 status);
>>>> int wcn36xx_smd_delete_sta_self(struct wcn36xx *wcn, u8 *addr);
>>>> int wcn36xx_smd_delete_sta(struct wcn36xx *wcn);
>>>> --
>>>> 1.7.9.5
>>>>
>>>> yanbo at buildingX:/var/tmp/output/drivers/net/wireless/ath/wcn36xx$
>>>> emacs 0001-Remove-the-PNO
>>>>
>>>> -verion-bit-from-the-update-scan-param.patch -nw
>>>> [-] = =0001-Remove-the-PNO-verion-bit-from-the-update-scan-param.patch--------------------------------------------------------------------------------------------------
>>>> int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, u8 *addr, u32 status)
>>>> {
>>>> @@ -901,7 +907,10 @@ static void wcn36xx_smd_rsp_process(struct
>>>> wcn36xx *wcn, void *buf, size_t len)
>>>> wcn36xx_smd_join_rsp(buf, len);
>>>> break;
>>>> case WCN36XX_HAL_UPDATE_SCAN_PARAM_RSP:
>>>> - wcn36xx_smd_update_scan_params_rsp(buf, len);
>>>> + if(wcn36xx_smd_rsp_update_scan_param_status_check(buf, len)) {
>>>> + wcn36xx_warn("error response from hal request %d",
>>>> + msg_header->msg_type);
>>>> + }
>>>> break;
>>>> case WCN36XX_HAL_CH_SWITCH_RSP:
>>>> wcn36xx_smd_switch_channel_rsp(buf,len);
>>>> diff --git a/smd.h b/smd.h
>>>> index 47a6645..9703e19 100644
>>>> --- a/smd.h
>>>> +++ b/smd.h
>>>> @@ -27,6 +27,9 @@
>>>> #define SMD_MSG_TIMEOUT 200
>>>> #define WCN36XX_SMSM_WLAN_TX_ENABLE 0x00000400
>>>> #define WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY 0x00000200
>>>> +/* The PNO version info be contained in the rsp msg */
>>>> +#define WCN36XX_FW_MSG_PNO_VERSION_MASK 0X8000
>>>> +
>>>>
>>>> enum wcn36xx_fw_msg_result {
>>>> WCN36XX_FW_MSG_RESULT_SUCCESS = 0,
>>>> @@ -54,7 +57,6 @@ int wcn36xx_smd_init_scan(struct wcn36xx *wcn);
>>>> int wcn36xx_smd_start_scan(struct wcn36xx *wcn, int ch);
>>>> int wcn36xx_smd_end_scan(struct wcn36xx *wcn, int ch);
>>>> int wcn36xx_smd_finish_scan(struct wcn36xx *wcn);
>>>> -int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn);
>>>> int wcn36xx_smd_add_sta_self(struct wcn36xx *wcn, u8 *addr, u32 status);
>>>> int wcn36xx_smd_delete_sta_self(struct wcn36xx *wcn, u8 *addr);
>>>> int wcn36xx_smd_delete_sta(struct wcn36xx *wcn);
>>>> --
>>>> 1.7.9.5
>>>>
>>>> _______________________________________________
>>>> wcn36xx mailing list
>>>> wcn36xx at lists.infradead.org
>>>> http://lists.infradead.org/mailman/listinfo/wcn36xx
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Eugene
>
>
>
> --
> Best regards,
> Eugene
More information about the wcn36xx
mailing list