diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2012-12-21 19:40:32 -0800 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-01-30 10:48:48 +1100 |
commit | f246fe2a56b3286d0675aba5ebc79ec3b98117f6 (patch) | |
tree | 87651ed3f79d359f93e074cb0a6473bb34f120a9 /drivers/scsi/bnx2fc/bnx2fc.h | |
parent | e7f4fed5fa96d3da12c3e1c8ed9f536235eec3b5 (diff) | |
download | talos-obmc-linux-f246fe2a56b3286d0675aba5ebc79ec3b98117f6.tar.gz talos-obmc-linux-f246fe2a56b3286d0675aba5ebc79ec3b98117f6.zip |
[SCSI] bnx2fc: Tx/Rx byte counts reset to 0 when exceeding 32 bit values
Since the FW counters are 32-bit, accumulate the stats in the driver.
[jejb: fix checkpatch warning]
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc.h')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc.h b/drivers/scsi/bnx2fc/bnx2fc.h index 6c9e71792674..3971d7eb774a 100644 --- a/drivers/scsi/bnx2fc/bnx2fc.h +++ b/drivers/scsi/bnx2fc/bnx2fc.h @@ -156,6 +156,18 @@ #define BNX2FC_RELOGIN_WAIT_TIME 200 #define BNX2FC_RELOGIN_WAIT_CNT 10 +#define BNX2FC_STATS(hba, stat, cnt) \ + do { \ + u32 val; \ + \ + val = fw_stats->stat.cnt; \ + if (hba->prev_stats.stat.cnt <= val) \ + val -= hba->prev_stats.stat.cnt; \ + else \ + val += (0xfffffff - hba->prev_stats.stat.cnt); \ + hba->bfw_stats.cnt += val; \ + } while (0) + /* bnx2fc driver uses only one instance of fcoe_percpu_s */ extern struct fcoe_percpu_s bnx2fc_global; @@ -167,6 +179,14 @@ struct bnx2fc_percpu_s { spinlock_t fp_work_lock; }; +struct bnx2fc_fw_stats { + u64 fc_crc_cnt; + u64 fcoe_tx_pkt_cnt; + u64 fcoe_rx_pkt_cnt; + u64 fcoe_tx_byte_cnt; + u64 fcoe_rx_byte_cnt; +}; + struct bnx2fc_hba { struct list_head list; struct cnic_dev *cnic; @@ -207,6 +227,8 @@ struct bnx2fc_hba { struct bnx2fc_rport **tgt_ofld_list; /* statistics */ + struct bnx2fc_fw_stats bfw_stats; + struct fcoe_statistics_params prev_stats; struct fcoe_statistics_params *stats_buffer; dma_addr_t stats_buf_dma; struct completion stat_req_done; |