[PATCH v2] ath10k: add FW API support to test mode

Michal Kazior michal.kazior at tieto.com
Wed Oct 21 00:28:08 PDT 2015


On 21 October 2015 at 09:22, Manikanta <manikanta.pubbisetty at gmail.com> wrote:
> On Wednesday 21 October 2015 12:36 PM, Michal Kazior wrote:
>> On 20 October 2015 at 09:01, Manikanta Pubbisetty
>> <manikanta.pubbisetty at gmail.com> wrote:
>>> On 10/20/2015 04:55 PM, Kalle Valo wrote:
>>>>
>>>> From: Alan Liu <alanliu at qca.qualcomm.com>
>>>>
>>>> Add WMI-TLV and FW API support in ath10k testmode.
>>>> Ath10k can get right wmi command format from UTF image
>>>> to communicate UTF firmware.
>>>>
>>>> Signed-off-by: Alan Liu <alanliu at qca.qualcomm.com>
>>>> Signed-off-by: Kalle Valo <kvalo at qca.qualcomm.com>
>>>> ---
[...]
>>>> +       /* loop elements */
>>>> +       while (len > sizeof(struct ath10k_fw_ie)) {
>>>> +               hdr = (struct ath10k_fw_ie *)data;
>>>> +
>>>> +               ie_id = le32_to_cpu(hdr->id);
>>>> +               ie_len = le32_to_cpu(hdr->len);
>>>> +
>>>> +               len -= sizeof(*hdr);
>>>> +               data += sizeof(*hdr);
>>>> +
>>>> +               if (len < ie_len) {
>>>> +                       ath10k_err(ar, "invalid length for FW IE %d (%zu
>>>> <
>>>> %zu)\n",
>>>> +                                  ie_id, len, ie_len);
>>>> +                       ret = -EINVAL;
>>>> +                       goto err;
>>>> +               }
>>>> +
>>>> +               switch (ie_id) {
>>>> +               case ATH10K_FW_IE_FW_VERSION:
>>>
>>>
>>> Something like ATH10K_UTF_IE_FW_VERSION or ATH10K_TESTMODE_IE_FW_VERSION
>>> would be less confusing and better, isn't it?
>>
>> I don't really see a reason to. UTF is just another main program to
>> run on the device.
>>
>> If anything I would suggest to unify the FW API parsing logic to work
>> with a dedicated structure instead of `struct ath10k` directly, i.e.
>>
>>    struct ath10k_fw {
>>      void *data;
>>      size_t data_len;
>>      enum wmi_op_version wmi_op_version;
>>      // ...
>>    };
>>
>>    int ath10k_core_fw_api_parse(struct ath10k *ar,
>>                                 struct ath10k_fw *arfw,
>>                                 struct firmware *fw)
>>     {
>>       // parse and fill in `arfw`
>>     }
>>
>>    struct ath10k {
>>      // ...
>>      struct ath10k_fw fw_normal;
>>      struct ath10k_fw fw_utf;
>>      // ...
>>    };
>>
>>
>> Michał
>
> Hmmm, this way we will have a unified firmware parsing logic. Is this a task
> which can be taken up easily or any other hidden complexities are invloved
> ?.

Decoupling the parsing logic should be rather easy. I don't think
there are any gotchas.


> I mean can we do the changes for current parsing logic and then rework the
> test mode patch ? what is your suggestion ?

If you want to do the unified parsing logic approach you should first
decouple the logic (i.e. make it not fill `struct ath10k` directly)
and then rework the testmode patch on top of that.


Michał



More information about the ath10k mailing list