Skip to content

Commit

Permalink
qed*: Add link change count value to ethtool statistics display.
Browse files Browse the repository at this point in the history
This patch adds driver changes for capturing the link change count in
ethtool statistics display.

Please consider applying this to "net-next".

Signed-off-by: Sudarsana Reddy Kalluru <[email protected]>
Signed-off-by: Ariel Elior <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Sudarsana Reddy Kalluru authored and davem330 committed May 31, 2018
1 parent 8e8b332 commit 32d26a6
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 2 deletions.
12 changes: 10 additions & 2 deletions drivers/net/ethernet/qlogic/qed/qed_l2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1854,6 +1854,11 @@ static void __qed_get_vport_port_stats(struct qed_hwfn *p_hwfn,
p_ah->tx_1519_to_max_byte_packets =
port_stats.eth.u1.ah1.t1519_to_max;
}

p_common->link_change_count = qed_rd(p_hwfn, p_ptt,
p_hwfn->mcp_info->port_addr +
offsetof(struct public_port,
link_change_count));
}

static void __qed_get_vport_stats(struct qed_hwfn *p_hwfn,
Expand Down Expand Up @@ -1961,11 +1966,14 @@ void qed_reset_vport_stats(struct qed_dev *cdev)

/* PORT statistics are not necessarily reset, so we need to
* read and create a baseline for future statistics.
* Link change stat is maintained by MFW, return its value as is.
*/
if (!cdev->reset_stats)
if (!cdev->reset_stats) {
DP_INFO(cdev, "Reset stats not allocated\n");
else
} else {
_qed_get_vport_stats(cdev, cdev->reset_stats);
cdev->reset_stats->common.link_change_count = 0;
}
}

static enum gft_profile_type
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/qlogic/qede/qede.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ struct qede_stats_common {
u64 coalesced_aborts_num;
u64 non_coalesced_pkts;
u64 coalesced_bytes;
u64 link_change_count;

/* port */
u64 rx_64_byte_packets;
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/qlogic/qede/qede_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ static const struct {
QEDE_STAT(coalesced_aborts_num),
QEDE_STAT(non_coalesced_pkts),
QEDE_STAT(coalesced_bytes),

QEDE_STAT(link_change_count),
};

#define QEDE_NUM_STATS ARRAY_SIZE(qede_stats_arr)
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/qlogic/qede/qede_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,7 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)
p_common->brb_truncates = stats.common.brb_truncates;
p_common->brb_discards = stats.common.brb_discards;
p_common->tx_mac_ctrl_frames = stats.common.tx_mac_ctrl_frames;
p_common->link_change_count = stats.common.link_change_count;

if (QEDE_IS_BB(edev)) {
struct qede_stats_bb *p_bb = &edev->stats.bb;
Expand Down
1 change: 1 addition & 0 deletions include/linux/qed/qed_if.h
Original file line number Diff line number Diff line change
Expand Up @@ -1180,6 +1180,7 @@ struct qed_eth_stats_common {
u64 tx_mac_mc_packets;
u64 tx_mac_bc_packets;
u64 tx_mac_ctrl_frames;
u64 link_change_count;
};

struct qed_eth_stats_bb {
Expand Down

0 comments on commit 32d26a6

Please sign in to comment.