staging: wilc1000: refactor wilc_wlan_handle_isr_ext to avoid goto statement
authorAjay Singh <ajay.kathat@microchip.com>
Wed, 1 Aug 2018 05:03:41 +0000 (10:33 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Aug 2018 07:41:37 +0000 (09:41 +0200)
Refactor wilc_wlan_handle_isr_ext() to avoid the use of the goto label.
Also avoid the unnecessary NULL check for 'wilc->rx_buffer' and
calling wilc_wlan_handle_rxq() only after wilc_wlan_rxq_add() call.
The link [1] contains details for discussion related to this changes.

[1]. https://patchwork.kernel.org/patch/10533601/

Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wilc1000/wilc_wlan.c

index 6bac3f7..eb5f32f 100644 (file)
@@ -815,31 +815,28 @@ static void wilc_wlan_handle_isr_ext(struct wilc *wilc, u32 int_status)
                retries++;
        }
 
-       if (size > 0) {
-               if (LINUX_RX_SIZE - offset < size)
-                       offset = 0;
+       if (size <= 0)
+               return;
 
-               if (wilc->rx_buffer)
-                       buffer = &wilc->rx_buffer[offset];
-               else
-                       goto end;
-
-               wilc->hif_func->hif_clear_int_ext(wilc,
-                                             DATA_INT_CLR | ENABLE_RX_VMM);
-               ret = wilc->hif_func->hif_block_rx_ext(wilc, 0, buffer, size);
-
-end:
-               if (ret) {
-                       offset += size;
-                       wilc->rx_buffer_offset = offset;
-                       rqe = kmalloc(sizeof(*rqe), GFP_KERNEL);
-                       if (rqe) {
-                               rqe->buffer = buffer;
-                               rqe->buffer_size = size;
-                               wilc_wlan_rxq_add(wilc, rqe);
-                       }
-               }
-       }
+       if (LINUX_RX_SIZE - offset < size)
+               offset = 0;
+
+       buffer = &wilc->rx_buffer[offset];
+
+       wilc->hif_func->hif_clear_int_ext(wilc, DATA_INT_CLR | ENABLE_RX_VMM);
+       ret = wilc->hif_func->hif_block_rx_ext(wilc, 0, buffer, size);
+       if (!ret)
+               return;
+
+       offset += size;
+       wilc->rx_buffer_offset = offset;
+       rqe = kmalloc(sizeof(*rqe), GFP_KERNEL);
+       if (!rqe)
+               return;
+
+       rqe->buffer = buffer;
+       rqe->buffer_size = size;
+       wilc_wlan_rxq_add(wilc, rqe);
        wilc_wlan_handle_rxq(wilc);
 }