struct qtnf_hw_info hw_info;
struct napi_struct mux_napi;
struct net_device mux_dev;
- struct completion firmware_init_complete;
struct workqueue_struct *workqueue;
struct work_struct fw_work;
struct work_struct event_work;
bus->fw_state = QTNF_FW_STATE_DETACHED;
}
- complete(&bus->firmware_init_complete);
put_device(&pdev->dev);
}
pcie_priv->pdev = pdev;
pcie_priv->tx_stopped = 0;
- init_completion(&bus->firmware_init_complete);
mutex_init(&bus->bus_lock);
spin_lock_init(&pcie_priv->tx_lock);
spin_lock_init(&pcie_priv->tx_reclaim_lock);
void qtnf_pcie_remove(struct qtnf_bus *bus, struct qtnf_pcie_bus_priv *priv)
{
- wait_for_completion(&bus->firmware_init_complete);
+ cancel_work_sync(&bus->fw_work);
if (bus->fw_state == QTNF_FW_STATE_ACTIVE ||
bus->fw_state == QTNF_FW_STATE_EP_DEAD)