[Intel-wired-lan] [PATCH v1 2/2] e1000e: Fixing packet loss issues on new platforms

Paul Menzel pmenzel at molgen.mpg.de
Wed Sep 22 11:01:33 UTC 2021


Dear Sasha,


Am 22.09.21 um 09:30 schrieb Sasha Neftin:
> On 9/22/2021 10:09, Paul Menzel wrote:

>> Am 22.09.21 um 08:55 schrieb Sasha Neftin:
>>
>> Please use imperative mood in the commit message summary: Fix …. Maybe:
>>
>> e1000e: Fix packet loss on Tiger Lake and later
>>
>>> Update the HW MAC initialization flow. Do not gate DMA clock from
>>> the modPHY block. Keeping this clock will prevent drop packets sent
>>
>> dropped
>>
>>> in burst mode on the Kumeran interface.
>>
>> What is Kumeran?
> interface to external Gigabit Ethernet PHY

Thank you. For somebody not having all names memorized, this would be 
good to know in my opinion.

>> Where is the new HW MAC initialization flow documented? The spec or 
>> some errata?
>>
>> How can the bug be reproduced?
> Described in bugzilla - please, make sure the burst traffic:
> run commands:
> tc qdisc add dev eno1 (lan device name) root netem delay 5 ms on client side
> iperf -s on server side
> iperf -c server_IP -R on client side

Thank you. In my opinion, reviewers should have this in the commit 
message, instead of reading through several comments in the Linux 
Bugzilla. Also, at least in #213651 the title and first comment talks 
about Intel ME (Management Engine).

>>> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213651
>>> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213377
>>> Fixes: bc7f75fa9788 ("New pci-express e1000 driver");
>>> Signed-off-by: Sasha Neftin <sasha.neftin at intel.com>
>>> ---
>>>   drivers/net/ethernet/intel/e1000e/ich8lan.c | 11 ++++++++++-
>>>   drivers/net/ethernet/intel/e1000e/ich8lan.h |  3 +++
>>>   2 files changed, 13 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c 
>>> b/drivers/net/ethernet/intel/e1000e/ich8lan.c
>>> index 66d7196310e2..5e4fc9b4e2ad 100644
>>> --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
>>> +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
>>> @@ -4813,7 +4813,7 @@ static s32 e1000_reset_hw_ich8lan(struct 
>>> e1000_hw *hw)
>>>   static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
>>>   {
>>>       struct e1000_mac_info *mac = &hw->mac;
>>> -    u32 ctrl_ext, txdctl, snoop;
>>> +    u32 ctrl_ext, txdctl, snoop, fflt_dbg;
>>>       s32 ret_val;
>>>       u16 i;
>>> @@ -4872,6 +4872,15 @@ static s32 e1000_init_hw_ich8lan(struct 
>>> e1000_hw *hw)
>>>           snoop = (u32)~(PCIE_NO_SNOOP_ALL);
>>>       e1000e_set_pcie_no_snoop(hw, snoop);
>>> +    /* Enable workaround for packet loss issue on TGP PCH
>>
>> Maybe:
>>
>>> Work around packet loss issue on TGP PCH and later
>>
>>> +     * Do not gate DMA clock from the modPHY block
>>> +     */
>>> +    if (mac->type >= e1000_pch_tgp) {
>>> +        fflt_dbg = er32(FFLT_DBG);
>>
>> Maybe the variable `ctrl_ext` could be renamed to `tmp` or `tmp32`, 
>> and reused.
> I prefer to stay with a meaningful name

Understood. I know it’s personal preference.

>>> +        fflt_dbg |= E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK;
>>> +        ew32(FFLT_DBG, fflt_dbg);
>>> +    }
>>> +
>>>       ctrl_ext = er32(CTRL_EXT);
>>>       ctrl_ext |= E1000_CTRL_EXT_RO_DIS;
>>>       ew32(CTRL_EXT, ctrl_ext);
>>> diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.h 
>>> b/drivers/net/ethernet/intel/e1000e/ich8lan.h
>>> index d6a092e5ee74..2504b11c3169 100644
>>> --- a/drivers/net/ethernet/intel/e1000e/ich8lan.h
>>> +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.h
>>> @@ -289,6 +289,9 @@
>>>   /* Proprietary Latency Tolerance Reporting PCI Capability */
>>>   #define E1000_PCI_LTR_CAP_LPT        0xA8
>>> +/* Don't gate wake DMA clock */
>>> +#define E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK    0x1000
>>> +
>>>   void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw);
>>>   void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw,
>>>                             bool state);
>>>


Kind regards,

Paul


More information about the Intel-wired-lan mailing list