MT7916 BA流程

Originator BA会话建立流程

ba_ori_session_start

└─ ba_ori_session_setup

└─ ba_resrc_ori_prep

├─ ba_alloc_ori_entry

└─ RTMPSetTimer (→ ba_ori_session_setup_timeout)

ba_ori_session_setup_timeout (定时器回调)

└─ MlmeEnqueueWithWdev → 发送ADDBA请求

收到ADDBA响应后:

peer_addba_rsp_action

└─ ba_resrc_ori_add

├─ RTMP_ADD_BA_SESSION_TO_ASIC

└─ RTMPSetTimer (可选)

Recipient BA会话建立流程

peer_addba_req_action

├─ cal_rec_ba_wsize

├─ ba_resrc_rec_add

│ ├─ ba_alloc_rec_entry

│ ├─ ba_refresh_reordering_mpdus (清空已有队列)

│ └─ RTMP_ADD_BA_SESSION_TO_ASIC

└─ mlme_send_addba_resp (发送ADDBA响应)

接收数据重排序流程

ba_reorder

├─ amsdu_sanity (检查AMSDU连续性)

├─ ba_flush_reordering_timeout_mpdus (超时刷新)

├─ 根据序列号判断:

│ ├─ SEQ_STEPONE → indicate_rx_pkt (直接上交)

│ ├─ 重复或旧包 → RELEASE_NDIS_PACKET (丢弃)

│ ├─ 窗口内乱序 → ba_enqueue_reordering_packet

│ └─ 超过窗口 → ba_indicate... + goto ba_reorder_check

└─ 更新状态

ba_enqueue_reordering_packet

├─ ba_mpdu_blk_alloc

├─ convert_reordering_packet_to_preAMSDU_or_802_3_packet

└─ ba_reordering_mpdu_insertsorted

ba_indicate_reordering_mpdus_in_order

└─ announce_ba_reorder_pkt → 上交上层

BA会话拆除

ba_ori_session_tear_down

└─ ba_resrc_ori_del

├─ RTMP_DEL_BA_SESSION_FROM_ASIC

└─ ba_free_ori_entry

ba_rec_session_tear_down

└─ ba_resrc_rec_del

├─ RTMP_DEL_BA_SESSION_FROM_ASIC

├─ ba_free_rec_entry

└─ ba_refresh_reordering_mpdus (清空队列)

peer_delba_action

├─ (Initiator=ORIGINATOR) → ba_rec_session_tear_down

└─ (Initiator=RECIPIENT) → ba_ori_session_tear_down

相关推荐
花间相见7 小时前
【计算基础|网络14】网络层:IP、ICMP 与 ping
网络·网络协议·tcp/ip
盛世宏博智慧档案8 小时前
智慧档案平台驱动开发实战:恒湿消毒净化一体机 Modbus-RTU 协议解析
驱动开发·恒湿机
半杯咖啡半行码8 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络
Herbert_hwt9 小时前
OpenSpec 实战演练:从“猜数字”到“暗黑模式”的规范驱动开发之旅
驱动开发
智能直播9 小时前
RK3528 V4L2 框架 UVC 接口自动获取 H.264 / MJPEG / YUYV 格式:从内核采集到硬解分发
java·网络·实时音视频·视频编解码·h.264
睿智の男孩9 小时前
MIG IP核对DDR3的输出时序分析记录
网络·网络协议·tcp/ip
艾芯微科技9 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
码农小旋风9 小时前
SDD规范驱动开发:AI时代的软件工程新范式
人工智能·驱动开发·软件工程
2401_8685347810 小时前
数据交换方式
服务器·网络