DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD
@ 2021-04-22  1:55 Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 1/4] net/hns3: fix error mbx messages prompt errors Min Hu (Connor)
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-22  1:55 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

This patchset contains four bugfixes for hns3 PMD.

Chengwen Feng (4):
  net/hns3: fix error mbx messages prompt errors
  net/hns3: fix PF miss link status notify message
  net/hns3: fix parse link fails code fail
  net/hns3: delete unused macro and struct of mbx module

 drivers/net/hns3/hns3_mbx.c | 18 +++++++++++-------
 drivers/net/hns3/hns3_mbx.h | 10 ----------
 2 files changed, 11 insertions(+), 17 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 1/4] net/hns3: fix error mbx messages prompt errors
  2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
@ 2021-04-22  1:55 ` Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 2/4] net/hns3: fix PF miss link status notify message Min Hu (Connor)
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-22  1:55 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

From: Chengwen Feng <fengchengwen@huawei.com>

The hns3_dev_handle_mbx_msg() could be called under both PF and VF,
but the error messages show VF.

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 | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index eb202dd..3b35c02 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -528,8 +528,7 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
 			hns3_handle_promisc_info(hw, req->msg[1]);
 			break;
 		default:
-			hns3_err(hw,
-				 "VF received unsupported(%u) mbx msg from PF",
+			hns3_err(hw, "received unsupported(%u) mbx msg",
 				 req->msg[0]);
 			break;
 		}
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 2/4] net/hns3: fix PF miss link status notify message
  2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 1/4] net/hns3: fix error mbx messages prompt errors Min Hu (Connor)
@ 2021-04-22  1:55 ` Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-22  1:55 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

From: Chengwen Feng <fengchengwen@huawei.com>

The opcode of the link status notification message reported by the
firmware is zero, it will be filtered out because driver treats it as
already processed message. As a result, the PF can't update the link
status in a timely manner.

Because only VF can set opcode to zero when process mailbox message,
so we add a judgment to make sure the PF messages will not filter out.

Fixes: dbbbad23e380 ("net/hns3: fix VF handling LSC event in secondary process")
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 | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index 3b35c02..ba04ac9 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -438,16 +438,19 @@ hns3_handle_mbx_msg_out_intr(struct hns3_hw *hw)
 void
 hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
 {
+	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
 	struct hns3_cmq_ring *crq = &hw->cmq.crq;
 	struct hns3_mbx_pf_to_vf_cmd *req;
 	struct hns3_cmd_desc *desc;
+	bool handle_out;
 	uint8_t opcode;
 	uint16_t flag;
 
 	rte_spinlock_lock(&hw->cmq.crq.lock);
 
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY ||
-	    !rte_thread_is_intr()) {
+	handle_out = (rte_eal_process_type() != RTE_PROC_PRIMARY ||
+		      !rte_thread_is_intr()) && hns->is_vf;
+	if (handle_out) {
 		/*
 		 * Currently, any threads in the primary and secondary processes
 		 * could send mailbox sync request, so it will need to process
@@ -491,7 +494,8 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
 			continue;
 		}
 
-		if (desc->opcode == 0) {
+		handle_out = hns->is_vf && desc->opcode == 0;
+		if (handle_out) {
 			/* Message already processed by other thread */
 			crq->desc[crq->next_to_use].flag = 0;
 			hns3_mbx_ring_ptr_move_crq(crq);
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail
  2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 1/4] net/hns3: fix error mbx messages prompt errors Min Hu (Connor)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 2/4] net/hns3: fix PF miss link status notify message Min Hu (Connor)
