Re: [PATCH] HV: properly delay KVP packets when negotiation is in progress

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This should be submitted to stable, we're seeing KVP fail to start in
some tests of 4.10.

On Thu, Mar 16, 2017 at 12:51 PM, Long Li <longli@xxxxxxxxxxxxx> wrote:
> The host may send multiple KVP packets before the negotiation with daemon
> is finished. We need to keep those packets in ring buffer until the daemon
> is negotiated and connected.
>
> This patch is based on the work of Nick Meier <Nick.Meier@xxxxxxxxxxxxx>
>
> Signed-off-by: Long Li <longli@xxxxxxxxxxxxx>
> ---
>  drivers/hv/hv_kvp.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c
> index de26371..b9f928d 100644
> --- a/drivers/hv/hv_kvp.c
> +++ b/drivers/hv/hv_kvp.c
> @@ -628,16 +628,17 @@ void hv_kvp_onchannelcallback(void *context)
>                      NEGO_IN_PROGRESS,
>                      NEGO_FINISHED} host_negotiatied = NEGO_NOT_STARTED;
>
> -       if (host_negotiatied == NEGO_NOT_STARTED &&
> -           kvp_transaction.state < HVUTIL_READY) {
> +       if (kvp_transaction.state < HVUTIL_READY) {
>                 /*
>                  * If userspace daemon is not connected and host is asking
>                  * us to negotiate we need to delay to not lose messages.
>                  * This is important for Failover IP setting.
>                  */
> -               host_negotiatied = NEGO_IN_PROGRESS;
> -               schedule_delayed_work(&kvp_host_handshake_work,
> +               if (host_negotiatied == NEGO_NOT_STARTED) {
> +                       host_negotiatied = NEGO_IN_PROGRESS;
> +                       schedule_delayed_work(&kvp_host_handshake_work,
>                                       HV_UTIL_NEGO_TIMEOUT * HZ);
> +               }
>                 return;
>         }
>         if (kvp_transaction.state > HVUTIL_READY)
> --
> 2.7.4
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux