be2net: add code to display temperature of ASIC
Subsystems (2)
PATCH 5/6 be2net: add code to display temperature of ASIC
Add support to display temperature of ASIC via ethtool -S
From: Somnath K <[email protected]>
Signed-off-by Ajit Khaparde <[email protected]>
--- drivers/net/benet/be.h | 7 ++++++ drivers/net/benet/be_cmds.c | 44 ++++++++++++++++++++++++++++++++++++++++ drivers/net/benet/be_cmds.h | 16 ++++++++++++++ drivers/net/benet/be_ethtool.c | 11 ++++++++- 4 files changed, 76 insertions(+), 2 deletions(-)
drivers/net/benet/be.h +7 -0
@@ -225,6 +225,10 @@ struct be_rx_obj {u32 cache_line_barrier[15 ]; }; +struct be_drv_stats { +u8 be_on_die_temperature; +}; +struct be_vf_cfg {unsigned char vf_mac_addr[ETH_ALEN ];u32 vf_if_handle;
@@ -234,6 +238,7 @@ struct be_vf_cfg { };#define BE_INVALID_PMAC_ID 0xffffffff +struct be_adapter {struct pci_dev *pdev;struct net_device *netdev;
@@ -269,6 +274,7 @@ struct be_adapter {u32 big_page_size;/* Compounded page size shared by rx wrbs */ u8 msix_vec_next_idx; +struct be_drv_stats drv_stats;struct vlan_group *vlan_grp;u16 vlans_added;
@@ -281,6 +287,7 @@ struct be_adapter {struct be_dma_mem stats_cmd;/* Work queue used to perform periodic tasks like getting statistics */ struct delayed_work work; +u16 work_counter;/* Ethtool knobs and info */ bool rx_csum;/* BE card must perform rx-checksumming */
drivers/net/benet/be_cmds.c +44 -0
62 lines not on this page · raw message
drivers/net/benet/be_cmds.h +16 -0
@@ -189,6 +189,7 @@ struct be_mcc_mailbox {#define OPCODE_COMMON_GET_BEACON_STATE 70#define OPCODE_COMMON_READ_TRANSRECV_DATA 73#define OPCODE_COMMON_GET_PHY_DETAILS 102 +#define OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES 121#define OPCODE_ETH_RSS_CONFIG 1#define OPCODE_ETH_ACPI_CONFIG 2
@@ -668,6 +669,20 @@ struct be_cmd_resp_get_stats {struct be_hw_stats hw_stats; }; +struct be_cmd_req_get_cntl_addnl_attribs { +struct be_cmd_req_hdr hdr; +u8 rsvd[8 ]; +}; + +struct be_cmd_resp_get_cntl_addnl_attribs { +struct be_cmd_resp_hdr hdr; +u16 ipl_file_number; +u8 ipl_file_version; +u8 rsvd0; +u8 on_die_temperature;/* in degrees centigrade*/ +u8 rsvd1[3 ]; +}; +struct be_cmd_req_vlan_config {struct be_cmd_req_hdr hdr;u8 interface_id;
@@ -1099,4 +1114,5 @@ extern int be_cmd_get_phy_info(struct be_adapter *adapter, struct be_dma_mem *cmd);extern int be_cmd_set_qos (struct be_adapter *adapter,u32 bps,u32 domain);extern void be_detect_dump_ue (struct be_adapter *adapter); +extern int be_cmd_get_die_temperature (struct be_adapter *adapter);
drivers/net/benet/be_ethtool.c +9 -2
@@ -27,7 +27,7 @@ struct be_ethtool_stat { };enum {NETSTAT ,PORTSTAT ,MISCSTAT ,DRVSTAT_TX ,DRVSTAT_RX ,ERXSTAT , -PMEMSTAT }; +PMEMSTAT ,DRVSTAT };#define FIELDINFO (_struct, field) FIELD_SIZEOF(_struct, field), \ offsetof(_struct, field)#define NETSTAT_INFO (field) #field, NETSTAT,\
@@ -46,6 +46,9 @@ enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT, FIELDINFO(struct be_erx_stats, field)#define PMEMSTAT_INFO (field) #field, PMEMSTAT,\ FIELDINFO(struct be_pmem_stats, field) +#define DRVSTAT_INFO (field) #field, DRVSTAT,\ + FIELDINFO(struct be_drv_stats, \ + field)static const struct be_ethtool_stat et_stats[] = { {NETSTAT_INFO (rx_packets)},
@@ -105,7 +108,8 @@ static const struct be_ethtool_stat et_stats[] = { {MISCSTAT_INFO(rx_drops_mtu)}, {MISCSTAT_INFO(port0_jabber_events)}, {MISCSTAT_INFO(port1_jabber_events)}, - {PMEMSTAT_INFO(eth_red_drops)} + {PMEMSTAT_INFO(eth_red_drops)}, + {DRVSTAT_INFO(be_on_die_temperature)} }; #define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats)
@@ -285,6 +289,9 @@ be_get_ethtool_stats(struct net_device *netdev,case PMEMSTAT : p = &hw_stats->pmem;break ; +case DRVSTAT : + p = &adapter->drv_stats; +break ; } p = (u8 *)p + et_stats[i].offset;
Signature · 1 line
1.7.1