static void tx_device_task(struct ks_wlan_private *priv) { struct tx_device_buffer *sp; int ret; DPRINTK(4, "\n"); if (cnt_txqbody(priv) <= 0 || atomic_read(&priv->psstatus.status) == PS_SNOOZE) return; sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; if (priv->dev_state >= DEVICE_STATE_BOOT) { ret = write_to_device(priv, sp->sendp, sp->size); if (ret) { DPRINTK(1, "write_to_device error !!(%d)\n", ret); queue_delayed_work(priv->wq, &priv->rw_dwork, 1); return; } } kfree(sp->sendp); if (sp->complete_handler) /* TX Complete */ (*sp->complete_handler)(priv, sp->skb); inc_txqhead(priv); if (cnt_txqbody(priv) > 0) queue_delayed_work(priv->wq, &priv->rw_dwork, 0); }
static void tx_device_task(void *dev) { struct ks_wlan_private *priv = (struct ks_wlan_private *)dev; struct tx_device_buffer *sp; int rc = 0; DPRINTK(4, "\n"); if (cnt_txqbody(priv) > 0 && atomic_read(&priv->psstatus.status) != PS_SNOOZE) { sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; if (priv->dev_state >= DEVICE_STATE_BOOT) { rc = write_to_device(priv, sp->sendp, sp->size); if (rc) { DPRINTK(1, "write_to_device error !!(%d)\n", rc); queue_delayed_work(priv->ks_wlan_hw. ks7010sdio_wq, &priv->ks_wlan_hw.rw_wq, 1); return; } } kfree(sp->sendp); /* allocated memory free */ if (sp->complete_handler != NULL) /* TX Complete */ (*sp->complete_handler) (sp->arg1, sp->arg2); inc_txqhead(priv); if (cnt_txqbody(priv) > 0) { queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, &priv->ks_wlan_hw.rw_wq, 0); } } return; }
static void trx_device_exit(struct ks_wlan_private *priv) { struct tx_device_buffer *sp; /* tx buffer clear */ while (cnt_txqbody(priv) > 0) { sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; kfree(sp->sendp); if (sp->complete_handler) /* TX Complete */ (*sp->complete_handler)(priv, sp->skb); inc_txqhead(priv); } tasklet_kill(&priv->rx_bh_task); }
static void trx_device_exit(struct ks_wlan_private *priv) { struct tx_device_buffer *sp; /* tx buffer clear */ while (cnt_txqbody(priv) > 0) { sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; kfree(sp->sendp); /* allocated memory free */ if (sp->complete_handler != NULL) /* TX Complete */ (*sp->complete_handler) (sp->arg1, sp->arg2); inc_txqhead(priv); } tasklet_kill(&priv->ks_wlan_hw.rx_bh_task); return; }