aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfa_port.c
diff options
context:
space:
mode:
authorJing Huang <huangj@brocade.com>2010-07-08 22:48:49 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 13:04:07 -0400
commitb85d045ee866011df535565bf12d684e8e5b7a9d (patch)
treeb8f7d73d92d7aaf659b3eedcc417ff7614c22316 /drivers/scsi/bfa/bfa_port.c
parent15b64a835def4c784c6e62ad762677f5cb56eba2 (diff)
[SCSI] bfa: statistics and typo fix
- Added time stamp for fcport stats reset - Added new fileds to the statistics data structures. - Typo removal and minor cleanup. Signed-off-by: Jing Huang <huangj@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa/bfa_port.c')
-rw-r--r--drivers/scsi/bfa/bfa_port.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/drivers/scsi/bfa/bfa_port.c b/drivers/scsi/bfa/bfa_port.c
index cab19028361a..6773e2282ddc 100644
--- a/drivers/scsi/bfa/bfa_port.c
+++ b/drivers/scsi/bfa/bfa_port.c
@@ -102,9 +102,14 @@ bfa_port_get_stats_isr(struct bfa_port_s *port, bfa_status_t status)
102 port->stats_busy = BFA_FALSE; 102 port->stats_busy = BFA_FALSE;
103 103
104 if (status == BFA_STATUS_OK) { 104 if (status == BFA_STATUS_OK) {
105 struct bfa_timeval_s tv;
106
105 memcpy(port->stats, port->stats_dma.kva, 107 memcpy(port->stats, port->stats_dma.kva,
106 sizeof(union bfa_pport_stats_u)); 108 sizeof(union bfa_pport_stats_u));
107 bfa_port_stats_swap(port, port->stats); 109 bfa_port_stats_swap(port, port->stats);
110
111 bfa_os_gettimeofday(&tv);
112 port->stats->fc.secs_reset = tv.tv_sec - port->stats_reset_time;
108 } 113 }
109 114
110 if (port->stats_cbfn) { 115 if (port->stats_cbfn) {
@@ -125,9 +130,17 @@ bfa_port_get_stats_isr(struct bfa_port_s *port, bfa_status_t status)
125static void 130static void
126bfa_port_clear_stats_isr(struct bfa_port_s *port, bfa_status_t status) 131bfa_port_clear_stats_isr(struct bfa_port_s *port, bfa_status_t status)
127{ 132{
133 struct bfa_timeval_s tv;
134
128 port->stats_status = status; 135 port->stats_status = status;
129 port->stats_busy = BFA_FALSE; 136 port->stats_busy = BFA_FALSE;
130 137
138 /**
139 * re-initialize time stamp for stats reset
140 */
141 bfa_os_gettimeofday(&tv);
142 port->stats_reset_time = tv.tv_sec;
143
131 if (port->stats_cbfn) { 144 if (port->stats_cbfn) {
132 port->stats_cbfn(port->stats_cbarg, status); 145 port->stats_cbfn(port->stats_cbarg, status);
133 port->stats_cbfn = NULL; 146 port->stats_cbfn = NULL;
@@ -428,6 +441,8 @@ void
428bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, void *dev, 441bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, void *dev,
429 struct bfa_trc_mod_s *trcmod, struct bfa_log_mod_s *logmod) 442 struct bfa_trc_mod_s *trcmod, struct bfa_log_mod_s *logmod)
430{ 443{
444 struct bfa_timeval_s tv;
445
431 bfa_assert(port); 446 bfa_assert(port);
432 447
433 port->dev = dev; 448 port->dev = dev;
@@ -435,13 +450,21 @@ bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, void *dev,
435 port->trcmod = trcmod; 450 port->trcmod = trcmod;
436 port->logmod = logmod; 451 port->logmod = logmod;
437 452
438 port->stats_busy = port->endis_pending = BFA_FALSE; 453 port->stats_busy = BFA_FALSE;
439 port->stats_cbfn = port->endis_cbfn = NULL; 454 port->endis_pending = BFA_FALSE;
455 port->stats_cbfn = NULL;
456 port->endis_cbfn = NULL;
440 457
441 bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port); 458 bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port);
442 bfa_ioc_hbfail_init(&port->hbfail, bfa_port_hbfail, port); 459 bfa_ioc_hbfail_init(&port->hbfail, bfa_port_hbfail, port);
443 bfa_ioc_hbfail_register(port->ioc, &port->hbfail); 460 bfa_ioc_hbfail_register(port->ioc, &port->hbfail);
444 461
462 /**
463 * initialize time stamp for stats reset
464 */
465 bfa_os_gettimeofday(&tv);
466 port->stats_reset_time = tv.tv_sec;
467
445 bfa_trc(port, 0); 468 bfa_trc(port, 0);
446} 469}
447 470