[3/4] net/hns3: fix parse link fails code fail

Message ID 1619056552-43937-4-git-send-email-humin29@huawei.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series bugfix for hns3 PMD |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

humin (Q) April 22, 2021, 1:55 a.m. UTC
  From: Chengwen Feng <fengchengwen@huawei.com>

The link fails code should be parsed using the structure
hns3_mbx_vf_to_pf_cmd, else it will parse fail.

Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_mbx.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Ferruh Yigit April 26, 2021, 12:26 p.m. UTC | #1
On 4/22/2021 2:55 AM, Min Hu (Connor) wrote:
> From: Chengwen Feng <fengchengwen@huawei.com>
> 
> The link fails code should be parsed using the structure
> hns3_mbx_vf_to_pf_cmd, else it will parse fail.
> 
> Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
>  drivers/net/hns3/hns3_mbx.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
> index ba04ac9..0550c9a 100644
> --- a/drivers/net/hns3/hns3_mbx.c
> +++ b/drivers/net/hns3/hns3_mbx.c
> @@ -346,12 +346,13 @@ hns3_link_fail_parse(struct hns3_hw *hw, uint8_t link_fail_code)
>  }
>  
>  static void
> -hns3pf_handle_link_change_event(struct hns3_hw *hw,
> -			      struct hns3_mbx_pf_to_vf_cmd *req)
> +hns3pf_handle_link_change_event(struct hns3_hw *hw, void *data)

Why not s/struct hns3_mbx_pf_to_vf_cmd/struct hns3_mbx_vf_to_pf_cmd/ but change
to parameter to "void *", wouldn't it reduce the type check?

>  {
>  #define LINK_STATUS_OFFSET     1
>  #define LINK_FAIL_CODE_OFFSET  2
>  
> +	struct hns3_mbx_vf_to_pf_cmd *req = data;
> +
>  	if (!req->msg[LINK_STATUS_OFFSET])
>  		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);
>  
>
  
fengchengwen April 26, 2021, 12:41 p.m. UTC | #2
On 2021/4/26 20:26, Ferruh Yigit wrote:
> On 4/22/2021 2:55 AM, Min Hu (Connor) wrote:
>> From: Chengwen Feng <fengchengwen@huawei.com>
>>
>> The link fails code should be parsed using the structure
>> hns3_mbx_vf_to_pf_cmd, else it will parse fail.
>>
>> Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>> ---
>>  drivers/net/hns3/hns3_mbx.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>> index ba04ac9..0550c9a 100644
>> --- a/drivers/net/hns3/hns3_mbx.c
>> +++ b/drivers/net/hns3/hns3_mbx.c
>> @@ -346,12 +346,13 @@ hns3_link_fail_parse(struct hns3_hw *hw, uint8_t link_fail_code)
>>  }
>>  
>>  static void
>> -hns3pf_handle_link_change_event(struct hns3_hw *hw,
>> -			      struct hns3_mbx_pf_to_vf_cmd *req)
>> +hns3pf_handle_link_change_event(struct hns3_hw *hw, void *data)
> 
> Why not s/struct hns3_mbx_pf_to_vf_cmd/struct hns3_mbx_vf_to_pf_cmd/ but change
> to parameter to "void *", wouldn't it reduce the type check?
> 

Only this message needs to be converted using hns3_mbx_vf_to_pf_cmd.
All other messages are processed using hns3_mbx_pf_to_vf_cmd.
So here we simplifying fix it.

Beside we will refactor hns3_mbx module in later version because the
PF and VF process logic is mixed.

thanks

>>  {
>>  #define LINK_STATUS_OFFSET     1
>>  #define LINK_FAIL_CODE_OFFSET  2
>>  
>> +	struct hns3_mbx_vf_to_pf_cmd *req = data;
>> +
>>  	if (!req->msg[LINK_STATUS_OFFSET])
>>  		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);
>>  
>>
> 
> 
> .
>
  
Ferruh Yigit April 26, 2021, 12:50 p.m. UTC | #3
On 4/26/2021 1:41 PM, fengchengwen wrote:
> 
> 
> On 2021/4/26 20:26, Ferruh Yigit wrote:
>> On 4/22/2021 2:55 AM, Min Hu (Connor) wrote:
>>> From: Chengwen Feng <fengchengwen@huawei.com>
>>>
>>> The link fails code should be parsed using the structure
>>> hns3_mbx_vf_to_pf_cmd, else it will parse fail.
>>>
>>> Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>> ---
>>>  drivers/net/hns3/hns3_mbx.c | 5 +++--
>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>>> index ba04ac9..0550c9a 100644
>>> --- a/drivers/net/hns3/hns3_mbx.c
>>> +++ b/drivers/net/hns3/hns3_mbx.c
>>> @@ -346,12 +346,13 @@ hns3_link_fail_parse(struct hns3_hw *hw, uint8_t link_fail_code)
>>>  }
>>>  
>>>  static void
>>> -hns3pf_handle_link_change_event(struct hns3_hw *hw,
>>> -			      struct hns3_mbx_pf_to_vf_cmd *req)
>>> +hns3pf_handle_link_change_event(struct hns3_hw *hw, void *data)
>>
>> Why not s/struct hns3_mbx_pf_to_vf_cmd/struct hns3_mbx_vf_to_pf_cmd/ but change
>> to parameter to "void *", wouldn't it reduce the type check?
>>
> 
> Only this message needs to be converted using hns3_mbx_vf_to_pf_cmd.
> All other messages are processed using hns3_mbx_pf_to_vf_cmd.
> So here we simplifying fix it.
> 

