Re: [PATCH] staging: vt6656: Avoid multiple line dereference

From: Joe Perches
Date: Wed Feb 01 2017 - 17:11:31 EST


On Wed, 2017-02-01 at 21:43 +0000, Craig Kewley wrote:
> This patch fixes the checkpatch.pl warning:
> WARNING: Avoid multiple line dereference

Hi Craig.

Please try to make the code more sensible in preference to
just fixing checkpatch warnings.

> diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
[]
> @@ -692,8 +692,8 @@ static u16 vnt_generate_tx_parameter(struct vnt_usb_send_context *tx_context,
> tx_context->pkt_type == PK_TYPE_11GA) {
> if (need_rts) {
> if (need_mic)
> - *mic_hdr = &tx_buffer->
> - tx_head.tx_rts.tx.mic.hdr;
> + *mic_hdr =
> + &tx_buffer->tx_head.tx_rts.tx.mic.hdr;
>
> return vnt_rxtx_rts(tx_context, &tx_buffer->tx_head,
> need_mic);

This block would be more legible using a temporary for
&tx_buffer->tx_head like:
---
 drivers/staging/vt6656/rxtx.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index aa59e7f14ab3..89ca5c20cd1c 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -687,28 +687,27 @@ static u16 vnt_generate_tx_parameter(struct vnt_usb_send_context *tx_context,
  struct vnt_mic_hdr **mic_hdr, u32 need_mic,
  bool need_rts)
 {
+ union vnt_tx_head *tx_head = &tx_buffer->tx_head;
 
  if (tx_context->pkt_type == PK_TYPE_11GB ||
      tx_context->pkt_type == PK_TYPE_11GA) {
  if (need_rts) {
  if (need_mic)
- *mic_hdr = &tx_buffer->
- tx_head.tx_rts.tx.mic.hdr;
+ *mic_hdr = &tx_head->tx_rts.tx.mic.hdr;
 
- return vnt_rxtx_rts(tx_context, &tx_buffer->tx_head,
-     need_mic);
+ return vnt_rxtx_rts(tx_context, tx_head, need_mic);
  }
 
  if (need_mic)
- *mic_hdr = &tx_buffer->tx_head.tx_cts.tx.mic.hdr;
+ *mic_hdr = &tx_head->tx_cts.tx.mic.hdr;
 
- return vnt_rxtx_cts(tx_context, &tx_buffer->tx_head, need_mic);
+ return vnt_rxtx_cts(tx_context, tx_head, need_mic);
  }
 
  if (need_mic)
- *mic_hdr = &tx_buffer->tx_head.tx_ab.tx.mic.hdr;
+ *mic_hdr = &tx_head->tx_ab.tx.mic.hdr;
 
- return vnt_rxtx_ab(tx_context, &tx_buffer->tx_head, need_rts, need_mic);
+ return vnt_rxtx_ab(tx_context, tx_head, need_rts, need_mic);
 }
 
 static void vnt_fill_txkey(struct vnt_usb_send_context *tx_context,