> > +
> > +                           /* Update the heartbeat timer immediately. */
> > +                           if (!mod_timer(&trans->hb_timer,
> > +                                       sctp_transport_timeout(trans)))
> > +                                   sctp_transport_hold(trans);
> 
> This is causes a rather inconsistent behavior in that it doesn't
> account of the amount of time left on the hb timer.  Thus it doesn't
> always do what commit log implies.  If the remaining time is shorter
> then the new timeout value, it will take longer till the next HB
> the application expects.

Being able to stop heartbeats being sent by repeatedly configuring
the interval is certainly not a good idea!

> If the application has very strict timing requirement on the HBs, it
> should trigger the HB manually.
> 
> We could rework the code to allow the combination of
> SPP_HB_DEMAND | SPP_HB_ENABLE to work as follows:
>   1) update the timer to the new value
>   2) Send an immediate HB
>      a) Update the hb timeout.
> 
> 2a should probably be done regardless since it can cause 2 HB to be
> outstanding at the same time.

Sending a heartbeat 'on demand' might be problematic if one
has also just been sent (from the timer).

I'd have thought that you wouldn't want to send a heartbeat while
still expecting a response from the previous one (this might require
splitting the time interval in two).

        David



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to