@ 2021-04-22  1:55 ` Min Hu (Connor)
  2021-04-26 12:26   ` Ferruh Yigit
                     ` (2 more replies)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 4/4] net/hns3: delete unused macro and struct of mbx module Min Hu (Connor)
  2021-04-26 12:52 ` [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Ferruh Yigit
  4 siblings, 3 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-22  1:55 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

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)
 {
 #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]);
 
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH 4/4] net/hns3: delete unused macro and struct of mbx module
  2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
                   ` (2 preceding siblings ...)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
@ 2021-04-22  1:55 ` Min Hu (Connor)
  2021-04-26 12:52 ` [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Ferruh Yigit
  4 siblings, 0 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-22  1:55 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

From: Chengwen Feng <fengchengwen@huawei.com>

In hns3_mbx.h, some macro and structure were defined in previous
versions but never used.

Fixes: 463e748964f5 ("net/hns3: support 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.h | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/drivers/net/hns3/hns3_mbx.h b/drivers/net/hns3/hns3_mbx.h
index 0e9194d..86d32e6 100644
--- a/drivers/net/hns3/hns3_mbx.h
+++ b/drivers/net/hns3/hns3_mbx.h
@@ -5,8 +5,6 @@
 #ifndef _HNS3_MBX_H_
 #define _HNS3_MBX_H_
 
-#define HNS3_MBX_VF_MSG_DATA_NUM	16
-
 enum HNS3_MBX_OPCODE {
 	HNS3_MBX_RESET = 0x01,          /* (VF -> PF) assert reset */
 	HNS3_MBX_ASSERTING_RESET,       /* (PF -> VF) PF is asserting reset */
@@ -80,8 +78,6 @@ enum hns3_mbx_link_fail_subcode {
 
 #define HNS3_MBX_MAX_MSG_SIZE	16
 #define HNS3_MBX_MAX_RESP_DATA_SIZE	8
-#define HNS3_MBX_RING_MAP_BASIC_MSG_NUM	3
-#define HNS3_MBX_RING_NODE_VARIABLE_NUM	3
 
 enum {
 	HNS3_MBX_RESP_MATCHING_SCHEME_OF_ORIGINAL = 0,
@@ -147,12 +143,6 @@ struct hns3_vf_bind_vector_msg {
 	struct hns3_ring_chain_param param[HNS3_MBX_MAX_RING_CHAIN_PARAM_NUM];
 };
 
-struct hns3_vf_rst_cmd {
-	uint8_t dest_vfid;
-	uint8_t vf_rst;
-	uint8_t rsv[22];
-};
-
 struct hns3_pf_rst_done_cmd {
 	uint8_t pf_rst_done;
 	uint8_t rsv[23];
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
@ 2021-04-26 12:26   ` Ferruh Yigit
  2021-04-26 12:41     ` fengchengwen
  2021-04-26 13:42   ` [dpdk-dev] [PATCH v2] " Min Hu (Connor)
  2021-04-27 12:17   ` [dpdk-dev] [PATCH v3] " Min Hu (Connor)
  2 siblings, 1 reply; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-26 12:26 UTC (permalink / raw)
  To: Min Hu (Connor), dev

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]);
>  
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail
  2021-04-26 12:26   ` Ferruh Yigit
@ 2021-04-26 12:41     ` fengchengwen
  2021-04-26 12:50       ` Ferruh Yigit
  0 siblings, 1 reply; 19+ messages in thread
From: fengchengwen @ 2021-04-26 12:41 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Min Hu (Connor), dev



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]);
>>  
>>
> 
> 
> .
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail
  2021-04-26 12:41     ` fengchengwen
@ 2021-04-26 12:50       ` Ferruh Yigit
  2021-04-26 13:20         ` fengchengwen
  0 siblings, 1 reply; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-26 12:50 UTC (permalink / raw)
  To: fengchengwen; +Cc: Min Hu (Connor), dev

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]);
>>>  
>>>
>>
>>
>> .
>>
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD
  2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
                   ` (3 preceding siblings ...)
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 4/4] net/hns3: delete unused macro and struct of mbx module Min Hu (Connor)
@ 2021-04-26 12:52 ` Ferruh Yigit
  4 siblings, 0 replies; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-26 12:52 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 4/22/2021 2:55 AM, Min Hu (Connor) wrote:
> This patchset contains four bugfixes for hns3 PMD.
> 
> Chengwen Feng (4):
>   net/hns3: fix error mbx messages prompt errors
>   net/hns3: fix PF miss link status notify message
>   net/hns3: fix parse link fails code fail
>   net/hns3: delete unused macro and struct of mbx module
> 

Except from 3/4,
Series applied to dpdk-next-net/main, thanks.


3/4 can be handled separately.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail
  2021-04-26 12:50       ` Ferruh Yigit
