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