linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] staging: qlge: fix build breakage with dumping enabled
@ 2020-08-21  7:03 Coiby Xu
  2020-08-21  8:31 ` Benjamin Poirier
  0 siblings, 1 reply; 4+ messages in thread
From: Coiby Xu @ 2020-08-21  7:03 UTC (permalink / raw)
  To: devel
  Cc: Benjamin Poirier, Manish Chopra,
	supporter:QLOGIC QLGE 10Gb ETHERNET DRIVER, Greg Kroah-Hartman,
	Dan Carpenter, open list:QLOGIC QLGE 10Gb ETHERNET DRIVER,
	open list

This fixes commit 0107635e15ac
("staging: qlge: replace pr_err with netdev_err") which introduced an
build breakage with dumping enabled, i.e.,

    $ QL_ALL_DUMP=1 QL_OB_DUMP=1 QL_CB_DUMP=1 QL_REG_DUMP=1 \
      QL_IB_DUMP=1 QL_DEV_DUMP=1 make M=drivers/staging/qlge

Fixes: 0107635e15ac ("taging: qlge: replace pr_err with netdev_err")
Reported-by: Benjamin Poirier <benjamin.poirier@gmail.com>
Signed-off-by: Coiby Xu <coiby.xu@gmail.com>
---
 drivers/staging/qlge/qlge.h      | 42 ++++++++++++++++----------------
 drivers/staging/qlge/qlge_dbg.c  | 36 +++++++++++++--------------
 drivers/staging/qlge/qlge_main.c |  4 +--
 3 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/drivers/staging/qlge/qlge.h b/drivers/staging/qlge/qlge.h
index 483ce04789ed..c72c1d2a00a8 100644
--- a/drivers/staging/qlge/qlge.h
+++ b/drivers/staging/qlge/qlge.h
@@ -2315,37 +2315,37 @@ void ql_dump_qdev(struct ql_adapter *qdev);
 #endif
 
 #ifdef QL_CB_DUMP
-void ql_dump_wqicb(struct wqicb *wqicb);
-void ql_dump_tx_ring(struct tx_ring *tx_ring);
-void ql_dump_ricb(struct ricb *ricb);
-void ql_dump_cqicb(struct cqicb *cqicb);
-void ql_dump_rx_ring(struct rx_ring *rx_ring);
+void ql_dump_wqicb(struct ql_adapter *qdev, struct wqicb *wqicb);
+void ql_dump_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring);
+void ql_dump_ricb(struct ql_adapter *qdev, struct ricb *ricb);
+void ql_dump_cqicb(struct ql_adapter *qdev, struct cqicb *cqicb);
+void ql_dump_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring);
 void ql_dump_hw_cb(struct ql_adapter *qdev, int size, u32 bit, u16 q_id);
-#define QL_DUMP_RICB(ricb) ql_dump_ricb(ricb)
-#define QL_DUMP_WQICB(wqicb) ql_dump_wqicb(wqicb)
-#define QL_DUMP_TX_RING(tx_ring) ql_dump_tx_ring(tx_ring)
-#define QL_DUMP_CQICB(cqicb) ql_dump_cqicb(cqicb)
-#define QL_DUMP_RX_RING(rx_ring) ql_dump_rx_ring(rx_ring)
+#define QL_DUMP_RICB(qdev, ricb) ql_dump_ricb(qdev, ricb)
+#define QL_DUMP_WQICB(qdev, wqicb) ql_dump_wqicb(qdev, wqicb)
+#define QL_DUMP_TX_RING(qdev, tx_ring) ql_dump_tx_ring(qdev, tx_ring)
+#define QL_DUMP_CQICB(qdev, cqicb) ql_dump_cqicb(qdev, cqicb)
+#define QL_DUMP_RX_RING(qdev, rx_ring) ql_dump_rx_ring(qdev, rx_ring)
 #define QL_DUMP_HW_CB(qdev, size, bit, q_id) \
 		ql_dump_hw_cb(qdev, size, bit, q_id)
 #else
-#define QL_DUMP_RICB(ricb)
-#define QL_DUMP_WQICB(wqicb)
-#define QL_DUMP_TX_RING(tx_ring)
-#define QL_DUMP_CQICB(cqicb)
-#define QL_DUMP_RX_RING(rx_ring)
+#define QL_DUMP_RICB(qdev, ricb)
+#define QL_DUMP_WQICB(qdev, wqicb)
+#define QL_DUMP_TX_RING(qdev, tx_ring)
+#define QL_DUMP_CQICB(qdev, cqicb)
+#define QL_DUMP_RX_RING(qdev, rx_ring)
 #define QL_DUMP_HW_CB(qdev, size, bit, q_id)
 #endif
 
 #ifdef QL_OB_DUMP
 void ql_dump_tx_desc(struct tx_buf_desc *tbd);
-void ql_dump_ob_mac_iocb(struct ob_mac_iocb_req *ob_mac_iocb);
-void ql_dump_ob_mac_rsp(struct ob_mac_iocb_rsp *ob_mac_rsp);
-#define QL_DUMP_OB_MAC_IOCB(ob_mac_iocb) ql_dump_ob_mac_iocb(ob_mac_iocb)
-#define QL_DUMP_OB_MAC_RSP(ob_mac_rsp) ql_dump_ob_mac_rsp(ob_mac_rsp)
+void ql_dump_ob_mac_iocb(struct ql_adapter *qdev, struct ob_mac_iocb_req *ob_mac_iocb);
+void ql_dump_ob_mac_rsp(struct ql_adapter *qdev, struct ob_mac_iocb_rsp *ob_mac_rsp);
+#define QL_DUMP_OB_MAC_IOCB(qdev, ob_mac_iocb) ql_dump_ob_mac_iocb(qdev, ob_mac_iocb)
+#define QL_DUMP_OB_MAC_RSP(qdev, ob_mac_rsp) ql_dump_ob_mac_rsp(qdev, ob_mac_rsp)
 #else
-#define QL_DUMP_OB_MAC_IOCB(ob_mac_iocb)
-#define QL_DUMP_OB_MAC_RSP(ob_mac_rsp)
+#define QL_DUMP_OB_MAC_IOCB(qdev, ob_mac_iocb)
+#define QL_DUMP_OB_MAC_RSP(qdev, ob_mac_rsp)
 #endif
 
 #ifdef QL_IB_DUMP
diff --git a/drivers/staging/qlge/qlge_dbg.c b/drivers/staging/qlge/qlge_dbg.c
index a55bf0b3e9dc..123d3f7475ae 100644
--- a/drivers/staging/qlge/qlge_dbg.c
+++ b/drivers/staging/qlge/qlge_dbg.c
@@ -1431,7 +1431,7 @@ void ql_dump_routing_entries(struct ql_adapter *qdev)
 		}
 		if (value)
 			netdev_err(qdev->ndev,
-				   "%s: Routing Mask %d = 0x%.08x\n",
+				   "Routing Mask %d = 0x%.08x\n",
 				   i, value);
 	}
 	ql_sem_unlock(qdev, SEM_RT_IDX_MASK);
@@ -1615,7 +1615,7 @@ void ql_dump_qdev(struct ql_adapter *qdev)
 #endif
 
 #ifdef QL_CB_DUMP
-void ql_dump_wqicb(struct wqicb *wqicb)
+void ql_dump_wqicb(struct ql_adapter *qdev, struct wqicb *wqicb)
 {
 	netdev_err(qdev->ndev, "Dumping wqicb stuff...\n");
 	netdev_err(qdev->ndev, "wqicb->len = 0x%x\n", le16_to_cpu(wqicb->len));
@@ -1630,7 +1630,7 @@ void ql_dump_wqicb(struct wqicb *wqicb)
 		   (unsigned long long)le64_to_cpu(wqicb->cnsmr_idx_addr));
 }
 
-void ql_dump_tx_ring(struct tx_ring *tx_ring)
+void ql_dump_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
 {
 	if (!tx_ring)
 		return;
@@ -1654,7 +1654,7 @@ void ql_dump_tx_ring(struct tx_ring *tx_ring)
 	netdev_err(qdev->ndev, "tx_ring->tx_count = %d\n", atomic_read(&tx_ring->tx_count));
 }
 
-void ql_dump_ricb(struct ricb *ricb)
+void ql_dump_ricb(struct ql_adapter *qdev, struct ricb *ricb)
 {
 	int i;
 
@@ -1684,7 +1684,7 @@ void ql_dump_ricb(struct ricb *ricb)
 			   le32_to_cpu(ricb->ipv4_hash_key[i]));
 }
 
-void ql_dump_cqicb(struct cqicb *cqicb)
+void ql_dump_cqicb(struct ql_adapter *qdev, struct cqicb *cqicb)
 {
 	netdev_err(qdev->ndev, "Dumping cqicb stuff...\n");
 
@@ -1723,7 +1723,7 @@ static const char *qlge_rx_ring_type_name(struct rx_ring *rx_ring)
 		return "TX COMPLETION";
 };
 
-void ql_dump_rx_ring(struct rx_ring *rx_ring)
+void ql_dump_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring)
 {
 	if (!rx_ring)
 		return;
@@ -1798,13 +1798,13 @@ void ql_dump_hw_cb(struct ql_adapter *qdev, int size, u32 bit, u16 q_id)
 	}
 	switch (bit) {
 	case CFG_DRQ:
-		ql_dump_wqicb((struct wqicb *)ptr);
+		ql_dump_wqicb(qdev, (struct wqicb *)ptr);
 		break;
 	case CFG_DCQ:
-		ql_dump_cqicb((struct cqicb *)ptr);
+		ql_dump_cqicb(qdev, (struct cqicb *)ptr);
 		break;
 	case CFG_DR:
-		ql_dump_ricb((struct ricb *)ptr);
+		ql_dump_ricb(qdev, (struct ricb *)ptr);
 		break;
 	default:
 		netdev_err(qdev->ndev, "%s: Invalid bit value = %x\n", __func__, bit);
@@ -1816,7 +1816,7 @@ void ql_dump_hw_cb(struct ql_adapter *qdev, int size, u32 bit, u16 q_id)
 #endif
 
 #ifdef QL_OB_DUMP
-void ql_dump_tx_desc(struct tx_buf_desc *tbd)
+void ql_dump_tx_desc(struct ql_adapter *qdev, struct tx_buf_desc *tbd)
 {
 	netdev_err(qdev->ndev, "tbd->addr  = 0x%llx\n",
 		   le64_to_cpu((u64)tbd->addr));
@@ -1843,7 +1843,7 @@ void ql_dump_tx_desc(struct tx_buf_desc *tbd)
 		   tbd->len & TX_DESC_E ? "E" : ".");
 }
 
-void ql_dump_ob_mac_iocb(struct ob_mac_iocb_req *ob_mac_iocb)
+void ql_dump_ob_mac_iocb(struct ql_adapter *qdev, struct ob_mac_iocb_req *ob_mac_iocb)
 {
 	struct ob_mac_tso_iocb_req *ob_mac_tso_iocb =
 	    (struct ob_mac_tso_iocb_req *)ob_mac_iocb;
@@ -1886,10 +1886,10 @@ void ql_dump_ob_mac_iocb(struct ob_mac_iocb_req *ob_mac_iocb)
 		frame_len = le16_to_cpu(ob_mac_iocb->frame_len);
 	}
 	tbd = &ob_mac_iocb->tbd[0];
-	ql_dump_tx_desc(tbd);
+	ql_dump_tx_desc(qdev, tbd);
 }
 
-void ql_dump_ob_mac_rsp(struct ob_mac_iocb_rsp *ob_mac_rsp)
+void ql_dump_ob_mac_rsp(struct ql_adapter *qdev, struct ob_mac_iocb_rsp *ob_mac_rsp)
 {
 	netdev_err(qdev->ndev, "%s\n", __func__);
 	netdev_err(qdev->ndev, "opcode         = %d\n", ob_mac_rsp->opcode);
@@ -1906,7 +1906,7 @@ void ql_dump_ob_mac_rsp(struct ob_mac_iocb_rsp *ob_mac_rsp)
 #endif
 
 #ifdef QL_IB_DUMP
-void ql_dump_ib_mac_rsp(struct ib_mac_iocb_rsp *ib_mac_rsp)
+void ql_dump_ib_mac_rsp(struct ql_adapter *qdev, struct ib_mac_iocb_rsp *ib_mac_rsp)
 {
 	netdev_err(qdev->ndev, "%s\n", __func__);
 	netdev_err(qdev->ndev, "opcode         = 0x%x\n", ib_mac_rsp->opcode);
@@ -1995,12 +1995,12 @@ void ql_dump_all(struct ql_adapter *qdev)
 	QL_DUMP_REGS(qdev);
 	QL_DUMP_QDEV(qdev);
 	for (i = 0; i < qdev->tx_ring_count; i++) {
-		QL_DUMP_TX_RING(&qdev->tx_ring[i]);
-		QL_DUMP_WQICB((struct wqicb *)&qdev->tx_ring[i]);
+		QL_DUMP_TX_RING(qdev, &qdev->tx_ring[i]);
+		QL_DUMP_WQICB(qdev, (struct wqicb *)&qdev->tx_ring[i]);
 	}
 	for (i = 0; i < qdev->rx_ring_count; i++) {
-		QL_DUMP_RX_RING(&qdev->rx_ring[i]);
-		QL_DUMP_CQICB((struct cqicb *)&qdev->rx_ring[i]);
+		QL_DUMP_RX_RING(qdev, &qdev->rx_ring[i]);
+		QL_DUMP_CQICB(qdev, (struct cqicb *)&qdev->rx_ring[i]);
 	}
 }
 #endif
diff --git a/drivers/staging/qlge/qlge_main.c b/drivers/staging/qlge/qlge_main.c
index 2028458bea6f..61b4abf7b8ae 100644
--- a/drivers/staging/qlge/qlge_main.c
+++ b/drivers/staging/qlge/qlge_main.c
@@ -2001,7 +2001,7 @@ static void ql_process_mac_tx_intr(struct ql_adapter *qdev,
 	struct tx_ring *tx_ring;
 	struct tx_ring_desc *tx_ring_desc;
 
-	QL_DUMP_OB_MAC_RSP(mac_rsp);
+	QL_DUMP_OB_MAC_RSP(qdev, mac_rsp);
 	tx_ring = &qdev->tx_ring[mac_rsp->txq_idx];
 	tx_ring_desc = &tx_ring->q[mac_rsp->tid];
 	ql_unmap_send(qdev, tx_ring_desc, tx_ring_desc->map_cnt);
@@ -2593,7 +2593,7 @@ static netdev_tx_t qlge_send(struct sk_buff *skb, struct net_device *ndev)
 		tx_ring->tx_errors++;
 		return NETDEV_TX_BUSY;
 	}
-	QL_DUMP_OB_MAC_IOCB(mac_iocb_ptr);
+	QL_DUMP_OB_MAC_IOCB(qdev, mac_iocb_ptr);
 	tx_ring->prod_idx++;
 	if (tx_ring->prod_idx == tx_ring->wq_len)
 		tx_ring->prod_idx = 0;
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] staging: qlge: fix build breakage with dumping enabled
  2020-08-21  7:03 [PATCH] staging: qlge: fix build breakage with dumping enabled Coiby Xu
@ 2020-08-21  8:31 ` Benjamin Poirier
  2020-08-25 11:16   ` Coiby Xu
  0 siblings, 1 reply; 4+ messages in thread
From: Benjamin Poirier @ 2020-08-21  8:31 UTC (permalink / raw)
  To: Coiby Xu
  Cc: devel, Manish Chopra, supporter:QLOGIC QLGE 10Gb ETHERNET DRIVER,
	Greg Kroah-Hartman, Dan Carpenter,
	open list:QLOGIC QLGE 10Gb ETHERNET DRIVER, open list

On 2020-08-21 15:03 +0800, Coiby Xu wrote:
> This fixes commit 0107635e15ac
> ("staging: qlge: replace pr_err with netdev_err") which introduced an
> build breakage with dumping enabled, i.e.,
> 
>     $ QL_ALL_DUMP=1 QL_OB_DUMP=1 QL_CB_DUMP=1 QL_REG_DUMP=1 \
>       QL_IB_DUMP=1 QL_DEV_DUMP=1 make M=drivers/staging/qlge
> 
> Fixes: 0107635e15ac ("taging: qlge: replace pr_err with netdev_err")
			^ staging
> Reported-by: Benjamin Poirier <benjamin.poirier@gmail.com>
> Signed-off-by: Coiby Xu <coiby.xu@gmail.com>
> ---
>  drivers/staging/qlge/qlge.h      | 42 ++++++++++++++++----------------
>  drivers/staging/qlge/qlge_dbg.c  | 36 +++++++++++++--------------
>  drivers/staging/qlge/qlge_main.c |  4 +--
>  3 files changed, 41 insertions(+), 41 deletions(-)
> 
[...]
> @@ -1615,7 +1615,7 @@ void ql_dump_qdev(struct ql_adapter *qdev)
>  #endif
>  
>  #ifdef QL_CB_DUMP
> -void ql_dump_wqicb(struct wqicb *wqicb)
> +void ql_dump_wqicb(struct ql_adapter *qdev, struct wqicb *wqicb)
>  {

This can be fixed without adding another argument:

	struct tx_ring *tx_ring = container_of(wqicb, struct tx_ring, wqicb);
	struct ql_adapter *qdev = tx_ring->qdev;

>  	netdev_err(qdev->ndev, "Dumping wqicb stuff...\n");
>  	netdev_err(qdev->ndev, "wqicb->len = 0x%x\n", le16_to_cpu(wqicb->len));
> @@ -1630,7 +1630,7 @@ void ql_dump_wqicb(struct wqicb *wqicb)
>  		   (unsigned long long)le64_to_cpu(wqicb->cnsmr_idx_addr));
>  }
>  
> -void ql_dump_tx_ring(struct tx_ring *tx_ring)
> +void ql_dump_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
>  {

This can be fixed without adding another argument:
	struct ql_adapter *qdev;

	if (!tx_ring)
		return;

	qdev = tx_ring->qdev;

... similar comment for the other instances.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] staging: qlge: fix build breakage with dumping enabled
  2020-08-21  8:31 ` Benjamin Poirier
