Re: [PATCH v3 10/16] PCI: epf-test: Cleanup pci_epf_test_cmd_handler()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/28/23 15:56, Rick Wertenbroek wrote:
> On Sat, Mar 25, 2023 at 8:02 AM Damien Le Moal
> <damien.lemoal@xxxxxxxxxxxxxxxxxx> wrote:
>>
>> Command codes are never combined together as flags into a single value.
>> Thus we can replace the series of "if" tests in
>> pci_epf_test_cmd_handler() with a cleaner switch-case statement.
>> This also allows checking that we got a valid command and print an error
>> message if we did not.
>>
>> Reviewed-by: Manivannan Sadhasivam <mani@xxxxxxxxxx>
>> Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>
>> ---
>>  drivers/pci/endpoint/functions/pci-epf-test.c | 30 +++++++++----------
>>  1 file changed, 14 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
>> index fa48e9b3c393..c2a14f828bdf 100644
>> --- a/drivers/pci/endpoint/functions/pci-epf-test.c
>> +++ b/drivers/pci/endpoint/functions/pci-epf-test.c
>> @@ -676,41 +676,39 @@ static void pci_epf_test_cmd_handler(struct work_struct *work)
>>                 goto reset_handler;
>>         }
>>
>> -       if ((command & COMMAND_RAISE_LEGACY_IRQ) ||
>> -           (command & COMMAND_RAISE_MSI_IRQ) ||
>> -           (command & COMMAND_RAISE_MSIX_IRQ)) {
>> +       switch (command) {
>> +       case COMMAND_RAISE_LEGACY_IRQ:
>> +       case COMMAND_RAISE_MSI_IRQ:
>> +       case COMMAND_RAISE_MSIX_IRQ:
>>                 pci_epf_test_raise_irq(epf_test, reg);
>> -               goto reset_handler;
>> -       }
>> -
>> -       if (command & COMMAND_WRITE) {
>> +               break;
>> +       case COMMAND_WRITE:
>>                 ret = pci_epf_test_write(epf_test, reg);
>>                 if (ret)
>>                         reg->status |= STATUS_WRITE_FAIL;
>>                 else
>>                         reg->status |= STATUS_WRITE_SUCCESS;
>>                 pci_epf_test_raise_irq(epf_test, reg);
>> -               goto reset_handler;
>> -       }
> 
> As a minor improvement on this cleanup I would suggest either switching
> the if / else condition above or the two below, the inverted logic makes it
> confusing. (one test case is if (ret) and the two others are if (!ret) with
> inverted results, all could share the same code (same logic)).

Indeed, good idea. I will add one more patch to do that.

> 
>> -
>> -       if (command & COMMAND_READ) {
>> +               break;
>> +       case COMMAND_READ:
>>                 ret = pci_epf_test_read(epf_test, reg);
>>                 if (!ret)
>>                         reg->status |= STATUS_READ_SUCCESS;
>>                 else
>>                         reg->status |= STATUS_READ_FAIL;
>>                 pci_epf_test_raise_irq(epf_test, reg);
>> -               goto reset_handler;
>> -       }
>> -
>> -       if (command & COMMAND_COPY) {
>> +               break;
>> +       case COMMAND_COPY:
>>                 ret = pci_epf_test_copy(epf_test, reg);
>>                 if (!ret)
>>                         reg->status |= STATUS_COPY_SUCCESS;
>>                 else
>>                         reg->status |= STATUS_COPY_FAIL;
>>                 pci_epf_test_raise_irq(epf_test, reg);
>> -               goto reset_handler;
>> +               break;
>> +       default:
>> +               dev_err(dev, "Invalid command\n");
>> +               break;
>>         }
>>
>>  reset_handler:
>> --
>> 2.39.2
>>

-- 
Damien Le Moal
Western Digital Research





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux