Re: [Intel-wired-lan] [PATCH] igb: drop field "tail" of struct igb_ring

From: Cao jin
Date: Tue Nov 08 2016 - 01:05:37 EST




On 11/08/2016 12:12 PM, Alexander Duyck wrote:


On Monday, November 7, 2016, Cao jin <caoj.fnst@xxxxxxxxxxxxxx
<mailto:caoj.fnst@xxxxxxxxxxxxxx>> wrote:




We removed head because it isn't really accessed very often, it is only
really used for when the ring is configured. Tail is accessed every
time we add a descriptor to a ring. The pointer chasing from ring to
netdev to adapter to hw is expensive. That is one of the rasons why
we cache the pointer to the tail register.

I see. I can submit the patch as you suggested.


Signed-off-by: Cao jin <caoj.fnst@xxxxxxxxxxxxxx>
---
drivers/net/ethernet/intel/igb/igb.h | 1 -
drivers/net/ethernet/intel/igb/igb_main.c | 16
+++++++++-------


hw->hw_addr could be alterred to NULL(in igb_rd32), this is why
writel oops the kernel, you give a fine solution.

But from the oops message, we can find, register reading returns all
F's, I also have a question want to consult: when igb device is
reset, would reading register(no matter config space or non-PCIe
configuration registers) during reset returns all F's? (I guess this
is the core of my issue)


An all F's value means the read failed. The device is likely off of the
bus and the hw_addr may not have been repopulated after the reset.

You might want to check the mailing list as I thought someone had
submitted a patch recently for one of the drivers to repopulate hw_addr
after a reset.


I guess you are saying this one:
http://patchwork.ozlabs.org/patch/689592/

Seems they have a similar issue with me.


--
Yours Sincerely,

Cao jin