diff options
author | James Smart <james.smart@emulex.com> | 2012-08-03 12:36:03 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-14 09:40:15 -0400 |
commit | aa6fbb757ab6fce4647bafd28f9a49e5b0fa07db (patch) | |
tree | 64e1f80c87a1e602c79eccafc30ed1b2d5ae8619 /drivers/scsi/lpfc | |
parent | 2a76a28314993d27668fc7f9d5b6427facce4318 (diff) |
[SCSI] lpfc 8.3.33: Add Interrupts per second stats via debugfs
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 18 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.h | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 982bd40353ec..83a1c9e4902d 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -2825,10 +2825,26 @@ lpfc_sli_rsp_pointers_error(struct lpfc_hba *phba, struct lpfc_sli_ring *pring) | |||
2825 | void lpfc_poll_eratt(unsigned long ptr) | 2825 | void lpfc_poll_eratt(unsigned long ptr) |
2826 | { | 2826 | { |
2827 | struct lpfc_hba *phba; | 2827 | struct lpfc_hba *phba; |
2828 | uint32_t eratt = 0; | 2828 | uint32_t eratt = 0, rem; |
2829 | uint64_t sli_intr, cnt; | ||
2829 | 2830 | ||
2830 | phba = (struct lpfc_hba *)ptr; | 2831 | phba = (struct lpfc_hba *)ptr; |
2831 | 2832 | ||
2833 | /* Here we will also keep track of interrupts per sec of the hba */ | ||
2834 | sli_intr = phba->sli.slistat.sli_intr; | ||
2835 | |||
2836 | if (phba->sli.slistat.sli_prev_intr > sli_intr) | ||
2837 | cnt = (((uint64_t)(-1) - phba->sli.slistat.sli_prev_intr) + | ||
2838 | sli_intr); | ||
2839 | else | ||
2840 | cnt = (sli_intr - phba->sli.slistat.sli_prev_intr); | ||
2841 | |||
2842 | /* 64-bit integer division not supporte on 32-bit x86 - use do_div */ | ||
2843 | rem = do_div(cnt, LPFC_ERATT_POLL_INTERVAL); | ||
2844 | phba->sli.slistat.sli_ips = cnt; | ||
2845 | |||
2846 | phba->sli.slistat.sli_prev_intr = sli_intr; | ||
2847 | |||
2832 | /* Check chip HA register for error event */ | 2848 | /* Check chip HA register for error event */ |
2833 | eratt = lpfc_sli_check_eratt(phba); | 2849 | eratt = lpfc_sli_check_eratt(phba); |
2834 | 2850 | ||
diff --git a/drivers/scsi/lpfc/lpfc_sli.h b/drivers/scsi/lpfc/lpfc_sli.h index 4b9b44e8e064..2f48d000a3b4 100644 --- a/drivers/scsi/lpfc/lpfc_sli.h +++ b/drivers/scsi/lpfc/lpfc_sli.h | |||
@@ -255,6 +255,8 @@ struct lpfc_sli_stat { | |||
255 | uint64_t mbox_stat_err; /* Mbox cmds completed status error */ | 255 | uint64_t mbox_stat_err; /* Mbox cmds completed status error */ |
256 | uint64_t mbox_cmd; /* Mailbox commands issued */ | 256 | uint64_t mbox_cmd; /* Mailbox commands issued */ |
257 | uint64_t sli_intr; /* Count of Host Attention interrupts */ | 257 | uint64_t sli_intr; /* Count of Host Attention interrupts */ |
258 | uint64_t sli_prev_intr; /* Previous cnt of Host Attention interrupts */ | ||
259 | uint64_t sli_ips; /* Host Attention interrupts per sec */ | ||
258 | uint32_t err_attn_event; /* Error Attn event counters */ | 260 | uint32_t err_attn_event; /* Error Attn event counters */ |
259 | uint32_t link_event; /* Link event counters */ | 261 | uint32_t link_event; /* Link event counters */ |
260 | uint32_t mbox_event; /* Mailbox event counters */ | 262 | uint32_t mbox_event; /* Mailbox event counters */ |