feat(tahoe): port QualcommWireless & QualcommWifi to macOS Tahoe 26.x (Darwin 25)
Breakthroughs & Reverse Engineering (macOS Tahoe 26.7.1 / Darwin 25.6.0): - Reconstructed the complete 463-slot Skywalk vtable and class layout (0x128 / 296 bytes) of IO80211Controller (__ZTV17IO80211Controller at 0xffffff8002461148) and AppleBCMWLANCore from BootKernelExtensions.kc (IO80211Family 1200.13.1, source 1566.5). - Verified IOUSBHostDevice::deviceRequest vtable slot in Tahoe's BootKernelExtensions.kc (__ZTV15IOUSBHostDevice at 0xffffff8002e72720): confirmed exact match at slot 374 (0x176, byte offset 0xbb0). - Disassembled Tahoe's /usr/sbin/bluetoothd (FindTransportType at 0x10014c700, Found_USB_Dongle at 0x1000e9559, GetProductAndVendorID at 0x1000edf2a) confirming USB transport matching on 'Bluetooth USB Host Controller' and CSR 0x0a12 descriptor spoofing. Code & Build Modifications (v1.1.0): - IO80211Controller.h: Add full 463-slot Tahoe Skywalk vtable declaration (slots 394..462, offsets 0xc50..0xe70) and exact 0x80 filler size when __IO80211_TARGET >= 260000 while preserving legacy compatibility. - QualcommWifi.hpp/.cpp: Implement Tahoe IO80211Controller pure virtual methods (isCommandProhibited, handleCardSpecific, getDRIVER_VERSION, getHARDWARE_VERSION, getCARD_CAPABILITIES, getPOWER, setPOWER, getCOUNTRY_CODE, setCOUNTRY_CODE, setGET_DEBUG_INFO, getLogger, getFaultReporterFromDriver) and guard un-reserved IONetworkController slots 6..7 on SDK 26.5. - QualcommWireless.cpp: Add non-null vtable slot sanity check prior to installing the shadow vtable hook on IOUSBHostDevice::deviceRequest. - project.pbxproj & Info.plist: Upgrade to Xcode 26.6 (MacOSX26.5.sdk), MACOSX_DEPLOYMENT_TARGET = 26.0, __IO80211_TARGET = 260000, and bump version to 1.1.0. - docs & README: Document macOS Tahoe (Darwin 25) architecture, bluetoothd offsets, and Skywalk IO80211Controller ABI.
This commit is contained in:
1 parent
820154e54b
commit
a10e097a7e
11 files changed
+262
-135
No files matched your search
@@ -232,24 +232,46 @@ public:
|
||||
virtual UInt32 outputPacket(mbuf_t m, void *param) override;
|
||||
|
||||
// IO80211Controller interface
|
||||
SInt32 handleApple80211Request(unsigned int req_type, int req_val, void* req_data);
|
||||
|
||||
#if __IO80211_TARGET >= 260000
|
||||
// macOS Tahoe 26.x (Darwin 25) Skywalk IO80211Controller overrides
|
||||
virtual bool isCommandProhibited(int command) override;
|
||||
virtual IOReturn handleCardSpecific(IO80211SkywalkInterface *iface, unsigned long req_type, void *req_data, bool isSet) override;
|
||||
virtual UInt32 hardwareOutputQueueDepth(void) override;
|
||||
virtual SInt32 performCountryCodeOperation(IO80211CountryCodeOp op) override;
|
||||
virtual void dataLinkLayerAttachComplete(void) override;
|
||||
virtual SInt32 enableFeature(IO80211FeatureCode code, void *arg) override;
|
||||
virtual IOReturn getDRIVER_VERSION(IO80211SkywalkInterface *iface, apple80211_version_data *vd) override;
|
||||
virtual IOReturn getHARDWARE_VERSION(IO80211SkywalkInterface *iface, apple80211_version_data *vd) override;
|
||||
virtual IOReturn getCARD_CAPABILITIES(IO80211SkywalkInterface *iface, apple80211_capability_data *cap) override;
|
||||
virtual IOReturn getPOWER(IO80211SkywalkInterface *iface, apple80211_power_data *pwr) override;
|
||||
virtual IOReturn setPOWER(IO80211SkywalkInterface *iface, apple80211_power_data *pwr) override;
|
||||
virtual IOReturn getCOUNTRY_CODE(IO80211SkywalkInterface *iface, apple80211_country_code_data *cc) override;
|
||||
virtual IOReturn setCOUNTRY_CODE(IO80211SkywalkInterface *iface, apple80211_country_code_data *cc) override;
|
||||
virtual IOReturn setGET_DEBUG_INFO(IO80211SkywalkInterface *iface, apple80211_debug_command *dbg) override;
|
||||
virtual void* getLogger(void) const override;
|
||||
virtual void* getFaultReporterFromDriver(void) override;
|
||||
#else
|
||||
virtual SInt32 apple80211Request(unsigned int req_type, int req_val, IO80211Interface* iface, void* req_data) override;
|
||||
virtual SInt32 apple80211SkywalkRequest(UInt req_type, int req_val, IO80211SkywalkInterface *iface, void *req_data) override;
|
||||
virtual SInt32 stopDMA() override;
|
||||
virtual UInt32 hardwareOutputQueueDepth(IO80211Interface* iface) override;
|
||||
virtual SInt32 performCountryCodeOperation(IO80211Interface* iface, IO80211CountryCodeOp op) override;
|
||||
virtual SInt32 enableFeature(IO80211FeatureCode code, void* arg) override;
|
||||
|
||||
// Skywalk interface
|
||||
virtual IOReturn enable(IO80211SkywalkInterface *netif) override;
|
||||
virtual IOReturn disable(IO80211SkywalkInterface *netif) override;
|
||||
#endif
|
||||
|
||||
// Compatibilité symboles virtuels IONetworkController sous macOS 15
|
||||
// Compatibilité symboles virtuels IONetworkController sous macOS 15+ / 26+
|
||||
virtual void _RESERVEDIONetworkController2() override {}
|
||||
virtual void _RESERVEDIONetworkController3() override {}
|
||||
virtual void _RESERVEDIONetworkController4() override {}
|
||||
virtual void _RESERVEDIONetworkController5() override {}
|
||||
#if __IO80211_TARGET < 260000
|
||||
virtual void _RESERVEDIONetworkController6() override {}
|
||||
virtual void _RESERVEDIONetworkController7() override {}
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user