diff --git a/QualcommWifi/QualcommWifi.cpp b/QualcommWifi/QualcommWifi.cpp index 313e0dd..1401092 100644 --- a/QualcommWifi/QualcommWifi.cpp +++ b/QualcommWifi/QualcommWifi.cpp @@ -19,11 +19,8 @@ extern "C" { #include #include -extern "C" void kprintf(const char *format, ...); - static inline void logNvramStage(const char *tag) { IOLog("QualcommWifi: >>> [STAGE] %s <<<\n", tag); - kprintf("QualcommWifi: >>> [STAGE] %s <<<\n", tag); if (tag) { PEWriteNVRAMProperty("qcom_stage", tag, (unsigned int)strlen(tag)); } @@ -1013,12 +1010,23 @@ IORecursiveLock* QualcommWifi::allocIO80211RecursiveLock(void) { } bool QualcommWifi::createWorkLoop(void) { - logNvramStage("createWorkLoop_alias"); - return createWorkQueue(); + logNvramStage("createWorkLoop"); + if (fWorkLoop) { + return true; + } + fWorkLoop = IOWorkLoop::workLoop(); + if (!fWorkLoop) { + logNvramStage("workLoop_alloc_failed"); + IOLog("QualcommWifi: Erreur - Impossible d'allouer IOWorkLoop !\n"); + return false; + } + logNvramStage("workLoop_ok"); + IOLog("QualcommWifi: IOWorkLoop allouee avec succes (0x%p) !\n", fWorkLoop); + return true; } IOWorkLoop* QualcommWifi::getWorkLoop(void) const { - return (IOWorkLoop*)fWorkQueue; + return fWorkLoop ? fWorkLoop : (getProvider() ? getProvider()->getWorkLoop() : nullptr); } IOReturn QualcommWifi::getHardwareAddress(IOEthernetAddress *addrP) {