@ 2021-04-26 13:20         ` fengchengwen
  0 siblings, 0 replies; 19+ messages in thread
From: fengchengwen @ 2021-04-26 13:20 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Min Hu (Connor), dev



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]);
>>>>  
>>>>
>>>
>>>
>>> .
>>>
>>
> 
> 
> .
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v2] net/hns3: fix parse link fails code fail
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
  2021-04-26 12:26   ` Ferruh Yigit
@ 2021-04-26 13:42   ` Min Hu (Connor)
  2021-04-27 11:11     ` Ferruh Yigit
  2021-04-27 12:17   ` [dpdk-dev] [PATCH v3] " Min Hu (Connor)
  2 siblings, 1 reply; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-26 13:42 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

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>
---
v2:
* kept original API interface.
---
 drivers/net/hns3/hns3_mbx.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index eb202dd..755298f 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -346,12 +346,20 @@ 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)
+				struct hns3_mbx_pf_to_vf_cmd *cmd)
 {
 #define LINK_STATUS_OFFSET     1
 #define LINK_FAIL_CODE_OFFSET  2
 
+	/*
+	 * This message is reported by the firmware and is reported in
+	 * 'struct hns3_mbx_vf_to_pf_cmd' format. Therefore, we should cast
+	 * the cmd to 'struct hns3_mbx_vf_to_pf_cmd' first.
+	 */
+	struct hns3_mbx_vf_to_pf_cmd *req = (struct hns3_mbx_vf_to_pf_cmd *)cmd;
+
 	if (!req->msg[LINK_STATUS_OFFSET])
 		hns3_link_fail_parse(hw, req->msg[LINK_FAIL_CODE_OFFSET]);
 
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2] net/hns3: fix parse link fails code fail
  2021-04-26 13:42   ` [dpdk-dev] [PATCH v2] " Min Hu (Connor)
@ 2021-04-27 11:11     ` Ferruh Yigit
  2021-04-27 12:31       ` Min Hu (Connor)
  0 siblings, 1 reply; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-27 11:11 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 4/26/2021 2:42 PM, 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>
> ---
> v2:
> * kept original API interface.
> ---
>  drivers/net/hns3/hns3_mbx.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
> index eb202dd..755298f 100644
> --- a/drivers/net/hns3/hns3_mbx.c
> +++ b/drivers/net/hns3/hns3_mbx.c
> @@ -346,12 +346,20 @@ 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)
> +				struct hns3_mbx_pf_to_vf_cmd *cmd)
>  {
>  #define LINK_STATUS_OFFSET     1
>  #define LINK_FAIL_CODE_OFFSET  2
>  
> +	/*
> +	 * This message is reported by the firmware and is reported in
> +	 * 'struct hns3_mbx_vf_to_pf_cmd' format. Therefore, we should cast
> +	 * the cmd to 'struct hns3_mbx_vf_to_pf_cmd' first.
> +	 */
> +	struct hns3_mbx_vf_to_pf_cmd *req = (struct hns3_mbx_vf_to_pf_cmd *)cmd;
> +

Hi Connor,

I guess I am missing something obvious, why not get the parameter as 'struct
hns3_mbx_vf_to_pf_cmd' at first place?

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
  2021-04-26 12:26   ` Ferruh Yigit
  2021-04-26 13:42   ` [dpdk-dev] [PATCH v2] " Min Hu (Connor)
@ 2021-04-27 12:17   ` Min Hu (Connor)
  2021-04-27 12:45     ` Ferruh Yigit
  2 siblings, 1 reply; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-27 12:17 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit

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>
---
v3:
* get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.

v2:
* kept original API interface.
---
 drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index ba04ac9..31ab130 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -347,7 +347,7 @@ 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)
