Skip to content

Commit f7a16ff

Browse files
kevmwYanVugenfirer
authored andcommitted
viostor: Factor out GetSrbQueueNumber()
The same code to find the QueueNumber for a given SRB is duplicated in multiple places. Factor it out into a common GetSrbQueueNumber(). Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1 parent 0d3a936 commit f7a16ff

1 file changed

Lines changed: 42 additions & 82 deletions

File tree

viostor/virtio_stor_hw_helper.c

Lines changed: 42 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,38 @@
5858
} \
5959
}
6060

61+
static ULONG GetSrbQueueNumber(IN PVOID DeviceExtension, IN PSRB_TYPE Srb)
62+
{
63+
PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension;
64+
ULONG QueueNumber = 0;
65+
ULONG MessageId = 1;
66+
67+
if (adaptExt->num_queues > 1)
68+
{
69+
STARTIO_PERFORMANCE_PARAMETERS param;
70+
ULONG status = STOR_STATUS_SUCCESS;
71+
72+
param.Size = sizeof(STARTIO_PERFORMANCE_PARAMETERS);
73+
status = StorPortGetStartIoPerfParams(DeviceExtension, (PSCSI_REQUEST_BLOCK)Srb, &param);
74+
if (status == STOR_STATUS_SUCCESS)
75+
{
76+
RhelDbgPrint(TRACE_LEVEL_INFORMATION,
77+
" srb %p, QueueNumber %lu, MessageNumber %lu, ChannelNumber %lu.\n",
78+
Srb,
79+
QueueNumber,
80+
param.MessageNumber,
81+
param.ChannelNumber);
82+
MESSAGENUMBER_TO_QUEUE();
83+
}
84+
else
85+
{
86+
RhelDbgPrint(TRACE_LEVEL_ERROR, " StorPortGetStartIoPerfParams failed. srb %p status 0x%x.\n", Srb, status);
87+
}
88+
}
89+
90+
return QueueNumber;
91+
}
92+
6193
BOOLEAN
6294
RhelDoFlush(PVOID DeviceExtension, PSRB_TYPE Srb, BOOLEAN resend, BOOLEAN bIsr)
6395
{
@@ -73,7 +105,6 @@ RhelDoFlush(PVOID DeviceExtension, PSRB_TYPE Srb, BOOLEAN resend, BOOLEAN bIsr)
73105
BOOLEAN result = FALSE;
74106
bool notify = FALSE;
75107
STOR_LOCK_HANDLE LockHandle = {0};
76-
ULONG status = STOR_STATUS_SUCCESS;
77108
struct virtqueue *vq = NULL;
78109
PREQUEST_LIST element;
79110

@@ -84,25 +115,10 @@ RhelDoFlush(PVOID DeviceExtension, PSRB_TYPE Srb, BOOLEAN resend, BOOLEAN bIsr)
84115
MessageId = srbExt->MessageID;
85116
QueueNumber = MessageId - 1;
86117
}
87-
else if (adaptExt->num_queues > 1)
118+
else
88119
{
89-
STARTIO_PERFORMANCE_PARAMETERS param;
90-
param.Size = sizeof(STARTIO_PERFORMANCE_PARAMETERS);
91-
status = StorPortGetStartIoPerfParams(DeviceExtension, (PSCSI_REQUEST_BLOCK)Srb, &param);
92-
if (status == STOR_STATUS_SUCCESS)
93-
{
94-
RhelDbgPrint(TRACE_LEVEL_INFORMATION,
95-
" srb %p, QueueNumber %lu, MessageNumber %lu, ChannelNumber %lu.\n",
96-
Srb,
97-
QueueNumber,
98-
param.MessageNumber,
99-
param.ChannelNumber);
100-
MESSAGENUMBER_TO_QUEUE();
101-
}
102-
else
103-
{
104-
RhelDbgPrint(TRACE_LEVEL_ERROR, " StorPortGetStartIoPerfParams failed. srb %p status 0x%x.\n", Srb, status);
105-
}
120+
QueueNumber = GetSrbQueueNumber(DeviceExtension, Srb);
121+
MessageId = QueueNumber + 1;
106122
}
107123

108124
if (adaptExt->reset_in_progress)
@@ -194,32 +210,13 @@ RhelDoReadWrite(PVOID DeviceExtension, PSRB_TYPE Srb)
194210
BOOLEAN result = FALSE;
195211
bool notify = FALSE;
196212
STOR_LOCK_HANDLE LockHandle = {0};
197-
ULONG status = STOR_STATUS_SUCCESS;
198213
struct virtqueue *vq = NULL;
199214
PREQUEST_LIST element;
200215

201216
SET_VA_PA();
202217

