old mode 100644new mode 100755.. | .. |
---|
16 | 16 | #include "rwnx_cmds.h" |
---|
17 | 17 | #include "rwnx_defs.h" |
---|
18 | 18 | #include "rwnx_strs.h" |
---|
19 | | -#define CREATE_TRACE_POINTS |
---|
| 19 | +//#define CREATE_TRACE_POINTS |
---|
20 | 20 | #include "rwnx_events.h" |
---|
21 | 21 | #include "aicwf_txrxif.h" |
---|
22 | 22 | #ifdef AICWF_SDIO_SUPPORT |
---|
.. | .. |
---|
63 | 63 | bool defer_push = false; |
---|
64 | 64 | |
---|
65 | 65 | RWNX_DBG(RWNX_FN_ENTRY_STR); |
---|
| 66 | +#ifdef CREATE_TRACE_POINTS |
---|
66 | 67 | trace_msg_send(cmd->id); |
---|
67 | | - |
---|
| 68 | +#endif |
---|
68 | 69 | spin_lock_bh(&cmd_mgr->lock); |
---|
69 | 70 | |
---|
70 | 71 | if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { |
---|
.. | .. |
---|
118 | 119 | bool defer_push = false; |
---|
119 | 120 | |
---|
120 | 121 | //RWNX_DBG(RWNX_FN_ENTRY_STR); |
---|
| 122 | +#ifdef CREATE_TRACE_POINTS |
---|
121 | 123 | trace_msg_send(cmd->id); |
---|
122 | | - |
---|
| 124 | +#endif |
---|
123 | 125 | spin_lock_bh(&cmd_mgr->lock); |
---|
124 | 126 | |
---|
125 | 127 | if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { |
---|
.. | .. |
---|
208 | 210 | } |
---|
209 | 211 | #else |
---|
210 | 212 | unsigned long tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); |
---|
211 | | - if (!wait_for_completion_killable_timeout(&cmd->complete, tout)) { |
---|
| 213 | + if (!wait_for_completion_timeout(&cmd->complete, tout)) { |
---|
212 | 214 | printk(KERN_CRIT"cmd timed-out\n"); |
---|
213 | 215 | #ifdef AICWF_SDIO_SUPPORT |
---|
214 | 216 | ret = aicwf_sdio_writeb(sdiodev, SDIOWIFI_WAKEUP_REG, 2); |
---|
.. | .. |
---|
308 | 310 | break; |
---|
309 | 311 | |
---|
310 | 312 | if (next) { |
---|
311 | | - #ifdef AICWF_SDIO_SUPPORT |
---|
| 313 | +#ifdef AICWF_SDIO_SUPPORT |
---|
312 | 314 | struct aic_sdio_dev *sdiodev = container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); |
---|
313 | | - #endif |
---|
314 | | - #ifdef AICWF_USB_SUPPORT |
---|
| 315 | +#endif |
---|
| 316 | +#ifdef AICWF_USB_SUPPORT |
---|
315 | 317 | struct aic_usb_dev *usbdev = container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); |
---|
316 | | - #endif |
---|
| 318 | +#endif |
---|
317 | 319 | next->flags &= ~RWNX_CMD_FLAG_WAIT_PUSH; |
---|
318 | 320 | |
---|
319 | 321 | //printk("cmd_process, cmd->id=%d, tkn=%d\r\n",next->reqid, next->tkn); |
---|
.. | .. |
---|
326 | 328 | kfree(next->a2e_msg); |
---|
327 | 329 | |
---|
328 | 330 | tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); |
---|
329 | | - if (!wait_for_completion_killable_timeout(&next->complete, tout)) { |
---|
| 331 | + if (!wait_for_completion_timeout(&next->complete, tout)) { |
---|
330 | 332 | printk(KERN_CRIT"cmd timed-out\n"); |
---|
| 333 | +#ifdef AICWF_SDIO_SUPPORT |
---|
| 334 | + if (aicwf_sdio_writeb(sdiodev, SDIOWIFI_WAKEUP_REG, 2) < 0) { |
---|
| 335 | + sdio_err("reg:%d write failed!\n", SDIOWIFI_WAKEUP_REG); |
---|
| 336 | + } |
---|
| 337 | +#endif |
---|
331 | 338 | cmd_dump(next); |
---|
332 | 339 | spin_lock_bh(&cmd_mgr->lock); |
---|
333 | 340 | cmd_mgr->state = RWNX_CMD_MGR_STATE_CRASHED; |
---|
.. | .. |
---|
337 | 344 | } |
---|
338 | 345 | spin_unlock_bh(&cmd_mgr->lock); |
---|
339 | 346 | } else |
---|
340 | | - kfree(next); |
---|
| 347 | + kfree(next); |
---|
341 | 348 | } |
---|
342 | 349 | } |
---|
343 | 350 | |
---|
.. | .. |
---|
353 | 360 | return 0; |
---|
354 | 361 | } |
---|
355 | 362 | //RWNX_DBG(RWNX_FN_ENTRY_STR); |
---|
356 | | - spin_lock_bh(&rwnx_hw->cb_lock); |
---|
| 363 | + //spin_lock_bh(&rwnx_hw->cb_lock); |
---|
357 | 364 | res = cb(rwnx_hw, cmd, msg); |
---|
358 | | - spin_unlock_bh(&rwnx_hw->cb_lock); |
---|
| 365 | + //spin_unlock_bh(&rwnx_hw->cb_lock); |
---|
359 | 366 | |
---|
360 | 367 | return res; |
---|
361 | 368 | } |
---|
.. | .. |
---|
379 | 386 | bool found = false; |
---|
380 | 387 | |
---|
381 | 388 | // RWNX_DBG(RWNX_FN_ENTRY_STR); |
---|
| 389 | +#ifdef CREATE_TRACE_POINTS |
---|
382 | 390 | trace_msg_recv(msg->id); |
---|
383 | | - |
---|
| 391 | +#endif |
---|
384 | 392 | //printk("cmd->id=%x\n", msg->id); |
---|
385 | 393 | spin_lock_bh(&cmd_mgr->lock); |
---|
386 | 394 | list_for_each_entry(cmd, &cmd_mgr->cmds, list) { |
---|
.. | .. |
---|
475 | 483 | cmd_mgr->print(cmd_mgr); |
---|
476 | 484 | cmd_mgr->drain(cmd_mgr); |
---|
477 | 485 | cmd_mgr->print(cmd_mgr); |
---|
| 486 | + flush_workqueue(cmd_mgr->cmd_wq); |
---|
| 487 | + destroy_workqueue(cmd_mgr->cmd_wq); |
---|
478 | 488 | memset(cmd_mgr, 0, sizeof(*cmd_mgr)); |
---|
479 | 489 | } |
---|
480 | 490 | |
---|