+				struct hns3_mbx_vf_to_pf_cmd *req)
 {
 #define LINK_STATUS_OFFSET     1
 #define LINK_FAIL_CODE_OFFSET  2
@@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
 			hns3_handle_asserting_reset(hw, req);
 			break;
 		case HNS3_MBX_PUSH_LINK_STATUS:
-			hns3pf_handle_link_change_event(hw, req);
+			/*
+			 * This message is reported by the firmware and is
+			 * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
+			 * Therefore, we should cast the req variable to
+			 * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
+			 */
+			hns3pf_handle_link_change_event(hw,
+				(struct hns3_mbx_vf_to_pf_cmd *)req);
 			break;
 		case HNS3_MBX_PUSH_VLAN_INFO:
 			/*
-- 
2.7.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v2] net/hns3: fix parse link fails code fail
  2021-04-27 11:11     ` Ferruh Yigit
@ 2021-04-27 12:31       ` Min Hu (Connor)
  0 siblings, 0 replies; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-27 12:31 UTC (permalink / raw)
  To: Ferruh Yigit, dev



在 2021/4/27 19:11, Ferruh Yigit 写道:
> On 4/26/2021 2:42 PM, 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>
>> ---
>> v2:
>> * kept original API interface.
>> ---
>>   drivers/net/hns3/hns3_mbx.c | 10 +++++++++-
>>   1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>> index eb202dd..755298f 100644
>> --- a/drivers/net/hns3/hns3_mbx.c
>> +++ b/drivers/net/hns3/hns3_mbx.c
>> @@ -346,12 +346,20 @@ 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)
>> +				struct hns3_mbx_pf_to_vf_cmd *cmd)
>>   {
>>   #define LINK_STATUS_OFFSET     1
>>   #define LINK_FAIL_CODE_OFFSET  2
>>   
>> +	/*
>> +	 * This message is reported by the firmware and is reported in
>> +	 * 'struct hns3_mbx_vf_to_pf_cmd' format. Therefore, we should cast
>> +	 * the cmd to 'struct hns3_mbx_vf_to_pf_cmd' first.
>> +	 */
>> +	struct hns3_mbx_vf_to_pf_cmd *req = (struct hns3_mbx_vf_to_pf_cmd *)cmd;
>> +
> 
> Hi Connor,
> 
> I guess I am missing something obvious, why not get the parameter as 'struct
> hns3_mbx_vf_to_pf_cmd' at first place?
> .
Hi, fixed in v3, thanks.
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-27 12:17   ` [dpdk-dev] [PATCH v3] " Min Hu (Connor)
@ 2021-04-27 12:45     ` Ferruh Yigit
  2021-04-27 13:03       ` Min Hu (Connor)
  0 siblings, 1 reply; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-27 12:45 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 4/27/2021 1:17 PM, 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>
> ---
> v3:
> * get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.
> 
> v2:
> * kept original API interface.
> ---
>  drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
> index ba04ac9..31ab130 100644
> --- a/drivers/net/hns3/hns3_mbx.c
> +++ b/drivers/net/hns3/hns3_mbx.c
> @@ -347,7 +347,7 @@ 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)
> +				struct hns3_mbx_vf_to_pf_cmd *req)
>  {
>  #define LINK_STATUS_OFFSET     1
>  #define LINK_FAIL_CODE_OFFSET  2
> @@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
>  			hns3_handle_asserting_reset(hw, req);
>  			break;
>  		case HNS3_MBX_PUSH_LINK_STATUS:
> -			hns3pf_handle_link_change_event(hw, req);
> +			/*
> +			 * This message is reported by the firmware and is
> +			 * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
> +			 * Therefore, we should cast the req variable to
> +			 * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
> +			 */

I am asking just to double check, the 'msg' type is different of
'hns3_mbx_pf_to_vf_cmd' & 'hns3_mbx_vf_to_pf_cmd', one is 'uint8_t', other is
'uint16_t', and 'msg' is used in the function 'hns3pf_handle_link_change_event()'.
Is the 'msg' usage still correct after this change?

> +			hns3pf_handle_link_change_event(hw,
> +				(struct hns3_mbx_vf_to_pf_cmd *)req);

Will it be more readable if 'desc->data' cast to "struct hns3_mbx_vf_to_pf_cmd
*" (instead of 'req')? Up to you, I can proceed with this one if you prefer.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-27 12:45     ` Ferruh Yigit
@ 2021-04-27 13:03       ` Min Hu (Connor)
  2021-04-27 13:19         ` Ferruh Yigit
  0 siblings, 1 reply; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-27 13:03 UTC (permalink / raw)
  To: Ferruh Yigit, dev



在 2021/4/27 20:45, Ferruh Yigit 写道:
> On 4/27/2021 1:17 PM, 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>
>> ---
>> v3:
>> * get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.
>>
>> v2:
>> * kept original API interface.
>> ---
>>   drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>> index ba04ac9..31ab130 100644
>> --- a/drivers/net/hns3/hns3_mbx.c
>> +++ b/drivers/net/hns3/hns3_mbx.c
>> @@ -347,7 +347,7 @@ 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)
>> +				struct hns3_mbx_vf_to_pf_cmd *req)
>>   {
>>   #define LINK_STATUS_OFFSET     1
>>   #define LINK_FAIL_CODE_OFFSET  2
>> @@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
>>   			hns3_handle_asserting_reset(hw, req);
>>   			break;
>>   		case HNS3_MBX_PUSH_LINK_STATUS:
>> -			hns3pf_handle_link_change_event(hw, req);
>> +			/*
>> +			 * This message is reported by the firmware and is
>> +			 * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
>> +			 * Therefore, we should cast the req variable to
>> +			 * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
>> +			 */
> 
> I am asking just to double check, the 'msg' type is different of
> 'hns3_mbx_pf_to_vf_cmd' & 'hns3_mbx_vf_to_pf_cmd', one is 'uint8_t', other is
> 'uint16_t', and 'msg' is used in the function 'hns3pf_handle_link_change_event()'.
> Is the 'msg' usage still correct after this change?
> 
Hi, it is correct.
Currently, msg from PF or VF are all handled in the same
handler(hns3_dev_handle_mbx_msg), we do different handling
according to different msg.
In futrue, we will separate handler from PF and VF.

>> +			hns3pf_handle_link_change_event(hw,
>> +				(struct hns3_mbx_vf_to_pf_cmd *)req);
> 
> Will it be more readable if 'desc->data' cast to "struct hns3_mbx_vf_to_pf_cmd
> *" (instead of 'req')? Up to you, I can proceed with this one if you prefer.
> .
OK, thanks Ferruh.
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-27 13:03       ` Min Hu (Connor)
@ 2021-04-27 13:19         ` Ferruh Yigit
  2021-04-27 13:43           ` Min Hu (Connor)
  0 siblings, 1 reply; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-27 13:19 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 4/27/2021 2:03 PM, Min Hu (Connor) wrote:
> 
> 
> 在 2021/4/27 20:45, Ferruh Yigit 写道:
>> On 4/27/2021 1:17 PM, 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>
>>> ---
>>> v3:
>>> * get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.
>>>
>>> v2:
>>> * kept original API interface.
>>> ---
>>>   drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
>>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>>> index ba04ac9..31ab130 100644
>>> --- a/drivers/net/hns3/hns3_mbx.c
>>> +++ b/drivers/net/hns3/hns3_mbx.c
>>> @@ -347,7 +347,7 @@ 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)
>>> +                struct hns3_mbx_vf_to_pf_cmd *req)
>>>   {
>>>   #define LINK_STATUS_OFFSET     1
>>>   #define LINK_FAIL_CODE_OFFSET  2
>>> @@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
>>>               hns3_handle_asserting_reset(hw, req);
>>>               break;
>>>           case HNS3_MBX_PUSH_LINK_STATUS:
>>> -            hns3pf_handle_link_change_event(hw, req);
>>> +            /*
>>> +             * This message is reported by the firmware and is
>>> +             * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
>>> +             * Therefore, we should cast the req variable to
>>> +             * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
>>> +             */
>>
>> I am asking just to double check, the 'msg' type is different of
>> 'hns3_mbx_pf_to_vf_cmd' & 'hns3_mbx_vf_to_pf_cmd', one is 'uint8_t', other is
>> 'uint16_t', and 'msg' is used in the function
>> 'hns3pf_handle_link_change_event()'.
>> Is the 'msg' usage still correct after this change?
>>
> Hi, it is correct.
> Currently, msg from PF or VF are all handled in the same
> handler(hns3_dev_handle_mbx_msg), we do different handling
> according to different msg.
> In futrue, we will separate handler from PF and VF.
> 

Let me clarify what I mean, 'msg' is accessed with an index like
"req->msg[LINK_FAIL_CODE_OFFSET]", and the 'req->msg' type is different as you
change the 'req' type. It changes 'uint8_t' -> 'uint16_t', which makes
"req->msg[LINK_FAIL_CODE_OFFSET]" point completely different location, can you
please confirm this is expected/correct?


>>> +            hns3pf_handle_link_change_event(hw,
>>> +                (struct hns3_mbx_vf_to_pf_cmd *)req);
>>
>> Will it be more readable if 'desc->data' cast to "struct hns3_mbx_vf_to_pf_cmd
>> *" (instead of 'req')? Up to you, I can proceed with this one if you prefer.
>> .
> OK, thanks Ferruh.

So do you prefer to continue as it is, or will there be a change?


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-27 13:19         ` Ferruh Yigit
@ 2021-04-27 13:43           ` Min Hu (Connor)
  2021-04-27 15:09             ` Ferruh Yigit
  0 siblings, 1 reply; 19+ messages in thread
From: Min Hu (Connor) @ 2021-04-27 13:43 UTC (permalink / raw)
  To: Ferruh Yigit, dev



在 2021/4/27 21:19, Ferruh Yigit 写道:
> On 4/27/2021 2:03 PM, Min Hu (Connor) wrote:
>>
>>
>> 在 2021/4/27 20:45, Ferruh Yigit 写道:
>>> On 4/27/2021 1:17 PM, 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>
>>>> ---
>>>> v3:
>>>> * get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.
>>>>
>>>> v2:
>>>> * kept original API interface.
>>>> ---
>>>>    drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
>>>>    1 file changed, 9 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>>>> index ba04ac9..31ab130 100644
>>>> --- a/drivers/net/hns3/hns3_mbx.c
>>>> +++ b/drivers/net/hns3/hns3_mbx.c
>>>> @@ -347,7 +347,7 @@ 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)
>>>> +                struct hns3_mbx_vf_to_pf_cmd *req)
>>>>    {
>>>>    #define LINK_STATUS_OFFSET     1
>>>>    #define LINK_FAIL_CODE_OFFSET  2
>>>> @@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
>>>>                hns3_handle_asserting_reset(hw, req);
>>>>                break;
>>>>            case HNS3_MBX_PUSH_LINK_STATUS:
>>>> -            hns3pf_handle_link_change_event(hw, req);
>>>> +            /*
>>>> +             * This message is reported by the firmware and is
>>>> +             * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
>>>> +             * Therefore, we should cast the req variable to
>>>> +             * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
>>>> +             */
>>>
>>> I am asking just to double check, the 'msg' type is different of
>>> 'hns3_mbx_pf_to_vf_cmd' & 'hns3_mbx_vf_to_pf_cmd', one is 'uint8_t', other is
>>> 'uint16_t', and 'msg' is used in the function
>>> 'hns3pf_handle_link_change_event()'.
>>> Is the 'msg' usage still correct after this change?
>>>
>> Hi, it is correct.
>> Currently, msg from PF or VF are all handled in the same
>> handler(hns3_dev_handle_mbx_msg), we do different handling
>> according to different msg.
>> In futrue, we will separate handler from PF and VF.
>>
> 
> Let me clarify what I mean, 'msg' is accessed with an index like
> "req->msg[LINK_FAIL_CODE_OFFSET]", and the 'req->msg' type is different as you
> change the 'req' type. It changes 'uint8_t' -> 'uint16_t', which makes
> "req->msg[LINK_FAIL_CODE_OFFSET]" point completely different location, can you
> please confirm this is expected/correct?
> 
Hi, it is corect, we have tested it.
> 
>>>> +            hns3pf_handle_link_change_event(hw,
>>>> +                (struct hns3_mbx_vf_to_pf_cmd *)req);
>>>
>>> Will it be more readable if 'desc->data' cast to "struct hns3_mbx_vf_to_pf_cmd
>>> *" (instead of 'req')? Up to you, I can proceed with this one if you prefer.
>>> .
>> OK, thanks Ferruh.
> 
> So do you prefer to continue as it is, or will there be a change?
> 
continue as it is, thanks.
> .
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/hns3: fix parse link fails code fail
  2021-04-27 13:43           ` Min Hu (Connor)
@ 2021-04-27 15:09             ` Ferruh Yigit
  0 siblings, 0 replies; 19+ messages in thread
From: Ferruh Yigit @ 2021-04-27 15:09 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 4/27/2021 2:43 PM, Min Hu (Connor) wrote:
> 
> 
> 在 2021/4/27 21:19, Ferruh Yigit 写道:
>> On 4/27/2021 2:03 PM, Min Hu (Connor) wrote:
>>>
>>>
>>> 在 2021/4/27 20:45, Ferruh Yigit 写道:
>>>> On 4/27/2021 1:17 PM, 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>
>>>>> ---
>>>>> v3:
>>>>> * get the parameter as 'struct hns3_mbx_vf_to_pf_cmd' at first place.
>>>>>
>>>>> v2:
>>>>> * kept original API interface.
>>>>> ---
>>>>>    drivers/net/hns3/hns3_mbx.c | 11 +++++++++--
>>>>>    1 file changed, 9 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
>>>>> index ba04ac9..31ab130 100644
>>>>> --- a/drivers/net/hns3/hns3_mbx.c
>>>>> +++ b/drivers/net/hns3/hns3_mbx.c
>>>>> @@ -347,7 +347,7 @@ 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)
>>>>> +                struct hns3_mbx_vf_to_pf_cmd *req)
>>>>>    {
>>>>>    #define LINK_STATUS_OFFSET     1
>>>>>    #define LINK_FAIL_CODE_OFFSET  2
>>>>> @@ -513,7 +513,14 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
>>>>>                hns3_handle_asserting_reset(hw, req);
>>>>>                break;
>>>>>            case HNS3_MBX_PUSH_LINK_STATUS:
>>>>> -            hns3pf_handle_link_change_event(hw, req);
>>>>> +            /*
>>>>> +             * This message is reported by the firmware and is
>>>>> +             * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.
>>>>> +             * Therefore, we should cast the req variable to
>>>>> +             * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.
>>>>> +             */
>>>>
>>>> I am asking just to double check, the 'msg' type is different of
>>>> 'hns3_mbx_pf_to_vf_cmd' & 'hns3_mbx_vf_to_pf_cmd', one is 'uint8_t', other is
>>>> 'uint16_t', and 'msg' is used in the function
>>>> 'hns3pf_handle_link_change_event()'.
>>>> Is the 'msg' usage still correct after this change?
>>>>
>>> Hi, it is correct.
>>> Currently, msg from PF or VF are all handled in the same
>>> handler(hns3_dev_handle_mbx_msg), we do different handling
>>> according to different msg.
>>> In futrue, we will separate handler from PF and VF.
>>>
>>
>> Let me clarify what I mean, 'msg' is accessed with an index like
>> "req->msg[LINK_FAIL_CODE_OFFSET]", and the 'req->msg' type is different as you
>> change the 'req' type. It changes 'uint8_t' -> 'uint16_t', which makes
>> "req->msg[LINK_FAIL_CODE_OFFSET]" point completely different location, can you
>> please confirm this is expected/correct?
>>
> Hi, it is corect, we have tested it.

Applied to dpdk-next-net/main, thanks.


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-04-27 15:09 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-22  1:55 [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Min Hu (Connor)
2021-04-22  1:55 ` [dpdk-dev] [PATCH 1/4] net/hns3: fix error mbx messages prompt errors Min Hu (Connor)
2021-04-22  1:55 ` [dpdk-dev] [PATCH 2/4] net/hns3: fix PF miss link status notify message Min Hu (Connor)
2021-04-22  1:55 ` [dpdk-dev] [PATCH 3/4] net/hns3: fix parse link fails code fail Min Hu (Connor)
2021-04-26 12:26   ` Ferruh Yigit
2021-04-26 12:41     ` fengchengwen
2021-04-26 12:50       ` Ferruh Yigit
2021-04-26 13:20         ` fengchengwen
2021-04-26 13:42   ` [dpdk-dev] [PATCH v2] " Min Hu (Connor)
2021-04-27 11:11     ` Ferruh Yigit
2021-04-27 12:31       ` Min Hu (Connor)
2021-04-27 12:17   ` [dpdk-dev] [PATCH v3] " Min Hu (Connor)
2021-04-27 12:45     ` Ferruh Yigit
2021-04-27 13:03       ` Min Hu (Connor)
2021-04-27 13:19         ` Ferruh Yigit
2021-04-27 13:43           ` Min Hu (Connor)
2021-04-27 15:09             ` Ferruh Yigit
2021-04-22  1:55 ` [dpdk-dev] [PATCH 4/4] net/hns3: delete unused macro and struct of mbx module Min Hu (Connor)
2021-04-26 12:52 ` [dpdk-dev] [PATCH 0/4] bugfix for hns3 PMD Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).