wil6210: improve debug for WMI receive
[deliverable/linux.git] / drivers / net / wireless / ath / wil6210 / wmi.c
index 037993544764e2415f561227199d8219c9287170..6cc0e182cc703c1f0c8ad243a008f8f6129590a6 100644 (file)
@@ -659,21 +659,27 @@ void wmi_recv_cmd(struct wil6210_priv *wil)
        u8 *cmd;
        void __iomem *src;
        ulong flags;
+       unsigned n;
 
        if (!test_bit(wil_status_reset_done, &wil->status)) {
                wil_err(wil, "Reset not completed\n");
                return;
        }
 
-       for (;;) {
+       for (n = 0;; n++) {
                u16 len;
 
                r->head = ioread32(wil->csr + HOST_MBOX +
                                   offsetof(struct wil6210_mbox_ctl, rx.head));
-               if (r->tail == r->head)
+               if (r->tail == r->head) {
+                       if (n == 0)
+                               wil_dbg_wmi(wil, "No events?\n");
                        return;
+               }
 
-               /* read cmd from tail */
+               wil_dbg_wmi(wil, "Mbox head %08x tail %08x\n",
+                           r->head, r->tail);
+               /* read cmd descriptor from tail */
                wil_memcpy_fromio_32(&d_tail, wil->csr + HOSTADDR(r->tail),
                                     sizeof(struct wil6210_mbox_ring_desc));
                if (d_tail.sync == 0) {
@@ -681,13 +687,18 @@ void wmi_recv_cmd(struct wil6210_priv *wil)
                        return;
                }
 
+               /* read cmd header from descriptor */
                if (0 != wmi_read_hdr(wil, d_tail.addr, &hdr)) {
                        wil_err(wil, "Mbox evt at 0x%08x?\n",
                                le32_to_cpu(d_tail.addr));
                        return;
                }
-
                len = le16_to_cpu(hdr.len);
+               wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n",
+                           le16_to_cpu(hdr.seq), len, le16_to_cpu(hdr.type),
+                           hdr.flags);
+
+               /* read cmd buffer from descriptor */
                src = wmi_buffer(wil, d_tail.addr) +
                      sizeof(struct wil6210_mbox_hdr);
                evt = kmalloc(ALIGN(offsetof(struct pending_wmi_event,
@@ -703,9 +714,6 @@ void wmi_recv_cmd(struct wil6210_priv *wil)
                iowrite32(0, wil->csr + HOSTADDR(r->tail) +
                          offsetof(struct wil6210_mbox_ring_desc, sync));
                /* indicate */
-               wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n",
-                           le16_to_cpu(hdr.seq), len, le16_to_cpu(hdr.type),
-                           hdr.flags);
                if ((hdr.type == WIL_MBOX_HDR_TYPE_WMI) &&
                    (len >= sizeof(struct wil6210_mbox_hdr_wmi))) {
                        struct wil6210_mbox_hdr_wmi *wmi = &evt->event.wmi;
@@ -735,6 +743,8 @@ void wmi_recv_cmd(struct wil6210_priv *wil)
                        wil_dbg_wmi(wil, "queue_work -> %d\n", q);
                }
        }
+       if (n > 1)
+               wil_dbg_wmi(wil, "%s -> %d events processed\n", __func__, n);
 }
 
 int wmi_call(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len,
This page took 0.031106 seconds and 5 git commands to generate.