@ 2020-08-25 11:16   ` Coiby Xu
  2020-08-25 22:37     ` Benjamin Poirier
  0 siblings, 1 reply; 4+ messages in thread
From: Coiby Xu @ 2020-08-25 11:16 UTC (permalink / raw)
  To: Benjamin Poirier
  Cc: devel, Manish Chopra, supporter:QLOGIC QLGE 10Gb ETHERNET DRIVER,
	Greg Kroah-Hartman, Dan Carpenter,
	open list:QLOGIC QLGE 10Gb ETHERNET DRIVER, open list

On Fri, Aug 21, 2020 at 05:31:59PM +0900, Benjamin Poirier wrote:
>On 2020-08-21 15:03 +0800, Coiby Xu wrote:
>> This fixes commit 0107635e15ac
>> ("staging: qlge: replace pr_err with netdev_err") which introduced an
>> build breakage with dumping enabled, i.e.,
>>
>>     $ QL_ALL_DUMP=1 QL_OB_DUMP=1 QL_CB_DUMP=1 QL_REG_DUMP=1 \
>>       QL_IB_DUMP=1 QL_DEV_DUMP=1 make M=drivers/staging/qlge
>>
>> Fixes: 0107635e15ac ("taging: qlge: replace pr_err with netdev_err")
>			^ staging

