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 <fengcheng...@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: sta...@dpdk.org >>> >>> Signed-off-by: Chengwen Feng <fengcheng...@huawei.com> >>> Signed-off-by: Min Hu (Connor) <humi...@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]); >>> >>> >> >> >> . >> >