PKG
PKG
protonqt
There is nothing magical about the .deb format, no. It's just a file format, not
unlike .zip. Anyone can make one.
It's actually much more dangerous to install a random .deb than it to install a
random .zip, because a .deb can contain scripts that automatically run on
installation *and on removal!* These scripts are run *as root!*
You can, however, check the contents of a .deb fairly easily. (It's not a
complicated format.) First, `ar x foo.deb` will extract the main pieces. The result
should be three files, two of which will be compressed tar files. The one named
`control.tar.xz` will have the scripts that get run, so you can inspect those
manually. The one named `data.tar.xz` contains the files that get installed. (The
final file, `debian_binary`, isn't really important, but it's a simple text file,
and you can inspect it as well.)
...............................................................................
sudo dpkg -i ax300-wifi-adapter-linux-driver.deb
[sudo] password for imad:
Selecting previously unselected package ax300-wifi-adapter-linux-driver.
(Reading database ... 585380 files and directories currently installed.)
Preparing to unpack ax300-wifi-adapter-linux-driver.deb ...
Install aic8800 wifi driver!!!!!
Unpacking ax300-wifi-adapter-linux-driver (1.0.7) ...
Setting up ax300-wifi-adapter-linux-driver (1.0.7) ...
udev done
device not exist
cp fw done
x86_64
make -C /lib/modules/6.8.0-41-generic/build
M=/usr/src/tenda/aic8800/drivers/aic8800 ARCH=x86_64 CROSS_COMPILE= modules
make[1]: Entering directory '/usr/src/linux-headers-6.8.0-41-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0
You are using: gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0
x86_64
make[3]: warning: -j8 forced in makefile: resetting jobserver mode.
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_bluetooth_main.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_usb.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_utils.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_txrxif.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_cmds.o
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_usb.c:1342:5: warning: no
previous prototype for ‘aicfw_download_fw_8800’ [-Wmissing-prototypes]
1342 | int aicfw_download_fw_8800(struct aic_usb_dev *usb_dev){
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:810:6: warning:
no previous prototype for ‘get_fw_path’ [-Wmissing-prototypes]
810 | void get_fw_path(char* fw_path){
| ^~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:818:6: warning:
no previous prototype for ‘set_testmode’ [-Wmissing-prototypes]
818 | void set_testmode(int val){
| ^~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:822:5: warning:
no previous prototype for ‘get_testmode’ [-Wmissing-prototypes]
822 | int get_testmode(void){
| ^~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:826:5: warning:
no previous prototype for ‘get_hardware_info’ [-Wmissing-prototypes]
826 | int get_hardware_info(void){
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:831:5: warning:
no previous prototype for ‘get_adap_test’ [-Wmissing-prototypes]
831 | int get_adap_test(void){
| ^~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_usb.c:1566:5: warning: no
previous prototype for ‘aicfw_download_fw’ [-Wmissing-prototypes]
1566 | int aicfw_download_fw(struct aic_usb_dev *usb_dev)
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:846:6: warning:
no previous prototype for ‘get_userconfig_xtal_cap’ [-Wmissing-prototypes]
846 | void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap)
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:859:6: warning:
no previous prototype for ‘get_userconfig_txpwr_idx’ [-Wmissing-prototypes]
859 | void get_userconfig_txpwr_idx(txpwr_idx_conf_t *txpwr_idx){
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:886:6: warning:
no previous prototype for ‘get_userconfig_txpwr_ofst’ [-Wmissing-prototypes]
886 | void get_userconfig_txpwr_ofst(txpwr_ofst_conf_t *txpwr_ofst){
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:909:6: warning:
no previous prototype for ‘rwnx_plat_userconfig_set_value’ [-Wmissing-prototypes]
909 | void rwnx_plat_userconfig_set_value(char *command, char *value){
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth.c:957:6: warning:
no previous prototype for ‘rwnx_plat_userconfig_parsing’ [-Wmissing-prototypes]
957 | void rwnx_plat_userconfig_parsing(char *buffer, int size){
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_utils.c:23:5: warning: no
previous prototype for ‘rwnx_init_aic’ [-Wmissing-prototypes]
23 | int rwnx_init_aic(struct rwnx_hw *rwnx_hw)
| ^~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c:170:18: warning:
no previous prototype for ‘rwnx_cmd_malloc’ [-Wmissing-prototypes]
170 | struct rwnx_cmd *rwnx_cmd_malloc(void){
| ^~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c:199:6: warning:
no previous prototype for ‘rwnx_cmd_free’ [-Wmissing-prototypes]
199 | void rwnx_cmd_free(struct rwnx_cmd *cmd){
| ^~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c:209:5: warning:
no previous prototype for ‘rwnx_init_cmd_array’ [-Wmissing-prototypes]
209 | int rwnx_init_cmd_array(void){
| ^~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c:224:6: warning:
no previous prototype for ‘rwnx_free_cmd_array’ [-Wmissing-prototypes]
224 | void rwnx_free_cmd_array(void){
| ^~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_cmds.c:300:6: warning: no
previous prototype for ‘cmd_mgr_task_process’ [-Wmissing-prototypes]
300 | void cmd_mgr_task_process(struct work_struct *work)
| ^~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c:1631:6: warning:
no previous prototype for ‘rwnx_rx_handle_msg’ [-Wmissing-prototypes]
1631 | void rwnx_rx_handle_msg(struct rwnx_hw *rwnx_hw, struct ipc_e2a_msg *msg)
| ^~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c:1643:6: warning:
no previous prototype for ‘rwnx_rx_handle_print’ [-Wmissing-prototypes]
1643 | void rwnx_rx_handle_print(struct rwnx_hw *rwnx_hw, u8 *msg, u32 len)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_irqs.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_compat_8800d80.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_cfgfile.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_strs.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/md5.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_irqs.c:21:13: warning: no
previous prototype for ‘rwnx_irq_hdlr’ [-Wmissing-prototypes]
21 | irqreturn_t rwnx_irq_hdlr(int irq, void *dev_id)
| ^~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_irqs.c:34:6: warning: no
previous prototype for ‘rwnx_task’ [-Wmissing-prototypes]
34 | void rwnx_task(unsigned long data)
| ^~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_tx.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_txq_prealloc.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_txq.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.o
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_txq_prealloc.c:13:7:
warning: no previous prototype for ‘aicwf_prealloc_txq_alloc’ [-Wmissing-
prototypes]
13 | void *aicwf_prealloc_txq_alloc(size_t size)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aicwf_txq_prealloc.c:50:6:
warning: no previous prototype for ‘aicwf_prealloc_txq_free’ [-Wmissing-prototypes]
50 | void aicwf_prealloc_txq_free(void)
| ^~~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_mesh.o
LD [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_load_fw.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:330:6: warning: no
previous prototype for ‘rwnx_rx_data_skb_resend’ [-Wmissing-prototypes]
330 | void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif
*rwnx_vif,
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:1382:5: warning: no
previous prototype for ‘reord_flush_tid’ [-Wmissing-prototypes]
1382 | int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8
tid)
| ^~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:1600:6: warning: no
previous prototype for ‘reord_rxframes_process’ [-Wmissing-prototypes]
1600 | bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, struct
reord_ctrl *preorder_ctrl, int bforced)
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:1636:6: warning: no
previous prototype for ‘reord_rxframes_ind’ [-Wmissing-prototypes]
1636 | void reord_rxframes_ind(struct aicwf_rx_priv *rx_priv,
| ^~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:1720:5: warning: no
previous prototype for ‘reord_process_unit’ [-Wmissing-prototypes]
1720 | int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb,
u16 seq_num, u8 tid, u8 forward)
| ^~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_rx.c:1923:6: warning: no
previous prototype for ‘remove_sec_hdr_mgmt_frame’ [-Wmissing-prototypes]
1923 | void remove_sec_hdr_mgmt_frame(struct hw_rxhdr *hw_rxhdr,struct sk_buff
*skb)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_txq.c:154:6: warning: no
previous prototype for ‘rwnx_txq_flush’ [-Wmissing-prototypes]
154 | void rwnx_txq_flush(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq)
| ^~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c:268:6:
warning: no previous prototype for ‘rwnx_get_countrycode_channels’ [-Wmissing-
prototypes]
268 | void rwnx_get_countrycode_channels(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c:327:29:
warning: no previous prototype for ‘getRegdomainFromRwnxDBIndex’ [-Wmissing-
prototypes]
327 | struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy
*wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.c:347:29:
warning: no previous prototype for ‘getRegdomainFromRwnxDB’ [-Wmissing-prototypes]
347 | struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_pci.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:541:6: warning: no
previous prototype for ‘rwnx_skb_align_8bytes’ [-Wmissing-prototypes]
541 | void rwnx_skb_align_8bytes(struct sk_buff *skb){
| ^~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:608:6: warning: no
previous prototype for ‘rwnx_frame_parser’ [-Wmissing-prototypes]
608 | void rwnx_frame_parser(char* tag, char* data, unsigned long len){
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:1145:6: warning: no
previous prototype for ‘rwnx_update_mesh_power_mode’ [-Wmissing-prototypes]
1145 | void rwnx_update_mesh_power_mode(struct rwnx_vif *vif)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:1779:14: warning:
no previous prototype for ‘command_strtoul’ [-Wmissing-prototypes]
1779 | unsigned int command_strtoul(const char *cp, char **endp, unsigned int
base)
| ^~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:1813:5: warning: no
previous prototype for ‘handle_private_cmd’ [-Wmissing-prototypes]
1813 | int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len)
| ^~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:2726:5: warning: no
previous prototype for ‘android_priv_cmd’ [-Wmissing-prototypes]
2726 | int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
| ^~~~~~~~~~~~~~~~
In file included from
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_defs.h:32,
from
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:25:
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_compat.h:397:5: warning:
no previous prototype for ‘rwnx_select_queue’ [-Wmissing-prototypes]
397 | rwnx_select_queue(dev, skb, sb_dev)
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:2944:5: note: in
expansion of macro ‘rwnx_select_queue’
2944 | u16 rwnx_select_queue(struct net_device *dev, struct sk_buff *skb,
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:3234:6: warning: no
previous prototype for ‘aicwf_p2p_alive_timeout’ [-Wmissing-prototypes]
3234 | void aicwf_p2p_alive_timeout(struct timer_list *t)
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:3760:5: warning: no
previous prototype for ‘rwnx_send_check_p2p’ [-Wmissing-prototypes]
3760 | int rwnx_send_check_p2p(struct cfg80211_scan_request *param){
| ^~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:4596:6: warning: no
previous prototype for ‘apm_staloss_work_process’ [-Wmissing-prototypes]
4596 | void apm_staloss_work_process(struct work_struct *work)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:4710:6: warning: no
previous prototype for ‘apm_probe_sta_work_process’ [-Wmissing-prototypes]
4710 | void apm_probe_sta_work_process(struct work_struct *work)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:5194:5: warning: no
previous prototype for ‘rwnx_cfg80211_probe_client’ [-Wmissing-prototypes]
5194 | int rwnx_cfg80211_probe_client(struct wiphy *wiphy, struct net_device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_dini.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:5231:6: warning: no
previous prototype for ‘rwnx_cfg80211_mgmt_frame_register’ [-Wmissing-prototypes]
5231 | void rwnx_cfg80211_mgmt_frame_register(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:5880:5: warning: no
previous prototype for ‘rwnx_cfg80211_channel_switch’ [-Wmissing-prototypes]
5880 | int rwnx_cfg80211_channel_switch(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:6216:5: warning: no
previous prototype for ‘rwnx_cfg80211_change_bss’ [-Wmissing-prototypes]
6216 | int rwnx_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:9168:5: warning: no
previous prototype for ‘rwnx_ic_system_init’ [-Wmissing-prototypes]
9168 | int rwnx_ic_system_init(struct rwnx_hw *rwnx_hw){
| ^~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:458:5: warning:
no previous prototype for ‘rwnx_request_firmware_common’ [-Wmissing-prototypes]
458 | int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, u32** buffer,
const char *filename)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:469:6: warning:
no previous prototype for ‘rwnx_release_firmware_common’ [-Wmissing-prototypes]
469 | void rwnx_release_firmware_common(u32** buffer)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:486:5: warning:
no previous prototype for ‘rwnx_plat_bin_fw_upload_2’ [-Wmissing-prototypes]
486 | int rwnx_plat_bin_fw_upload_2(struct rwnx_hw *rwnx_hw, u32 fw_addr,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:1631:5:
warning: no previous prototype for ‘rwnx_atoi’ [-Wmissing-prototypes]
1631 | int rwnx_atoi(char *value)
| ^~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_main.c:9198:5: warning: no
previous prototype for ‘rwnx_ic_rf_init’ [-Wmissing-prototypes]
9198 | int rwnx_ic_rf_init(struct rwnx_hw *rwnx_hw){
| ^~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:1854:6:
warning: no previous prototype for ‘get_userconfig_xtal_cap’ [-Wmissing-prototypes]
1854 | void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap)
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:1863:6:
warning: no previous prototype for ‘rwnx_plat_nvram_set_value’ [-Wmissing-
prototypes]
1863 | void rwnx_plat_nvram_set_value(char *command, char *value)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_platform.c:2146:6:
warning: no previous prototype for ‘rwnx_plat_userconfig_parsing’ [-Wmissing-
prototypes]
2146 | void rwnx_plat_userconfig_parsing(char *buffer, int size)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_v7.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/ipc_host.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_tdls.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/regdb.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_pci.c:85:5: warning: no
previous prototype for ‘rwnx_pci_register_drv’ [-Wmissing-prototypes]
85 | int rwnx_pci_register_drv(void)
| ^~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_pci.c:90:6: warning: no
previous prototype for ‘rwnx_pci_unregister_drv’ [-Wmissing-prototypes]
90 | void rwnx_pci_unregister_drv(void)
| ^~~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/md5.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic_vendor.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_dini.c:105:5: warning: no
previous prototype for ‘rwnx_cfpga_irq_enable’ [-Wmissing-prototypes]
105 | int rwnx_cfpga_irq_enable(struct rwnx_hw *rwnx_hw)
| ^~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_dini.c:129:5: warning: no
previous prototype for ‘rwnx_cfpga_irq_disable’ [-Wmissing-prototypes]
129 | int rwnx_cfpga_irq_disable(struct rwnx_hw *rwnx_hw)
| ^~~~~~~~~~~~~~~~~~~~~~
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.o
CC [M]
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_radar.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/usb_host.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_usb.o
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic_vendor.c:32:5: warning: no
previous prototype for ‘aic_dev_start_mkeep_alive’ [-Wmissing-prototypes]
32 | int aic_dev_start_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif
*rwnx_vif,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic_vendor.c:60:5: warning: no
previous prototype for ‘aic_dev_stop_mkeep_alive’ [-Wmissing-prototypes]
60 | int aic_dev_stop_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif
*rwnx_vif, u8 mkeep_alive_id)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic_vendor.c:904:5: warning: no
previous prototype for ‘aicwf_vendor_init’ [-Wmissing-prototypes]
904 | int aicwf_vendor_init(struct wiphy *wiphy)
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c:15:5:
warning: no previous prototype for ‘aicwf_set_rf_config_8800d80’ [-Wmissing-
prototypes]
15 | int aicwf_set_rf_config_8800d80(struct rwnx_hw *rwnx_hw, struct
mm_set_rf_calib_cfm *cfm)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c:34:9:
warning: no previous prototype for ‘rwnx_plat_userconfig_load_8800d80’ [-Wmissing-
prototypes]
34 | int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw){
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/rwnx_radar.c:900:22: warning:
no previous prototype for ‘pri_detector_init’ [-Wmissing-prototypes]
900 | struct pri_detector *pri_detector_init(struct dfs_pattern_detector *dpd,
| ^~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/usb_host.c:35:30: warning: no
previous prototype for ‘aicwf_usb_host_txdesc_get’ [-Wmissing-prototypes]
35 | volatile struct txdesc_host *aicwf_usb_host_txdesc_get(struct
usb_host_env_tag *env, const int queue_idx)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_usb.c:155:6: warning: no
previous prototype for ‘rwnx_stop_sta_all_queues’ [-Wmissing-prototypes]
155 | void rwnx_stop_sta_all_queues(struct rwnx_sta *sta, struct rwnx_hw
*rwnx_hw)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_usb.c:165:6: warning: no
previous prototype for ‘rwnx_wake_sta_all_queues’ [-Wmissing-prototypes]
165 | void rwnx_wake_sta_all_queues(struct rwnx_sta *sta, struct rwnx_hw
*rwnx_hw)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aicwf_usb.c:1679:6: warning: no
previous prototype for ‘aicwf_usb_cancel_all_urbs’ [-Wmissing-prototypes]
1679 | void aicwf_usb_cancel_all_urbs(struct aic_usb_dev *usb_dev){
| ^~~~~~~~~~~~~~~~~~~~~~~~~
LD [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic8800_fdrv.o
x86_64
make[3]: warning: -j8 forced in makefile: resetting jobserver mode.
MODPOST /usr/src/tenda/aic8800/drivers/aic8800/Module.symvers
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_load_fw.mod.o
CC [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic8800_fdrv.mod.o
LD [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_load_fw.ko
LD [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko
BTF [M] /usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_load_fw.ko
Skipping BTF generation for
/usr/src/tenda/aic8800/drivers/aic8800/aic_load_fw/aic_load_fw.ko due to
unavailability of vmlinux
BTF [M] /usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko
Skipping BTF generation for
/usr/src/tenda/aic8800/drivers/aic8800/aic8800_fdrv/aic8800_fdrv.ko due to
unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-6.8.0-41-generic'
x86_64
mkdir -p /lib/modules/6.8.0-41-generic/kernel/drivers/net/wireless/aic8800
install -p -m 644 aic_load_fw/aic_load_fw.ko
/lib/modules/6.8.0-41-generic/kernel/drivers/net/wireless/aic8800/
install -p -m 644 aic8800_fdrv/aic8800_fdrv.ko
/lib/modules/6.8.0-41-generic/kernel/drivers/net/wireless/aic8800/
/sbin/depmod -a 6.8.0-41-generic
insmod done
gcc -c wifi_test.c -o wifi_test.o
gcc wifi_test.o -o wifi_test
gcc -c bt_test.c -o bt_test.o
gcc bt_test.o -lpthread -o bt_test
sudo cp wifi_test /sbin
sudo cp bt_test /sbin
Install aic8800 wifi driver successful!!!!!