Thank you for reminding me of the typo!

>> Reported-by: Benjamin Poirier <benjamin.poirier@gmail.com>
>> Signed-off-by: Coiby Xu <coiby.xu@gmail.com>
>> ---
>>  drivers/staging/qlge/qlge.h      | 42 ++++++++++++++++----------------
>>  drivers/staging/qlge/qlge_dbg.c  | 36 +++++++++++++--------------
>>  drivers/staging/qlge/qlge_main.c |  4 +--
>>  3 files changed, 41 insertions(+), 41 deletions(-)
>>
>[...]
>> @@ -1615,7 +1615,7 @@ void ql_dump_qdev(struct ql_adapter *qdev)
>>  #endif
>>
>>  #ifdef QL_CB_DUMP
>> -void ql_dump_wqicb(struct wqicb *wqicb)
>> +void ql_dump_wqicb(struct ql_adapter *qdev, struct wqicb *wqicb)
>>  {
>
>This can be fixed without adding another argument:
>
>	struct tx_ring *tx_ring = container_of(wqicb, struct tx_ring, wqicb);
>	struct ql_adapter *qdev = tx_ring->qdev;
>
>>  	netdev_err(qdev->ndev, "Dumping wqicb stuff...\n");
>>  	netdev_err(qdev->ndev, "wqicb->len = 0x%x\n", le16_to_cpu(wqicb->len));
>> @@ -1630,7 +1630,7 @@ void ql_dump_wqicb(struct wqicb *wqicb)
>>  		   (unsigned long long)le64_to_cpu(wqicb->cnsmr_idx_addr));
>>  }
>>
>> -void ql_dump_tx_ring(struct tx_ring *tx_ring)
>> +void ql_dump_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
>>  {
>
>This can be fixed without adding another argument:
>	struct ql_adapter *qdev;
>
>	if (!tx_ring)
>		return;
>
>	qdev = tx_ring->qdev;
>
>... similar comment for the other instances.

Thank you for the simpler solution!

For QL_OB_DUMP and QL_IB_DUMP, `struct ql_adapter *qdev` can't be
obtained via container_of. So qdev are still directly passed to these
functions.

--
Best regards,
Coiby

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] staging: qlge: fix build breakage with dumping enabled
  2020-08-25 11:16   ` Coiby Xu
@ 2020-08-25 22:37     ` Benjamin Poirier
  0 siblings, 0 replies; 4+ messages in thread