203-
if (adaptExt->num_queues > 1)
204-
{
205-
STARTIO_PERFORMANCE_PARAMETERS param;
206-
param.Size = sizeof(STARTIO_PERFORMANCE_PARAMETERS);
207-
status = StorPortGetStartIoPerfParams(DeviceExtension, (PSCSI_REQUEST_BLOCK)Srb, &param);
208-
if (status == STOR_STATUS_SUCCESS)
209-
{
210-
RhelDbgPrint(TRACE_LEVEL_INFORMATION,
211-
" srb %p, QueueNumber %lu, MessageNumber %lu, ChannelNumber %lu.\n",
212-
Srb,
213-
QueueNumber,
214-
param.MessageNumber,
215-
param.ChannelNumber);
216-
MESSAGENUMBER_TO_QUEUE();
217-
}
218-
else
219-
{
220-
RhelDbgPrint(TRACE_LEVEL_ERROR, " StorPortGetStartIoPerfParams failed srb %p status 0x%x.\n", Srb, status);
221-
}
222-
}
218+
QueueNumber = GetSrbQueueNumber(DeviceExtension, Srb);
219+
MessageId = QueueNumber + 1;
223220

224221
if (adaptExt->reset_in_progress)
225222
{
@@ -306,7 +303,6 @@ RhelDoUnMap(IN PVOID DeviceExtension, IN PSRB_TYPE Srb)
306303
BOOLEAN result = FALSE;
307304
BOOLEAN notify = FALSE;
308305
STOR_LOCK_HANDLE LockHandle = {0};
309-
ULONG status = STOR_STATUS_SUCCESS;
310306
struct virtqueue *vq = NULL;
311307

312308
SET_VA_PA();
@@ -361,26 +357,8 @@ RhelDoUnMap(IN PVOID DeviceExtension, IN PSRB_TYPE Srb)
361357
srbExt->sg[2].physAddr = StorPortGetPhysicalAddress(DeviceExtension, NULL, &srbExt->vbr.status, &fragLen);
362358
srbExt->sg[2].length = sizeof(srbExt->vbr.status);
363359

364-
if (adaptExt->num_queues > 1)
365-
{
366-
STARTIO_PERFORMANCE_PARAMETERS param;
367-
param.Size = sizeof(STARTIO_PERFORMANCE_PARAMETERS);
368-
status = StorPortGetStartIoPerfParams(DeviceExtension, (PSCSI_REQUEST_BLOCK)Srb, &param);
369-
if (status == STOR_STATUS_SUCCESS)
370-
{
371-
RhelDbgPrint(TRACE_LEVEL_INFORMATION,
372-
" srb %p, QueueNumber %lu, MessageNumber %lu, ChannelNumber %lu.\n",
373-
Srb,
374-
QueueNumber,
375-
param.MessageNumber,
376-
param.ChannelNumber);
377-
MESSAGENUMBER_TO_QUEUE();
378-
}
379-
else
380-
{
381-
RhelDbgPrint(TRACE_LEVEL_ERROR, " StorPortGetStartIoPerfParams failed srb %p status 0x%x.\n", Srb, status);
382-
}
383-
}
360+
QueueNumber = GetSrbQueueNumber(DeviceExtension, Srb);
361+
MessageId = QueueNumber + 1;
384362

385363
if (adaptExt->reset_in_progress)
386364
{
@@ -447,7 +425,6 @@ RhelGetSerialNumber(IN PVOID DeviceExtension, IN PSRB_TYPE Srb)
447425
struct virtqueue *vq = NULL;
448426
PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension;
449427
PSRB_EXTENSION srbExt = SRB_EXTENSION(Srb);
450-
ULONG status = STOR_STATUS_SUCCESS;
451428
PVOID va = NULL;
452429
ULONGLONG pa = 0ULL;
453430
BOOLEAN result = FALSE;
@@ -459,26 +436,9 @@ RhelGetSerialNumber(IN PVOID DeviceExtension, IN PSRB_TYPE Srb)
459436

460437
RhelDbgPrint(TRACE_LEVEL_INFORMATION, " srbExt %p.\n", srbExt);
461438

462-
if (adaptExt->num_queues > 1)
463-
{
464-
STARTIO_PERFORMANCE_PARAMETERS param;
465-
param.Size = sizeof(STARTIO_PERFORMANCE_PARAMETERS);
466-
status = StorPortGetStartIoPerfParams(DeviceExtension, (PSCSI_REQUEST_BLOCK)Srb, &param);
467-
if (status == STOR_STATUS_SUCCESS)
468-
{
469-
RhelDbgPrint(TRACE_LEVEL_INFORMATION,
470-
" srb %p, QueueNumber %lu, MessageNumber %lu, ChannelNumber %lu.\n",
471-
Srb,
472-
QueueNumber,
473-
param.MessageNumber,
474-
param.ChannelNumber);
475-
MESSAGENUMBER_TO_QUEUE();
476-
}
477-
else
478-
{
479-
RhelDbgPrint(TRACE_LEVEL_ERROR, " StorPortGetStartIoPerfParams failed srb %p status 0x%x.\n", Srb, status);
480-
}
481-
}
439+
QueueNumber = GetSrbQueueNumber(DeviceExtension, Srb);
440+
MessageId = QueueNumber + 1;
441+
482442
if (adaptExt->reset_in_progress)
483443
{
484444
SRB_SET_DATA_TRANSFER_LENGTH(Srb, 0);

0 commit comments

Comments
 (0)