From: Jon M. <jon...@er...> - 2019-08-08 14:50:12
|
You should rather set this one unconditionally in tipc_set_node_addr(). The problems is not about the state machine, but that jiffies is close to the wrap-around time, so that it is perceived as being before the time "0". BR ///jon > -----Original Message----- > From: net...@vg... <net...@vg...> On > Behalf Of Chris Packham > Sent: 7-Aug-19 00:56 > To: Jon Maloy <jon...@er...>; yin...@wi...; > da...@da... > Cc: ne...@vg...; tip...@li...; linux- > ke...@vg...; Chris Packham <chr...@al...> > Subject: [PATCH] tipc: set addr_trail_end when using explicit node addresses > > When tipc uses auto-generated node addresses it goes through a duplicate > address detection phase to ensure the address is unique. > > When using explicitly configured node names the DAD phase is skipped. > However addr_trail_end was being left set to 0 which causes parts of the tipc > state machine to assume that the address is not yet valid and unnecessarily > delays the discovery phase. By setting addr_trail_end to jiffies when using > explicit addresses we ensure that we move straight to discovery. > > Signed-off-by: Chris Packham <chr...@al...> > --- > net/tipc/discover.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/tipc/discover.c b/net/tipc/discover.c index > c138d68e8a69..f83bfe8c9443 100644 > --- a/net/tipc/discover.c > +++ b/net/tipc/discover.c > @@ -361,6 +361,8 @@ int tipc_disc_create(struct net *net, struct > tipc_bearer *b, > if (!tipc_own_addr(net)) { > tn->addr_trial_end = jiffies + msecs_to_jiffies(1000); > msg_set_type(buf_msg(d->skb), DSC_TRIAL_MSG); > + } else { > + tn->addr_trial_end = jiffies; > } > memcpy(&d->dest, dest, sizeof(*dest)); > d->net = net; > -- > 2.22.0 |