AW: [RFC] e1000e: Add delays after writing to registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> >
> > Now my question is how big is the induced latency.
> >
> After the wake-up timer is armed, the e1000e driver handles the network link
> configuration after the NIC was reset. When the function
> "e1000e_update_mc_addr_list_generic" is called, the MTA table is rewritten (the
> writing of this table consists of >70 MMIO writes followed by a read).
> 
> We see the hrtimer entry expire at the value 73712084997 near the bottom of the
> trace.
> 
> 73712084997ns - 73712055622ns = 29375ns
> 
> So, we see a ~29us latency, in comparison to a good case where we see about
> 1us.

I have a similar problem, but in my case the hardware latency is the problem.
We are executing DMA transfers over PCIe for fieldbus communication over
Ethernet (PCIe target is own fieldbus FPGA, not the e1000e).
Usually the DMA transfers start with a maximum delay of ~25us. But in case of
link down and up on the e1000e controller the worst case delay is 65us. This
violates our real-time deadlines. DMA transfer is triggered by the hardware and
delay is also measured by the hardware, no software is involved. With the following
patch the problem disappears:

 @@ -376,9 +376,10 @@ void e1000e_update_mc_addr_list_generic(struct e1000_hw *hw,
        }

        /* replace the entire MTA table */
-       for (i = hw->mac.mta_reg_count - 1; i >= 0; i--)
+       for (i = hw->mac.mta_reg_count - 1; i >= 0; i--) {
                E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, hw->mac.mta_shadow[i]);
-       e1e_flush();
+               e1e_flush();
+       }
 }

 /**

What is the state of your patch for the e1000e driver?

regards, gerhard

--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux