File tree Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Original file line number Diff line number Diff line change @@ -1833,17 +1833,21 @@ void rpl_upward_dio_timer(rpl_instance_t *instance, uint16_t ticks)
1833
1833
if (rpl_dodag_am_leaf (dodag ) && !instance -> poison_count ) {
1834
1834
return ;
1835
1835
}
1836
- // We dont have any valid address in interface
1837
- if (ns_list_count (& instance -> dao_targets ) == 0 ) {
1838
- return ;
1839
- }
1840
- /* Address registrations for parent ongoing*/
1841
- if (rpl_policy_parent_confirmation_requested () && instance -> pending_neighbour_confirmation ) {
1842
- return ;
1843
- }
1844
- /* If we are waiting for DAO or DAO registration is needed we dont send periodic DIOs */
1845
- if (instance -> dao_in_transit || instance -> delay_dao_timer > 0 ) {
1846
- return ;
1836
+ /* Delay sending first DIO if we are still potentially gathering info */
1837
+ /* Important to always send DIOs if we ever have sent any, so we can indicate problems to others */
1838
+ if (!instance -> last_advertised_dodag_version && rpl_policy_parent_confirmation_requested ()) {
1839
+ // We dont have any valid address in interface
1840
+ if (ns_list_count (& instance -> dao_targets ) == 0 ) {
1841
+ return ;
1842
+ }
1843
+ /* Address registrations for parent ongoing*/
1844
+ if (instance -> pending_neighbour_confirmation ) {
1845
+ return ;
1846
+ }
1847
+ /* If we are waiting for DAO or DAO registration is needed we dont send periodic DIOs */
1848
+ if (instance -> dao_in_transit || instance -> delay_dao_timer > 0 ) {
1849
+ return ;
1850
+ }
1847
1851
}
1848
1852
if (trickle_timer (& instance -> dio_timer , & dodag -> dio_timer_params , ticks )) {
1849
1853
instance -> dio_not_consistent = false;
You can’t perform that action at this time.
0 commit comments