On Tue, May 2, 2023 at 9:11?PM Alvaro Karsz <alvaro.karsz at
solid-run.com> wrote:>
> The callback sends a resume command to the DPU through
> the control mechanism.
>
> Signed-off-by: Alvaro Karsz <alvaro.karsz at solid-run.com>
Acked-by: Jason Wang <jasowang at redhat.com>
Thanks
> ---
> drivers/vdpa/solidrun/snet_ctrl.c | 6 ++++++
> drivers/vdpa/solidrun/snet_main.c | 15 +++++++++++++++
> drivers/vdpa/solidrun/snet_vdpa.h | 1 +
> 3 files changed, 22 insertions(+)
>
> diff --git a/drivers/vdpa/solidrun/snet_ctrl.c
b/drivers/vdpa/solidrun/snet_ctrl.c
> index 3858738643b..3cef2571d15 100644
> --- a/drivers/vdpa/solidrun/snet_ctrl.c
> +++ b/drivers/vdpa/solidrun/snet_ctrl.c
> @@ -16,6 +16,7 @@ enum snet_ctrl_opcodes {
> SNET_CTRL_OP_DESTROY = 1,
> SNET_CTRL_OP_READ_VQ_STATE,
> SNET_CTRL_OP_SUSPEND,
> + SNET_CTRL_OP_RESUME,
> };
>
> #define SNET_CTRL_TIMEOUT 2000000
> @@ -328,3 +329,8 @@ int snet_suspend_dev(struct snet *snet)
> {
> return snet_send_ctrl_msg(snet, SNET_CTRL_OP_SUSPEND, 0);
> }
> +
> +int snet_resume_dev(struct snet *snet)
> +{
> + return snet_send_ctrl_msg(snet, SNET_CTRL_OP_RESUME, 0);
> +}
> diff --git a/drivers/vdpa/solidrun/snet_main.c
b/drivers/vdpa/solidrun/snet_main.c
> index cdcd84ce4f5..99428a04068 100644
> --- a/drivers/vdpa/solidrun/snet_main.c
> +++ b/drivers/vdpa/solidrun/snet_main.c
> @@ -509,6 +509,20 @@ static int snet_suspend(struct vdpa_device *vdev)
> return ret;
> }
>
> +static int snet_resume(struct vdpa_device *vdev)
> +{
> + struct snet *snet = vdpa_to_snet(vdev);
> + int ret;
> +
> + ret = snet_resume_dev(snet);
> + if (ret)
> + SNET_ERR(snet->pdev, "SNET[%u] resume failed, err:
%d\n", snet->sid, ret);
> + else
> + SNET_DBG(snet->pdev, "Resume SNET[%u]
device\n", snet->sid);
> +
> + return ret;
> +}
> +
> static const struct vdpa_config_ops snet_config_ops = {
> .set_vq_address = snet_set_vq_address,
> .set_vq_num = snet_set_vq_num,
> @@ -536,6 +550,7 @@ static const struct vdpa_config_ops snet_config_ops = {
> .get_config = snet_get_config,
> .set_config = snet_set_config,
> .suspend = snet_suspend,
> + .resume = snet_resume,
> };
>
> static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
> diff --git a/drivers/vdpa/solidrun/snet_vdpa.h
b/drivers/vdpa/solidrun/snet_vdpa.h
> index 3c78d4e7d48..36ac285835e 100644
> --- a/drivers/vdpa/solidrun/snet_vdpa.h
> +++ b/drivers/vdpa/solidrun/snet_vdpa.h
> @@ -204,5 +204,6 @@ void snet_ctrl_clear(struct snet *snet);
> int snet_destroy_dev(struct snet *snet);
> int snet_read_vq_state(struct snet *snet, u16 idx, struct vdpa_vq_state
*state);
> int snet_suspend_dev(struct snet *snet);
> +int snet_resume_dev(struct snet *snet);
>
> #endif //_SNET_VDPA_H_
> --
> 2.34.1
>