Eugene,

I can reproduce the issue now. And root cause as below:

#1. Set policy to DHCP.  
#2. If DHCP process is not complete yet, then run one App to invoke the UDP4 
Configure with "UseDefaultAddress = TRUE" (loop to keep calling Udp4->Configure 
until Ip4Mode.IsConfigured changes to TRUE)
#3. Even DHCP succeed but Ip4Mode.IsConfigured flag never set to TRUE     ---- 
failure here!!!

In step1, the policy will be set to DHCP, and then Ip4Config2OnPolicyChanged() 
will be called. In this function, "IpSb->Reconfig" flag will be set to TRUE 
before Ip4StartAutoConfig() called. That means the original 
"IpSb->DefaultInterface" will be abandoned/freed once this DHCP process 
finished. Detailed see Ip4Config2SetDefaultAddr() function. 

In step2, UDP4 Configure with "UseDefaultAddress = TRUE" is called, that means 
the default interface (IpSb->DefaultInterface) will be selected as current 
instance's interface. Detailed see Ip4ConfigProtocol() function.

In step3, When DHCP process finished, as I said in step1, the original 
"IpSb->DefaultInterface" will be abandoned/freed because "IpSb->Reconfig" flag 
is true. Meanwhile, one new interface is assigned to "IpSb->DefaultInterface". 
This "IpSb->DefaultInterface" is different to the original one assigned to the 
UDP4 Configured instance. So, even DHCP process succeed, the up caller will 
never have the chance to get it's truly status. 

I will send one patch to fix this issue later.

Thanks your reporting.

Best Regards!
Jiaxin 


> -----Original Message-----
> From: Wu, Jiaxin
> Sent: Friday, August 12, 2016 8:20 AM
> To: Cohen, Eugene <[email protected]>; [email protected]
> Subject: RE: IP4 Config Troubles with DHCP
> 
> Thanks Eugene, I will try to reproduce the issue and dig it out. Any process 
> will
> inform you.
> 
> Best Regards!
> Jiaxin
> 
> > -----Original Message-----
> > From: Cohen, Eugene [mailto:[email protected]]
> > Sent: Thursday, August 11, 2016 10:31 PM
> > To: Wu, Jiaxin <[email protected]>; [email protected]
> > Subject: RE: IP4 Config Troubles with DHCP
> >
> > Jianxin,
> >
> > > I want to confirm with you the steps to reproduce the issue:
> > >
> > > 1. Set policy to DHCP.
> > > 2. If DHCP process is not complete yet, then run one App to invoke
> > > the
> > > UDP4 Configure with "UseDefaultAddress = TRUE" (loop to keep calling
> > > Udp4->Configure until Ip4Mode.IsConfigured changes to TRUE)
> > > 3. Even DHCP succeed but Ip4Mode.IsConfigured flag never set to
> > > TRUE     ---- failure here!!!
> > >
> > > Above steps right?
> >
> > Yes, that summarizes it well.
> >
> > > Actually, you don't need to retry the UDP configuration loop
> > > according the Ip4Mode.IsConfigured flag. You are only recommended to
> > > set a timer to check the mapping status after the configuration:
> >
> > This is exactly what we used to do.  Recently it stopped working which
> > is why we now have to re-do service binding creation and configuration.
> >
> > > If DHCP process succeed, Ip4Mode.IsConfigured should be updated. If
> > > not, any bug may be existed.
> >
> > From the traces I've looked at I can clearly see that the DHCP process
> > as finished (lease acquired) and that Ip4Mode.IsConfigured is still
> > FALSE.  I'll send you a detailed trace of this separately.
> >
> > So yes, I think there is a bug that crept in.
> >
> > Eugene
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to