igb: output register's information related to RX/TX queue[4-15]
Subsystems (3)
PATCH 1/1 igb: output register's information related to RX/TX queue[4-15]
Current igb outputs registers related to TX/RX queues(ex. RDT, RDH, TDT, TDH). But it thinks the number of RX/TX queues is 4. But 82576 has 16 RX/TX queues. This patch modifies igb to output the rest of the registers if the device is 82576.
Signed-off-by Koki Sanagi <[email protected]>
--- drivers/net/ethernet/intel/igb/igb_ethtool.c | 38 +++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-)
drivers/net/ethernet/intel/igb/igb_ethtool.c +37 -1
@@ -335,7 +335,7 @@ static void igb_set_msglevel(struct net_device *netdev, u32 data)static int igb_get_regs_len (struct net_device *netdev) { -#define IGB_REGS_LEN 551 +#define IGB_REGS_LEN 739return IGB_REGS_LEN *sizeof (u32); }
@@ -556,6 +556,42 @@ static void igb_get_regs(struct net_device *netdev, regs_buff[552 ] = adapter->stats.b2ospc; regs_buff[553 ] = adapter->stats.o2bspc; regs_buff[554 ] = adapter->stats.b2ogprc; + +if (hw->mac.type != e1000_82576) +return ; +for (i =0 ; i <12 ; i++) + regs_buff[555 + i] =rd32 (E1000_SRRCTL (i +4 )); +for (i =0 ; i <4 ; i++) + regs_buff[567 + i] =rd32 (E1000_PSRTYPE (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[571 + i] =rd32 (E1000_RDBAL (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[583 + i] =rd32 (E1000_RDBAH (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[595 + i] =rd32 (E1000_RDLEN (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[607 + i] =rd32 (E1000_RDH (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[619 + i] =rd32 (E1000_RDT (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[631 + i] =rd32 (E1000_RXDCTL (i +4 )); + +for (i =0 ; i <12 ; i++) + regs_buff[643 + i] =rd32 (E1000_TDBAL (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[655 + i] =rd32 (E1000_TDBAH (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[667 + i] =rd32 (E1000_TDLEN (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[679 + i] =rd32 (E1000_TDH (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[691 + i] =rd32 (E1000_TDT (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[703 + i] =rd32 (E1000_TXDCTL (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[715 + i] =rd32 (E1000_TDWBAL (i +4 )); +for (i =0 ; i <12 ; i++) + regs_buff[727 + i] =rd32 (E1000_TDWBAH (i +4 )); }static int igb_get_eeprom_len (struct net_device *netdev)
Quoted 8 lines · Koki Sanagi
Current igb outputs registers related to TX/RX queues(ex. RDT, RDH, TDT, TDH).
But it thinks the number of RX/TX queues is 4. But 82576 has 16 RX/TX queues.
This patch modifies igb to output the rest of the registers if the device is
82576.
Quoted 5 lines
Signed-off-by Koki Sanagi <[email protected]>--- drivers/net/ethernet/intel/igb/igb_ethtool.c | 38 +++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-)
Thanks Koki, I have added the patch to my queue.