Thread (5 messages) 5 messages, 3 authors, 2020-01-04

Re: [dpdk-dev] [PATCH v3] net/iavf: fix virtual channel return value error

From: Ye Xiaolong <hidden>
Date: 2020-01-04 10:26:34

On 12/24, Zhang, Qi Z wrote:
quoted
-----Original Message-----
From: Cao, Yahui <redacted>
Sent: Tuesday, December 24, 2019 12:13 PM
To: Wu, Jingjing <redacted>; Lu, Wenzhuo
[off-list ref]
Cc: dev@dpdk.org; stable@dpdk.org; Zhang, Qi Z <redacted>; Cao,
Yahui [off-list ref]; Ye, Xiaolong [off-list ref]; Su,
Simei [off-list ref]
Subject: [PATCH v3] net/iavf: fix virtual channel return value error

In iavf_handle_virtchnl_msg(), it is not appropriate for _clear_cmd() to be used
as a notification to forground thread. So introduce
_notify_cmd() to fix this error. In addition, since _notify_cmd() contains
rte_wmb(), rte_compiler_barrier() is not necessary.

Sending msg from VF to PF is mainly by calling iavf_execute_vf_cmd(), the
whole virtchnl msg process is like,

iavf_execute_vf_cmd() will call iavf_aq_send_msg_to_pf() to send msg and
then polling the cmd done flag as "if (vf->pend_cmd ==
VIRTCHNL_OP_UNKNOWN)"

When reply msg is returned by pf, iavf_handle_virtchnl_msg() in isr will read
msg return value by "vf->cmd_retval = msg_ret" and immediately set the cmd
done flag by calling _clear_cmd() to notify the iavf_execute_vf_cmd().

iavf_execute_vf_cmd() find the cmd done flag is set and then check whether
command return value vf->cmd_retval is success or not.

However _clear_cmd() also resets the vf->cmd_retval to success, overwriting
the actual return value which is used for diagnosis.
So iavf_execute_vf_cmd() will always find vf->cmd_retval is success and then
return success.

Fixes: 22b123a36d07 ("net/avf: initialize PMD")
Cc: stable@dpdk.org

Signed-off-by: Yahui Cao <redacted>
Acked-by: Qi Zhang <redacted>
Acked-by: Xiaolong Ye <redacted>

Applied to dpdk-next-net-intel, Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help