首页 > 其他分享 >IPC

IPC

时间:2023-12-29 17:45:45浏览次数:35  
标签:IPC struct int supplicant void wpa cfg80211

1wpa_cli 与 wpa_supplicant 之间通信关键函数:
(1)wpa_cli发送命令到wpa_supplicant
static void wpa_request(struct wpa_ctrl *ctrl, int argc, char *argv[])
-1-> static const struct wpa_cli_cmd wpa_cli_commands[] = {{ "status", wpa_cli_cmd_status, NULL, cli_cmd_flag_none, ...} //支持的命令
-1-2-> 如 static int wpa_cli_cmd_add_network(struct wpa_ctrl *ctrl, int argc, char *argv[]) //以添加网络为例。

(2)wpa_supplicant接收wpa_cli发过来的命令:
ctrl_iface_unix.c 文件:
static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx,void *sock_ctx)
-1-> char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,char *buf, size_t *resp_len)

(3)wpa_supplicant发送URC命令到wpa_cli
static void wpa_supplicant_ctrl_iface_msg_cb(void *ctx, int level,
enum wpa_msg_type type,
const char *txt, size_t len)
static void wpa_supplicant_ctrl_iface_send(struct wpa_supplicant *wpa_s,
const char *ifname, int sock,
struct dl_list *ctrl_dst,
int level, const char *buf,
size_t len,
struct ctrl_iface_priv *priv,
struct ctrl_iface_global_priv *gp) //遍历所有客户端。

2 wpa_supplicant与内核cfg80211通信。
(1)wpa_supplicant 发送netlink消息 到内核
//创建两个netlink套接字。一个用于发送命令;一个用于接收内核的组播事件。
static int wpa_driver_nl80211_init_nl_global(struct nl80211_global *global)

(2)wpa_supplicant接收内核cfg80211事件:
static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx, void *handle)
int process_global_event(struct nl_msg *msg, void *arg)
int process_bss_event(struct nl_msg *msg, void *arg) //特定BSS事件

(3)wpa_supplicant发送netlink消息到内核cfg80211
//以发送NL80211_CMD_SET_KEY命令为例。
static int wpa_driver_nl80211_set_key(struct i802_bss *bss, struct wpa_driver_set_key_params *params)
//构造消息
static struct nl_msg * nl80211_ifindex_msg(struct wpa_driver_nl80211_data *drv, int ifindex, int flags, uint8_t cmd)
//发送消息并取得响应。
int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv,
struct nl_msg *msg,
int (*valid_handler)(struct nl_msg *, void *),
void *valid_data,
int (*ack_handler_custom)(struct nl_msg *, void *),
void *ack_data);

3 cfg80211模块与HDD驱动通信
(1)HDD驱动初始化时注册cfg80211_ops到cfg80211模块。
cfg80211模块EXPORT_SYMBOL很多通用函数。通常HDD上报URC消息到cfg80211模块时调这些函数。

static struct cfg80211_ops wlan_hdd_cfg80211_ops = {
.add_virtual_intf = wlan_hdd_add_virtual_intf,..}

(2)cfg80211模块 发送消息到HDD驱动,调用cfg80211_ops函数。
如 wlan_hdd_cfg80211_start_ap
wlan_hdd_cfg80211_scan
wlan_hdd_cfg80211_connect
wlan_hdd_cfg80211_disconnect

(3)HDD上报 URC 消息到cfg80211模块
HDD可以调用,如注册wiphy_register
AP下有STA连接 cfg80211_new_sta
完整性检查失败报告:cfg80211_michael_mic_failure


4 内核网络设备模块与HDD驱动通信
(1)HDD驱动初始化时注册register_netdevice 网卡到内核网络设备模块。
static const struct net_device_ops wlan_drv_ops = {
.ndo_open = hdd_open,...}
当网络栈有数据传输时,调用net_device_ops里面函数ndo_start_xmit

(2)HDD接收数据
HDD驱动收到数据时,调用内核网络设备模块传递数据到网络栈。
netif_rx
netif_rx_ni
但由于RX阶段,主要在软中断上下文处理。

(3)HDD模块与内核网络设备模块 其他控制类操作。
$(kernel_root)/include/linux/netdevice.h函数是内核网络设备模块核心。
例如HDD调用了netif_tx_stop_all_queues

