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

相关推荐
Yang96112 小时前
多功能一体化,成都鼎讯 LDMN-JM1 满足石油煤矿设备检定与训练需求
网络·能源
IP老炮不瞎唠2 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
睡不醒男孩0308233 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
dog2503 小时前
网络长尾延时的重尾本质
开发语言·网络·php
戴西软件3 小时前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
6v6-博客3 小时前
u盘出现图片、文件,文件夹全部隐藏怎么办
网络
hj2862514 小时前
Linux 网络服务综合笔记(概念 + 命令 + 实操案例)2
linux·运维·网络
Soari5 小时前
EtherCAT Master Stack —— 面向工业实时控制的开源 EtherCAT 主站协议栈
驱动开发
A_humble_scholar5 小时前
Linux(七)调度器:从硬件矛盾到进程切换的底层逻辑
linux·服务器·网络