zoukankan      html  css  js  c++  java
  • mtk 无线配置文件生效过程

    openwrt 下无线接口的配置文件位于 /etc/config/wirless 中。 启动 /sbin/wifi 脚本后,生效过程如下: (1)通过 uci2dat 工具生成所需要的 .dat文件 (例如: mt7603e.dat ) 一般存放在 /etc/wireless/mt7603e 目录下。 (2)每当接口down 或 up 时,会调用所需的 .dat 文件来进行接口属性的配置。 其中定义了结构体 typedef struct __RT_CMD_INF_UP_DOWN { IN int (*rt28xx_open)(VOID *net_dev); IN int (*rt28xx_close)(VOID *net_dev); } RT_CMD_INF_UP_DOWN; 在虚拟接口 up 或者 down 时来进行实例化。 __inline INT VIRTUAL_IF_UP(VOID *pAd) { RT_CMD_INF_UP_DOWN InfConf = { rt28xx_open, rt28xx_close }; if (RTMP_COM_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_VIRTUAL_INF_UP, 0, &InfConf, 0) != NDIS_STATUS_SUCCESS) return -1; return 0; } __inline VOID VIRTUAL_IF_DOWN(VOID *pAd) { RT_CMD_INF_UP_DOWN InfConf = { rt28xx_open, rt28xx_close }; RTMP_COM_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_VIRTUAL_INF_DOWN, 0, &InfConf, 0); return; } 然后查看 rt28xx_open 函数, 对芯片和其他初始化时 /* Chip & other init */ if (rt28xx_init(pAd, mac, hostname) == FALSE) goto err; 包含了对 AP模式、 Client模式 以及 通常情况下的配置。 /* Initialize pAd->StaCfg, pAd->ApCfg, pAd->CommonCfg to manufacture default*/ if (rtmp_cfg_init(pAd, pHostName) != TRUE) goto err5; 这些配置过程中就包含了读取dat数据的钩子函数: RTMPPreReadParametersHook(pAd); status = RTMPReadParametersHook(pAd); if (status != NDIS_STATUS_SUCCESS) { DBGPRINT_ERR(("RTMPReadParametersHook failed, Status[=0x%08x] ",status)); return FALSE; } 在钩子(回调)函数RTMPReadParametersHook中真正实现读取配置文件的是函数 src = get_dev_profile(pAd); 只有读取到配置文件内容后,才能进行其他的操作,在钩子函数中。 (3)读取配置文件 static UCHAR *get_dev_profile(RTMP_ADAPTER *pAd) { UCHAR *src = NULL; { #ifdef CONFIG_AP_SUPPORT // AP 模式下 IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { src = AP_PROFILE_PATH; } #endif /* CONFIG_AP_SUPPORT */ } return src; } AP_PROFILE_PATH 的宏定义如下: #ifdef CONFIG_AP_SUPPORT #ifdef RTMP_MAC_PCI #if defined(CONFIG_SUPPORT_OPENWRT) #define AP_PROFILE_PATH "/etc/wireless/mt7603e/mt7603e.dat" #else #define AP_PROFILE_PATH "/etc/Wireless/RT2860AP/RT2860AP.dat" #endif #define AP_RTMP_FIRMWARE_FILE_NAME "/etc/Wireless/RT2860AP/RT2860AP.bin" #endif #endif
  • 相关阅读:
    【Leetcode】【Easy】Remove Duplicates from Sorted List
    【Leetcode】【Easy】Pascal's Triangle II
    【Leetcode】【Easy】Pascal's Triangle
    【Leetcode】【Easy】Binary Tree Level Order Traversal II
    【Leetcode】【Easy】Binary Tree Level Order Traversal
    【Leetcode】【Easy】Maximum Depth of Binary Tree
    【Leetcode】【Easy】Minimum Depth of Binary Tree
    【Leetcode】【Easy】Balanced Binary Tree
    【Leetcode】【Easy】Symmetric Tree
    如何使用Action.Invoke()触发一个Storyboard
  • 原文地址:https://www.cnblogs.com/rohens-hbg/p/6595270.html
Copyright © 2011-2022 走看看