[PATCH]Remove the PNO verion bit from the update scan param response to get the correcly response status

Eugene Krasnikov k.eugene.e at gmail.com
Thu May 23 12:06:45 EDT 2013


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?

By the way update_scan is not at all, do we need it? Dead code?:)

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