There is a single caller of the function, which send parameter as "struct
hns3_mbx_pf_to_vf_cmd *req", so what is the point of making the parameter as
"void *" and inside the function cast it to "struct hns3_mbx_vf_to_pf_cmd *req =
data;"?
Instead of defining parameter as "struct hns3_mbx_pf_to_vf_cmd *req".

> Beside we will refactor hns3_mbx module in later version because the
> PF and VF process logic is mixed.
> 

OK

> thanks
> 
>>>  {
>>>  #define LINK_STATUS_OFFSET     1
>>>  #define LINK_FAIL_CODE_OFFSET  2
>>>  
>>> +	struct hns3_mbx_vf_to_pf_cmd *req = data;
>>> +
>>>  	if (!req->msg[LINK_STATUS_OFFSET])
>>>  		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);
>>>  
>>>
>>
>>
>> .
>>
>
  
fengchengwen April 26, 2021, 1:20 p.m. UTC | #4
On 2021/4/26 20:50, Ferruh Yigit wrote:
> On 4/26/2021 1:41 PM, fengchengwen wrote:
>>
>>
>> On 2021/4/26 20:26, Ferruh Yigit wrote:
>>> On 4/22/2021 2:55 AM, Min Hu (Connor) wrote:
>>>> From: Chengwen Feng <fengchengwen@huawei.com>
>>>>
>>>> The link fails code should be parsed using the structure
>>>> hns3_mbx_vf_to_pf_cmd, else it will parse fail.
>>>>
>>>> Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
>>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>>> ---
>>>>  drivers/net/hns3/hns3_mbx.c | 5 +++--
>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>>>> index ba04ac9..0550c9a 100644
>>>> --- a/drivers/net/hns3/hns3_mbx.c
>>>> +++ b/drivers/net/hns3/hns3_mbx.c
>>>> @@ -346,12 +346,13 @@ hns3_link_fail_parse(struct hns3_hw *hw, uint8_t link_fail_code)
>>>>  }
>>>>  
>>>>  static void
>>>> -hns3pf_handle_link_change_event(struct hns3_hw *hw,
>>>> -			      struct hns3_mbx_pf_to_vf_cmd *req)
>>>> +hns3pf_handle_link_change_event(struct hns3_hw *hw, void *data)
>>>
>>> Why not s/struct hns3_mbx_pf_to_vf_cmd/struct hns3_mbx_vf_to_pf_cmd/ but change
>>> to parameter to "void *", wouldn't it reduce the type check?
>>>
>>
>> Only this message needs to be converted using hns3_mbx_vf_to_pf_cmd.
>> All other messages are processed using hns3_mbx_pf_to_vf_cmd.
>> So here we simplifying fix it.
>>
> 
> There is a single caller of the function, which send parameter as "struct
> hns3_mbx_pf_to_vf_cmd *req", so what is the point of making the parameter as
> "void *" and inside the function cast it to "struct hns3_mbx_vf_to_pf_cmd *req =
> data;"?
> Instead of defining parameter as "struct hns3_mbx_pf_to_vf_cmd *req".
> 

We'll keep the original API interface and add comments in v2, thanks

>> Beside we will refactor hns3_mbx module in later version because the
>> PF and VF process logic is mixed.
>>
> 
> OK
> 
>> thanks
>>
>>>>  {
>>>>  #define LINK_STATUS_OFFSET     1
>>>>  #define LINK_FAIL_CODE_OFFSET  2
>>>>  
>>>> +	struct hns3_mbx_vf_to_pf_cmd *req = data;
>>>> +
>>>>  	if (!req->msg[LINK_STATUS_OFFSET])
>>>>  		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);
>>>>  
>>>>
>>>
>>>
>>> .
>>>
>>
> 
> 
> .
>
  

Patch

diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index ba04ac9..0550c9a 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -346,12 +346,13 @@  hns3_link_fail_parse(struct hns3_hw *hw, uint8_t link_fail_code)
 }
 
 static void
-hns3pf_handle_link_change_event(struct hns3_hw *hw,
-			      struct hns3_mbx_pf_to_vf_cmd *req)
+hns3pf_handle_link_change_event(struct hns3_hw *hw, void *data)
 {
 #define LINK_STATUS_OFFSET     1
 #define LINK_FAIL_CODE_OFFSET  2
 
+	struct hns3_mbx_vf_to_pf_cmd *req = data;
+
 	if (!req->msg[LINK_STATUS_OFFSET])
 		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);