diff options
author | Dave Jiang <dave.jiang@intel.com> | 2011-05-04 18:02:02 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 07:04:45 -0400 |
commit | f2f300806fe186a6c45020a444667755edcce672 (patch) | |
tree | 7241834565196b31e92f074f3e2924cbfad0722d /drivers/scsi/isci | |
parent | c6d42257899505ea1982eba4c5e8bc7981e63e07 (diff) |
isci: Convert SATA fis data structures to Linux native
Converting of sata_fis_reg_d2h to dev_to_host_fis
Converting of sata_fis_reg_h2d to host_to_dev_fis
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci')
-rw-r--r-- | drivers/scsi/isci/core/intel_sata.h | 56 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_phy.h | 6 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_controller.c | 15 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_phy.c | 9 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_phy.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_request.c | 4 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_stp_request.c | 17 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_stp_request.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/phy.h | 5 | ||||
-rw-r--r-- | drivers/scsi/isci/port.c | 7 | ||||
-rw-r--r-- | drivers/scsi/isci/sata.c | 8 | ||||
-rw-r--r-- | drivers/scsi/isci/task.c | 6 |
12 files changed, 35 insertions, 102 deletions
diff --git a/drivers/scsi/isci/core/intel_sata.h b/drivers/scsi/isci/core/intel_sata.h index 47390d54064d..977354d7b843 100644 --- a/drivers/scsi/isci/core/intel_sata.h +++ b/drivers/scsi/isci/core/intel_sata.h | |||
@@ -101,62 +101,6 @@ struct sata_fis_header { | |||
101 | u32 error:8; | 101 | u32 error:8; |
102 | }; | 102 | }; |
103 | 103 | ||
104 | |||
105 | /** | ||
106 | * struct sata_fis_reg_h2d - This is the definition for a SATA Host to Device | ||
107 | * Register FIS. | ||
108 | * | ||
109 | * | ||
110 | */ | ||
111 | struct sata_fis_reg_h2d { | ||
112 | u32 fis_type:8; /* word 0 */ | ||
113 | u32 pm_port:4; | ||
114 | u32 reserved0:3; | ||
115 | u32 command_flag:1; | ||
116 | u32 command:8; | ||
117 | u32 features:8; | ||
118 | u32 lba_low:8; /* word 1 */ | ||
119 | u32 lba_mid:8; | ||
120 | u32 lba_high:8; | ||
121 | u32 device:8; | ||
122 | u32 lba_low_exp:8; /* word 2 */ | ||
123 | u32 lba_mid_exp:8; | ||
124 | u32 lba_high_exp:8; | ||
125 | u32 features_exp:8; | ||
126 | u32 sector_count:8; /* word 3 */ | ||
127 | u32 sector_count_exp:8; | ||
128 | u32 reserved1:8; | ||
129 | u32 control:8; | ||
130 | u32 reserved2; /* word 4 */ | ||
131 | }; | ||
132 | |||
133 | /** | ||
134 | * struct sata_fis_reg_d2h - SATA Device To Host FIS | ||
135 | * | ||
136 | * | ||
137 | */ | ||
138 | struct sata_fis_reg_d2h { | ||
139 | u32 fis_type:8; /* word 0 */ | ||
140 | u32 pm_port:4; | ||
141 | u32 reserved0:2; | ||
142 | u32 irq:1; | ||
143 | u32 reserved1:1; | ||
144 | u32 status:8; | ||
145 | u32 error:8; | ||
146 | u8 lba_low; /* word 1 */ | ||
147 | u8 lba_mid; | ||
148 | u8 lba_high; | ||
149 | u8 device; | ||
150 | u8 lba_low_exp; /* word 2 */ | ||
151 | u8 lba_mid_exp; | ||
152 | u8 lba_high_exp; | ||
153 | u8 reserved; | ||
154 | u8 sector_count; /* word 3 */ | ||
155 | u8 sector_count_exp; | ||
156 | u16 reserved2; | ||
157 | u32 reserved3; | ||
158 | }; | ||
159 | |||
160 | /** | 104 | /** |
161 | * | 105 | * |
162 | * | 106 | * |
diff --git a/drivers/scsi/isci/core/scic_phy.h b/drivers/scsi/isci/core/scic_phy.h index 784c5b5c105b..6fe39ccedf0b 100644 --- a/drivers/scsi/isci/core/scic_phy.h +++ b/drivers/scsi/isci/core/scic_phy.h | |||
@@ -64,11 +64,11 @@ | |||
64 | */ | 64 | */ |
65 | 65 | ||
66 | 66 | ||
67 | #include <scsi/sas.h> | ||
68 | #include <scsi/libsas.h> | ||
67 | #include "sci_status.h" | 69 | #include "sci_status.h" |
68 | |||
69 | #include "intel_sata.h" | 70 | #include "intel_sata.h" |
70 | #include "intel_sas.h" | 71 | #include "intel_sas.h" |
71 | #include <scsi/libsas.h> | ||
72 | 72 | ||
73 | struct scic_sds_phy; | 73 | struct scic_sds_phy; |
74 | struct scic_sds_port; | 74 | struct scic_sds_port; |
@@ -141,7 +141,7 @@ struct scic_sata_phy_properties { | |||
141 | * This field delineates the signature FIS received from the | 141 | * This field delineates the signature FIS received from the |
142 | * attached target. | 142 | * attached target. |
143 | */ | 143 | */ |
144 | struct sata_fis_reg_d2h signature_fis; | 144 | struct dev_to_host_fis signature_fis; |
145 | 145 | ||
146 | /** | 146 | /** |
147 | * This field specifies to the user if a port selector is connected | 147 | * This field specifies to the user if a port selector is connected |
diff --git a/drivers/scsi/isci/core/scic_sds_controller.c b/drivers/scsi/isci/core/scic_sds_controller.c index d7c37dc64ac4..0b76fc75996f 100644 --- a/drivers/scsi/isci/core/scic_sds_controller.c +++ b/drivers/scsi/isci/core/scic_sds_controller.c | |||
@@ -54,6 +54,7 @@ | |||
54 | */ | 54 | */ |
55 | 55 | ||
56 | #include <linux/device.h> | 56 | #include <linux/device.h> |
57 | #include <scsi/sas.h> | ||
57 | #include "scic_controller.h" | 58 | #include "scic_controller.h" |
58 | #include "scic_phy.h" | 59 | #include "scic_phy.h" |
59 | #include "scic_port.h" | 60 | #include "scic_port.h" |
@@ -1754,17 +1755,11 @@ void scic_sds_controller_copy_sata_response( | |||
1754 | void *frame_header, | 1755 | void *frame_header, |
1755 | void *frame_buffer) | 1756 | void *frame_buffer) |
1756 | { | 1757 | { |
1757 | memcpy( | 1758 | memcpy(response_buffer, frame_header, sizeof(u32)); |
1758 | response_buffer, | ||
1759 | frame_header, | ||
1760 | sizeof(u32) | ||
1761 | ); | ||
1762 | 1759 | ||
1763 | memcpy( | 1760 | memcpy(response_buffer + sizeof(u32), |
1764 | (char *)((char *)response_buffer + sizeof(u32)), | 1761 | frame_buffer, |
1765 | frame_buffer, | 1762 | sizeof(struct dev_to_host_fis) - sizeof(u32)); |
1766 | sizeof(struct sata_fis_reg_d2h) - sizeof(u32) | ||
1767 | ); | ||
1768 | } | 1763 | } |
1769 | 1764 | ||
1770 | /** | 1765 | /** |
diff --git a/drivers/scsi/isci/core/scic_sds_phy.c b/drivers/scsi/isci/core/scic_sds_phy.c index c935c0482470..1b35b1ac1f8d 100644 --- a/drivers/scsi/isci/core/scic_sds_phy.c +++ b/drivers/scsi/isci/core/scic_sds_phy.c | |||
@@ -53,6 +53,7 @@ | |||
53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
54 | */ | 54 | */ |
55 | 55 | ||
56 | #include <scsi/sas.h> | ||
56 | #include "intel_ata.h" | 57 | #include "intel_ata.h" |
57 | #include "intel_sata.h" | 58 | #include "intel_sata.h" |
58 | #include "sci_base_state.h" | 59 | #include "sci_base_state.h" |
@@ -620,11 +621,9 @@ enum sci_status scic_sata_phy_get_properties( | |||
620 | struct scic_sata_phy_properties *properties) | 621 | struct scic_sata_phy_properties *properties) |
621 | { | 622 | { |
622 | if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SATA) { | 623 | if (sci_phy->protocol == SCIC_SDS_PHY_PROTOCOL_SATA) { |
623 | memcpy( | 624 | memcpy(&properties->signature_fis, |
624 | &properties->signature_fis, | 625 | &sci_phy->phy_type.sata.signature_fis_buffer, |
625 | &sci_phy->phy_type.sata.signature_fis_buffer, | 626 | sizeof(struct dev_to_host_fis)); |
626 | sizeof(struct sata_fis_reg_d2h) | ||
627 | ); | ||
628 | 627 | ||
629 | /* / @todo add support for port selectors. */ | 628 | /* / @todo add support for port selectors. */ |
630 | properties->is_port_selector_present = false; | 629 | properties->is_port_selector_present = false; |
diff --git a/drivers/scsi/isci/core/scic_sds_phy.h b/drivers/scsi/isci/core/scic_sds_phy.h index fca95c1c027a..c9fa2071f9b2 100644 --- a/drivers/scsi/isci/core/scic_sds_phy.h +++ b/drivers/scsi/isci/core/scic_sds_phy.h | |||
@@ -280,7 +280,7 @@ struct scic_sds_phy { | |||
280 | } sas; | 280 | } sas; |
281 | 281 | ||
282 | struct { | 282 | struct { |
283 | struct sata_fis_reg_d2h signature_fis_buffer; | 283 | struct dev_to_host_fis signature_fis_buffer; |
284 | 284 | ||
285 | } sata; | 285 | } sata; |
286 | 286 | ||
diff --git a/drivers/scsi/isci/core/scic_sds_request.c b/drivers/scsi/isci/core/scic_sds_request.c index ffc16072d1da..13067659a8c6 100644 --- a/drivers/scsi/isci/core/scic_sds_request.c +++ b/drivers/scsi/isci/core/scic_sds_request.c | |||
@@ -53,7 +53,7 @@ | |||
53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
54 | */ | 54 | */ |
55 | 55 | ||
56 | 56 | #include <scsi/sas.h> | |
57 | #include "intel_sas.h" | 57 | #include "intel_sas.h" |
58 | #include "intel_sata.h" | 58 | #include "intel_sata.h" |
59 | #include "intel_sat.h" | 59 | #include "intel_sat.h" |
@@ -1742,7 +1742,7 @@ enum sci_status scic_io_request_construct(struct scic_sds_controller *scic, | |||
1742 | scic_sds_ssp_io_request_assign_buffers(sci_req); | 1742 | scic_sds_ssp_io_request_assign_buffers(sci_req); |
1743 | } else if (dev->dev_type == SATA_DEV || (dev->tproto & SAS_PROTOCOL_STP)) { | 1743 | } else if (dev->dev_type == SATA_DEV || (dev->tproto & SAS_PROTOCOL_STP)) { |
1744 | scic_sds_stp_request_assign_buffers(sci_req); | 1744 | scic_sds_stp_request_assign_buffers(sci_req); |
1745 | memset(sci_req->command_buffer, 0, sizeof(struct sata_fis_reg_h2d)); | 1745 | memset(sci_req->command_buffer, 0, sizeof(struct host_to_dev_fis)); |
1746 | } else if (dev_is_expander(dev)) { | 1746 | } else if (dev_is_expander(dev)) { |
1747 | scic_sds_smp_request_assign_buffers(sci_req); | 1747 | scic_sds_smp_request_assign_buffers(sci_req); |
1748 | memset(sci_req->command_buffer, 0, sizeof(struct smp_request)); | 1748 | memset(sci_req->command_buffer, 0, sizeof(struct smp_request)); |
diff --git a/drivers/scsi/isci/core/scic_sds_stp_request.c b/drivers/scsi/isci/core/scic_sds_stp_request.c index 8c980235ea41..1cd111c42ede 100644 --- a/drivers/scsi/isci/core/scic_sds_stp_request.c +++ b/drivers/scsi/isci/core/scic_sds_stp_request.c | |||
@@ -79,7 +79,7 @@ | |||
79 | * request memory | 79 | * request memory |
80 | */ | 80 | */ |
81 | #define scic_sds_stp_request_get_h2d_reg_buffer(memory) \ | 81 | #define scic_sds_stp_request_get_h2d_reg_buffer(memory) \ |
82 | ((struct sata_fis_reg_h2d *)(\ | 82 | ((struct host_to_dev_fis *)(\ |
83 | ((char *)(memory)) + sizeof(struct scic_sds_stp_request) \ | 83 | ((char *)(memory)) + sizeof(struct scic_sds_stp_request) \ |
84 | )) | 84 | )) |
85 | 85 | ||
@@ -90,9 +90,9 @@ | |||
90 | * request memory | 90 | * request memory |
91 | */ | 91 | */ |
92 | #define scic_sds_stp_request_get_response_buffer(memory) \ | 92 | #define scic_sds_stp_request_get_response_buffer(memory) \ |
93 | ((struct sata_fis_reg_d2h *)(\ | 93 | ((struct dev_to_host_fis *)(\ |
94 | ((char *)(scic_sds_stp_request_get_h2d_reg_buffer(memory))) \ | 94 | ((char *)(scic_sds_stp_request_get_h2d_reg_buffer(memory))) \ |
95 | + sizeof(struct sata_fis_reg_h2d) \ | 95 | + sizeof(struct host_to_dev_fis) \ |
96 | )) | 96 | )) |
97 | 97 | ||
98 | /** | 98 | /** |
@@ -127,8 +127,8 @@ | |||
127 | u32 scic_sds_stp_request_get_object_size(void) | 127 | u32 scic_sds_stp_request_get_object_size(void) |
128 | { | 128 | { |
129 | return sizeof(struct scic_sds_stp_request) | 129 | return sizeof(struct scic_sds_stp_request) |
130 | + sizeof(struct sata_fis_reg_h2d) | 130 | + sizeof(struct host_to_dev_fis) |
131 | + sizeof(struct sata_fis_reg_d2h) | 131 | + sizeof(struct dev_to_host_fis) |
132 | + sizeof(struct scu_task_context) | 132 | + sizeof(struct scu_task_context) |
133 | + SMP_CACHE_BYTES | 133 | + SMP_CACHE_BYTES |
134 | + sizeof(struct scu_sgl_element_pair) * SCU_MAX_SGL_ELEMENT_PAIRS; | 134 | + sizeof(struct scu_sgl_element_pair) * SCU_MAX_SGL_ELEMENT_PAIRS; |
@@ -205,7 +205,7 @@ static void scu_sata_reqeust_construct_task_context( | |||
205 | task_context->task_phase = 0x01; | 205 | task_context->task_phase = 0x01; |
206 | 206 | ||
207 | task_context->ssp_command_iu_length = | 207 | task_context->ssp_command_iu_length = |
208 | (sizeof(struct sata_fis_reg_h2d) - sizeof(u32)) / sizeof(u32); | 208 | (sizeof(struct host_to_dev_fis) - sizeof(u32)) / sizeof(u32); |
209 | 209 | ||
210 | /* Set the first word of the H2D REG FIS */ | 210 | /* Set the first word of the H2D REG FIS */ |
211 | task_context->type.words[0] = *(u32 *)sds_request->command_buffer; | 211 | task_context->type.words[0] = *(u32 *)sds_request->command_buffer; |
@@ -354,7 +354,8 @@ static void scu_stp_raw_request_construct_task_context( | |||
354 | task_context->priority = SCU_TASK_PRIORITY_NORMAL; | 354 | task_context->priority = SCU_TASK_PRIORITY_NORMAL; |
355 | task_context->task_type = SCU_TASK_TYPE_SATA_RAW_FRAME; | 355 | task_context->task_type = SCU_TASK_TYPE_SATA_RAW_FRAME; |
356 | task_context->type.stp.fis_type = SATA_FIS_TYPE_REGH2D; | 356 | task_context->type.stp.fis_type = SATA_FIS_TYPE_REGH2D; |
357 | task_context->transfer_length_bytes = sizeof(struct sata_fis_reg_h2d) - sizeof(u32); | 357 | task_context->transfer_length_bytes = |
358 | sizeof(struct host_to_dev_fis) - sizeof(u32); | ||
358 | } | 359 | } |
359 | 360 | ||
360 | void scic_stp_io_request_set_ncq_tag( | 361 | void scic_stp_io_request_set_ncq_tag( |
@@ -1749,7 +1750,7 @@ static void scic_sds_stp_request_started_soft_reset_await_h2d_diagnostic_complet | |||
1749 | { | 1750 | { |
1750 | struct scic_sds_request *sci_req = object; | 1751 | struct scic_sds_request *sci_req = object; |
1751 | struct scu_task_context *task_context; | 1752 | struct scu_task_context *task_context; |
1752 | struct sata_fis_reg_h2d *h2d_fis; | 1753 | struct host_to_dev_fis *h2d_fis; |
1753 | enum sci_status status; | 1754 | enum sci_status status; |
1754 | 1755 | ||
1755 | /* Clear the SRST bit */ | 1756 | /* Clear the SRST bit */ |
diff --git a/drivers/scsi/isci/core/scic_sds_stp_request.h b/drivers/scsi/isci/core/scic_sds_stp_request.h index 6724c1d759df..807bc4eeb821 100644 --- a/drivers/scsi/isci/core/scic_sds_stp_request.h +++ b/drivers/scsi/isci/core/scic_sds_stp_request.h | |||
@@ -69,7 +69,7 @@ | |||
69 | struct scic_sds_stp_request { | 69 | struct scic_sds_stp_request { |
70 | struct scic_sds_request parent; | 70 | struct scic_sds_request parent; |
71 | 71 | ||
72 | struct sata_fis_reg_d2h d2h_reg_fis; | 72 | struct dev_to_host_fis d2h_reg_fis; |
73 | 73 | ||
74 | union { | 74 | union { |
75 | u32 ncq; | 75 | u32 ncq; |
diff --git a/drivers/scsi/isci/phy.h b/drivers/scsi/isci/phy.h index 44b727f1c455..3fe1a8a13169 100644 --- a/drivers/scsi/isci/phy.h +++ b/drivers/scsi/isci/phy.h | |||
@@ -59,6 +59,7 @@ | |||
59 | 59 | ||
60 | #include "port.h" | 60 | #include "port.h" |
61 | #include "host.h" | 61 | #include "host.h" |
62 | #include <scsi/sas.h> | ||
62 | #include <scsi/libsas.h> | 63 | #include <scsi/libsas.h> |
63 | 64 | ||
64 | 65 | ||
@@ -79,10 +80,8 @@ struct isci_phy { | |||
79 | u8 sas_addr[SAS_ADDR_SIZE]; | 80 | u8 sas_addr[SAS_ADDR_SIZE]; |
80 | 81 | ||
81 | union { | 82 | union { |
82 | |||
83 | u8 aif[sizeof(struct sci_sas_identify_address_frame)]; | 83 | u8 aif[sizeof(struct sci_sas_identify_address_frame)]; |
84 | u8 fis[sizeof(struct sata_fis_reg_d2h)]; | 84 | struct dev_to_host_fis fis; |
85 | |||
86 | } frame_rcvd; | 85 | } frame_rcvd; |
87 | }; | 86 | }; |
88 | 87 | ||
diff --git a/drivers/scsi/isci/port.c b/drivers/scsi/isci/port.c index 30d6ad895ccf..5b38f2f963e0 100644 --- a/drivers/scsi/isci/port.c +++ b/drivers/scsi/isci/port.c | |||
@@ -205,11 +205,8 @@ void isci_port_link_up( | |||
205 | */ | 205 | */ |
206 | BUG_ON(call_status != SCI_SUCCESS); | 206 | BUG_ON(call_status != SCI_SUCCESS); |
207 | 207 | ||
208 | memcpy(isci_phy->frame_rcvd.fis, | 208 | isci_phy->frame_rcvd.fis = sata_phy_properties.signature_fis; |
209 | &sata_phy_properties.signature_fis, | 209 | isci_phy->sas_phy.frame_rcvd_size = sizeof(struct dev_to_host_fis); |
210 | sizeof(struct sata_fis_reg_d2h)); | ||
211 | |||
212 | isci_phy->sas_phy.frame_rcvd_size = sizeof(struct sata_fis_reg_d2h); | ||
213 | 210 | ||
214 | /* | 211 | /* |
215 | * For direct-attached SATA devices, the SCI core will | 212 | * For direct-attached SATA devices, the SCI core will |
diff --git a/drivers/scsi/isci/sata.c b/drivers/scsi/isci/sata.c index 53ce0c281bee..08374505832e 100644 --- a/drivers/scsi/isci/sata.c +++ b/drivers/scsi/isci/sata.c | |||
@@ -53,6 +53,7 @@ | |||
53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 53 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
54 | */ | 54 | */ |
55 | 55 | ||
56 | #include <scsi/sas.h> | ||
56 | #include "isci.h" | 57 | #include "isci.h" |
57 | #include "remote_device.h" | 58 | #include "remote_device.h" |
58 | #include "scic_io_request.h" | 59 | #include "scic_io_request.h" |
@@ -142,11 +143,10 @@ void isci_sata_set_ncq_tag( | |||
142 | * | 143 | * |
143 | * none. | 144 | * none. |
144 | */ | 145 | */ |
145 | void isci_request_process_stp_response( | 146 | void isci_request_process_stp_response(struct sas_task *task, |
146 | struct sas_task *task, | 147 | void *response_buffer) |
147 | void *response_buffer) | ||
148 | { | 148 | { |
149 | struct sata_fis_reg_d2h *d2h_reg_fis = (struct sata_fis_reg_d2h *)response_buffer; | 149 | struct dev_to_host_fis *d2h_reg_fis = response_buffer; |
150 | struct task_status_struct *ts = &task->task_status; | 150 | struct task_status_struct *ts = &task->task_status; |
151 | struct ata_task_resp *resp = (void *)&ts->buf[0]; | 151 | struct ata_task_resp *resp = (void *)&ts->buf[0]; |
152 | 152 | ||
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c index 95f386723212..f9a1c41a5ce8 100644 --- a/drivers/scsi/isci/task.c +++ b/drivers/scsi/isci/task.c | |||
@@ -1452,10 +1452,8 @@ void isci_task_request_complete( | |||
1452 | 1452 | ||
1453 | memcpy(&tmf->resp.d2h_fis, | 1453 | memcpy(&tmf->resp.d2h_fis, |
1454 | scic_stp_io_request_get_d2h_reg_address( | 1454 | scic_stp_io_request_get_d2h_reg_address( |
1455 | request->sci_request_handle | 1455 | request->sci_request_handle), |
1456 | ), | 1456 | sizeof(struct dev_to_host_fis)); |
1457 | sizeof(struct sata_fis_reg_d2h) | ||
1458 | ); | ||
1459 | } | 1457 | } |
1460 | 1458 | ||
1461 | /* Manage the timer if it is still running. */ | 1459 | /* Manage the timer if it is still running. */ |