On Thu, 2016-07-21 at 13:51 +0300, Sergei Shtylyov wrote: > Hello. > > On 7/21/2016 1:23 AM, Jeff Kirsher wrote: > > > From: Jacob Keller <jacob.e.kel...@intel.com> > > > > Sometimes, a VF driver will lose PCIe address access, such as due > > to > > a PF FLR event. In fm10k_detach_subtask, poll and check whether the > > PCIe register space is active again and restore the device when it > > has. > > > > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> > > Tested-by: Krishneil Singh <krishneil.k.si...@intel.com> > > Signed-off-by: Jeff Kirsher <jeffrey.t.kirs...@intel.com> > > --- > > drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > index 5e40460..d4ccb2a 100644 > > --- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > +++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c > > @@ -123,11 +123,24 @@ static void fm10k_service_timer(unsigned long > > data) > > static void fm10k_detach_subtask(struct fm10k_intfc *interface) > > { > > struct net_device *netdev = interface->netdev; > > + u32 __iomem *hw_addr; > > + u32 value; > > > > /* do nothing if device is still present or hw_addr is set > > */ > > if (netif_device_present(netdev) || interface->hw.hw_addr) > > return; > > > > + /* check the real address space to see if we've recovered > > */ > > + hw_addr = READ_ONCE(interface->uc_addr); > > + value = readl(hw_addr); > > + if ((~value)) { > > Why these double parens? >
You're right it doesn't need them. I think at one point the check was "!(~value)" in some other portion of code, and likely got copied by mistake. Thanks, Jake > [...] > > MBR, Sergei >