From: Benjamin Poirier @ 2020-08-25 22:37 UTC (permalink / raw)
  To: Coiby Xu
  Cc: devel, Manish Chopra, supporter:QLOGIC QLGE 10Gb ETHERNET DRIVER,
	Greg Kroah-Hartman, Dan Carpenter,
	open list:QLOGIC QLGE 10Gb ETHERNET DRIVER, open list

On 2020-08-25 19:16 +0800, Coiby Xu wrote:
[...]
> > > @@ -1630,7 +1630,7 @@ void ql_dump_wqicb(struct wqicb *wqicb)
> > >  		   (unsigned long long)le64_to_cpu(wqicb->cnsmr_idx_addr));
> > >  }
> > > 
> > > -void ql_dump_tx_ring(struct tx_ring *tx_ring)
> > > +void ql_dump_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
> > >  {
> > 
> > This can be fixed without adding another argument:
> > 	struct ql_adapter *qdev;
> > 
> > 	if (!tx_ring)
> > 		return;
> > 
> > 	qdev = tx_ring->qdev;
> > 
> > ... similar comment for the other instances.
> 
> Thank you for the simpler solution!
> 
> For QL_OB_DUMP and QL_IB_DUMP, `struct ql_adapter *qdev` can't be
> obtained via container_of. So qdev are still directly passed to these
> functions.

That's right; sorry I didn't check those functions earlier.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-08-25 22:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-21  7:03 [PATCH] staging: qlge: fix build breakage with dumping enabled Coiby Xu
2020-08-21  8:31 ` Benjamin Poirier
2020-08-25 11:16   ` Coiby Xu
2020-08-25 22:37     ` Benjamin Poirier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).