标签:IPC,struct,int,supplicant,void,wpa,cfg80211
From: https://www.cnblogs.com/huangguanyuan/p/17935408.html

相关文章

  • IpcMain模块
    方法IpcMain模块有以下方法来侦听事件:ipcMain.on(channel,listener)channel stringlistener Functionevent IpcMainEvent...args any[]监听channel,当新消息到达,将通过listener(event,args…)调用listener。......
  • minipcie接口走usb协议
    由于MiniPCIe接口和USB协议之间的转换涉及到硬件设备,因此无法直接通过编写代码来实现。您需要购买一个PCIe到USB适配器并将其连接到计算机上。安装完成后,您可以像使用其他USB设备一样使用它。MiniPCIe接口是一种小型化的PCIe接口,用于连接各种扩展卡。要将MiniPCIe接口转换为USB......
  • 操作系统原理 -- IPC
    引用:https://www.bilibili.com/video/BV1i94y1k7oA?p=54&vd_source=e05f4a55dd5d8e27f74472aa7fd97ace1.IPC(interprocesscommunication):进程间通信2.进程通信:共享存储:共享数据结构是由操作系统已经定义提供的。消息传递: 广播方式与共享存储......
  • 适用于广泛的物联网应用RM500QAEAA-M20-SGASA、EG25GGB-MINIPCIE、EM06ELA-512-SGAS网
    1、RM500QAEAA-M20-SGASA是一款5Gsub-6GHzM.2模块,尺寸为52.0mm×30.0mm×2.3mm,符合3GPPRelease15规范,针对工业和商业物联网及eMBB应用进行了优化。它支持独立(SA)和非独立(NSA)模式,最大下行链路速率为2.5Gbps,最大上行链路速率为900Mbps。RM500QAEAA-M20-SGASA支持Q......
  • AI加持下的双十一:联想全面领跑,热启AIPC元年
    今年双十一最大的感受就是“理性低价”,即少套路+好品质+真低价。你会发现,喧嚣十五年,双十一回归商业本来的逻辑,消费者、企业和平台,都变得越来越理性。除了理性回归,还有一个很明显有变化。根据什么值得买数据显示,今年双十一,GMV(成交总额)前5大品类分别为手机通讯、大家电、电脑整机、生......
  • AI加持下的双十一:联想全面领跑,热启AIPC元年
    今年双十一最大的感受就是“理性低价”,即少套路+好品质+真低价。你会发现,喧嚣十五年,双十一回归商业本来的逻辑,消费者、企业和平台,都变得越来越理性。除了理性回归,还有一个很明显有变化。根据什么值得买数据显示,今年双十一,GMV(成交总额)前5大品类分别为手机通讯、大家电、电脑整机、......
  • Gipcdout.trc文件巨大,导致磁盘空间耗尽
    背景:Exadata上的一套19CRAC环境,发现/u01目录下的一个名为Gipcdout.trc的日志文件,占用了大约100GB的磁盘空间。具体信息如下所示。[root@dm04dbadm05/u01/app/grid/crsdata/dm04dbadm05/output]#ll......-rw-r--r--1root  root  100372142422 Nov  3  1......
  • The Chrome Sandbox Part 2 of 3: The IPC Framework
    Thispostisthesecondpartofa3-partseriesabouttheChromesandbox.Inthefirstpost,IpresentedabasicoverviewoftheChromeprocessarchitectureandpresentedabreakdownoftheattacksurfacesforperformingprivilegeescalations.Thispostc......
  • HarmonyOS跨进程通信—IPC与RPC通信开发指导
    HarmonyOS跨进程通信—IPC与RPC通信开发指导一、IPC与RPC通信概述基本概念IPC(Inter-ProcessCommunication)与RPC(RemoteProcedureCall)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进程通信。需要跨进程通信的原因是因为......
  • 在hadoop虚拟机里面使用hadoop jar运行打包文件,出现Exception in thread "main" org.a
    问题描述更改了JDK版本之后,再次运行又出现了这个错误:问题解决经过查阅相关资料,发现是自己定义的hdfs的路径不太对,本来写的是这样的:然后自己确实不记得配置环境时配置的是多少,就看了看这个文件core.site.xml:catcore-site.xml然后看到这里:使用的端口号是8020,改成跟环境......