|
@@ -442,7 +442,7 @@ static void ixgbe_set_msglevel(struct net_device *netdev, u32 data)
|
|
|
|
|
|
static int ixgbe_get_regs_len(struct net_device *netdev)
|
|
|
{
|
|
|
-#define IXGBE_REGS_LEN 1129
|
|
|
+#define IXGBE_REGS_LEN 1139
|
|
|
return IXGBE_REGS_LEN * sizeof(u32);
|
|
|
}
|
|
|
|
|
@@ -602,22 +602,53 @@ static void ixgbe_get_regs(struct net_device *netdev,
|
|
|
regs_buff[828] = IXGBE_READ_REG(hw, IXGBE_FHFT(0));
|
|
|
|
|
|
/* DCB */
|
|
|
- regs_buff[829] = IXGBE_READ_REG(hw, IXGBE_RMCS);
|
|
|
- regs_buff[830] = IXGBE_READ_REG(hw, IXGBE_DPMCS);
|
|
|
- regs_buff[831] = IXGBE_READ_REG(hw, IXGBE_PDPMCS);
|
|
|
- regs_buff[832] = IXGBE_READ_REG(hw, IXGBE_RUPPBMR);
|
|
|
- for (i = 0; i < 8; i++)
|
|
|
- regs_buff[833 + i] = IXGBE_READ_REG(hw, IXGBE_RT2CR(i));
|
|
|
- for (i = 0; i < 8; i++)
|
|
|
- regs_buff[841 + i] = IXGBE_READ_REG(hw, IXGBE_RT2SR(i));
|
|
|
- for (i = 0; i < 8; i++)
|
|
|
- regs_buff[849 + i] = IXGBE_READ_REG(hw, IXGBE_TDTQ2TCCR(i));
|
|
|
- for (i = 0; i < 8; i++)
|
|
|
- regs_buff[857 + i] = IXGBE_READ_REG(hw, IXGBE_TDTQ2TCSR(i));
|
|
|
+ regs_buff[829] = IXGBE_READ_REG(hw, IXGBE_RMCS); /* same as FCCFG */
|
|
|
+ regs_buff[831] = IXGBE_READ_REG(hw, IXGBE_PDPMCS); /* same as RTTPCS */
|
|
|
+
|
|
|
+ switch (hw->mac.type) {
|
|
|
+ case ixgbe_mac_82598EB:
|
|
|
+ regs_buff[830] = IXGBE_READ_REG(hw, IXGBE_DPMCS);
|
|
|
+ regs_buff[832] = IXGBE_READ_REG(hw, IXGBE_RUPPBMR);
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[833 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RT2CR(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[841 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RT2SR(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[849 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_TDTQ2TCCR(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[857 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_TDTQ2TCSR(i));
|
|
|
+ break;
|
|
|
+ case ixgbe_mac_82599EB:
|
|
|
+ case ixgbe_mac_X540:
|
|
|
+ regs_buff[830] = IXGBE_READ_REG(hw, IXGBE_RTTDCS);
|
|
|
+ regs_buff[832] = IXGBE_READ_REG(hw, IXGBE_RTRPCS);
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[833 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RTRPT4C(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[841 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RTRPT4S(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[849 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RTTDT2C(i));
|
|
|
+ for (i = 0; i < 8; i++)
|
|
|
+ regs_buff[857 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_RTTDT2S(i));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
for (i = 0; i < 8; i++)
|
|
|
- regs_buff[865 + i] = IXGBE_READ_REG(hw, IXGBE_TDPT2TCCR(i));
|
|
|
+ regs_buff[865 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_TDPT2TCCR(i)); /* same as RTTPT2C */
|
|
|
for (i = 0; i < 8; i++)
|
|
|
- regs_buff[873 + i] = IXGBE_READ_REG(hw, IXGBE_TDPT2TCSR(i));
|
|
|
+ regs_buff[873 + i] =
|
|
|
+ IXGBE_READ_REG(hw, IXGBE_TDPT2TCSR(i)); /* same as RTTPT2S */
|
|
|
|
|
|
/* Statistics */
|
|
|
regs_buff[881] = IXGBE_GET_STAT(adapter, crcerrs);
|
|
@@ -757,6 +788,20 @@ static void ixgbe_get_regs(struct net_device *netdev,
|
|
|
|
|
|
/* 82599 X540 specific registers */
|
|
|
regs_buff[1128] = IXGBE_READ_REG(hw, IXGBE_MFLCN);
|
|
|
+
|
|
|
+ /* 82599 X540 specific DCB registers */
|
|
|
+ regs_buff[1129] = IXGBE_READ_REG(hw, IXGBE_RTRUP2TC);
|
|
|
+ regs_buff[1130] = IXGBE_READ_REG(hw, IXGBE_RTTUP2TC);
|
|
|
+ for (i = 0; i < 4; i++)
|
|
|
+ regs_buff[1131 + i] = IXGBE_READ_REG(hw, IXGBE_TXLLQ(i));
|
|
|
+ regs_buff[1135] = IXGBE_READ_REG(hw, IXGBE_RTTBCNRM);
|
|
|
+ /* same as RTTQCNRM */
|
|
|
+ regs_buff[1136] = IXGBE_READ_REG(hw, IXGBE_RTTBCNRD);
|
|
|
+ /* same as RTTQCNRR */
|
|
|
+
|
|
|
+ /* X540 specific DCB registers */
|
|
|
+ regs_buff[1137] = IXGBE_READ_REG(hw, IXGBE_RTTQCNCR);
|
|
|
+ regs_buff[1138] = IXGBE_READ_REG(hw, IXGBE_RTTQCNTG);
|
|
|
}
|
|
|
|
|
|
static int ixgbe_get_eeprom_len(struct net_device *netdev)
|
|
@@ -1072,7 +1117,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
i += 2;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
data[i+2] = 0;
|
|
@@ -1087,7 +1132,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i+1] = ring->stats.bytes;
|
|
|
} while (u64_stats_fetch_retry_bh(&ring->syncp, start));
|
|
|
i += 2;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
data[i] = ring->stats.yields;
|
|
|
data[i+1] = ring->stats.misses;
|
|
|
data[i+2] = ring->stats.cleaned;
|
|
@@ -1100,7 +1145,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
i += 2;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
data[i+2] = 0;
|
|
@@ -1115,7 +1160,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i+1] = ring->stats.bytes;
|
|
|
} while (u64_stats_fetch_retry_bh(&ring->syncp, start));
|
|
|
i += 2;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
data[i] = ring->stats.yields;
|
|
|
data[i+1] = ring->stats.misses;
|
|
|
data[i+2] = ring->stats.cleaned;
|
|
@@ -1157,28 +1202,28 @@ static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
sprintf(p, "tx_queue_%u_bytes", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
- sprintf(p, "tx_queue_%u_ll_napi_yield", i);
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
+ sprintf(p, "tx_queue_%u_bp_napi_yield", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
- sprintf(p, "tx_queue_%u_ll_misses", i);
|
|
|
+ sprintf(p, "tx_queue_%u_bp_misses", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
- sprintf(p, "tx_queue_%u_ll_cleaned", i);
|
|
|
+ sprintf(p, "tx_queue_%u_bp_cleaned", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
-#endif /* LL_EXTENDED_STATS */
|
|
|
+#endif /* BP_EXTENDED_STATS */
|
|
|
}
|
|
|
for (i = 0; i < IXGBE_NUM_RX_QUEUES; i++) {
|
|
|
sprintf(p, "rx_queue_%u_packets", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
sprintf(p, "rx_queue_%u_bytes", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
-#ifdef LL_EXTENDED_STATS
|
|
|
- sprintf(p, "rx_queue_%u_ll_poll_yield", i);
|
|
|
+#ifdef BP_EXTENDED_STATS
|
|
|
+ sprintf(p, "rx_queue_%u_bp_poll_yield", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
- sprintf(p, "rx_queue_%u_ll_misses", i);
|
|
|
+ sprintf(p, "rx_queue_%u_bp_misses", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
- sprintf(p, "rx_queue_%u_ll_cleaned", i);
|
|
|
+ sprintf(p, "rx_queue_%u_bp_cleaned", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
-#endif /* LL_EXTENDED_STATS */
|
|
|
+#endif /* BP_EXTENDED_STATS */
|
|
|
}
|
|
|
for (i = 0; i < IXGBE_MAX_PACKET_BUFFERS; i++) {
|
|
|
sprintf(p, "tx_pb_%u_pxon", i);
|