To-do list: * Correct the coding style according to Linux guidelines; please read the document at https://www.kernel.org/doc/html/latest/process/coding-style.html. * Remove unnecessary debugging/printing macros; for those that are still needed use the proper kernel API (pr_debug(), dev_dbg(), netdev_dbg()). * Remove dead code such as unusued functions, variables, fields, etc.. * Use in-kernel API and remove unnecessary wrappers where possible. * Fix bugs due to code that sleeps in atomic context. * Remove the HAL layer and migrate its functionality into the relevant parts of the driver. * Switch to use LIB80211. * Switch to use MAC80211. * Switch to use CFG80211. * Improve the error handling of various functions, particularly those that use existing kernel APIs.