1. 程式人生 > >(2)高通AP10.4開發者指南——WLAN(1.2 WLAN軟體架構)

(2)高通AP10.4開發者指南——WLAN(1.2 WLAN軟體架構)

1.2 WLAN軟體架構

WLAN驅動層被封裝成數個部分,每個部分都提供了API,方便使用者定製自己的AP軟體和進行二次開發。

WLAN軟體整體架構說明
圖1-3 WLAN軟體整體架構說明

1.2.1 硬體抽象層(HAL)

硬體抽象層(HAL)是驅動和硬體晶片之間的連線部分。如果有多個晶片同時使用,例如雙AP的形態,則每個晶片都會建立一個HAL例項與之對應,因此採用這樣的設計,能使高通Atheros晶片和其他廠商的產品,在軟體上能更容易的適配到一起。
HAL的程式碼可以分為兩個大塊,1)通用HAL介面,為上層提供API與HAL互動;2)面向指定晶片的HAL模組,主要是支援具體的硬體。目前高通Atheros晶片的HAL,主要有三個分支:AR5212, AR5416, 和AR9300。詳述如下:

模組 描述
AR5212 本模組支援802.11b/g/a模式的legacy裝置。通常,這些裝置具有各自獨立的PHY晶片組來與MAC晶片適配,所以對這些不同的PHY晶片組的支援也包含在本模組中。
AR5416 本模組支援第一、二、三代IEEE 802.11n晶片組,這其中包括:第一代AR5416晶片組(用於具有11n處理能力的PHY晶片),第二代AR91xx和第三代92xx系列晶片組(整合PHY和MAC到一個單一晶片中)。同時,本模組也支援1x1 AR958x晶片組。
AR9300 本模組支援AR93xx/AR958x系列晶片組。這些晶片組採用了先進的射頻設計、新的MAC佇列介面、並支援3空間流的MIMO操作。

抽象出來的HAL轉接層,是儘可能的,面向不同的作業系統(OS)和不同系列的晶片時,進行程式碼複用。因此必須從HAL模組內部去呼叫這些函式,就顯得尤為重要;同時HAL內部也不應該使用一些連結性質的程式碼,因此這裡使用ah_hal_printf函式來代替printk函式,用HDPRINTF巨集代替DPRINTF巨集。

1.2.2 HAL介面層(HAL API)

HAL提供了一系列統一的API,供LAMC層訪問。這些API適用於面向不同晶片的HAL。

1.2.3 底端MAC層 (LMAC)

LMAC層包含Atheros裝置物件(ATH)。ATH層負責管理硬體的輸入佇列資料流,同時也管理著底層的協議,比如Block ACK(BA)處理。之所以設計LMAC層,是因為有Atheros硬體架構需要適配,而UMAC則更接近802.11協議的實現。
LMAC主要提供以下功能,並由UMAC和OSIF層控制:

  • 整合了legacy和11n晶片組的傳輸、接收路徑,包括緩衝區和佇列的處理。
  • 速率控制、DFS、頻段掃描。
  • 高階11n MAC特性如幀聚合(frame aggregation)、縮短幀間間隙(RIFS)、多路收發節電技術(MIMO power save)等。
  • 802.11網路節能和裝置電源狀態(D0-D3)管理。
  • Beacon幀的生成和時間同步(TSF)管理。
  • 支援無線喚醒(Wake-On-Wireless)。
  • RfKill、自定義LED和GPIO演算法。
  • 提供支援IQUE, 無線聲傳(VoW), 智慧天線(Smart Antenna), 傳輸波束成形技術(TxBF)等功能的開關。

1.2.4 LMAC介面層(LMAC API)

LMAC API層為UMAC層提一些標準化的API。這樣能方便使用者替換自己的UMAC層。因此從設計角度,應避免在UMAC層直接使用LMAC的資料結構,所以最好使用這些API來訪問。

1.2.5 上端MAC層 (UMAC)

Upper MAC重要實現802.11協議的處理,併為OS介面層提供API。其主要功能有以下幾點:

  • AP狀態機
  • 連線狀態機和節點管理
  • MAC子層管理實體(MLME)服務
  • 一些基本功能比如:掃描(scanning),加密(encryption),電源管理(power management),域管理(regulatory domain),資源管理(resource management)等。
  • 與許多協議相關的特定功能如:P2P,通道直接鏈路建立(TDLS),WMM-AC,無線資源管理(RRM)等。
  • 支援一些集中控制式的工作模式如WDS和EXTAP等。
  • 提供支援訪問控制列表(ACL),自選通道(ACS),IQUE,無線聲傳(VoW),智慧天線(Smart Antenna),傳輸波束成形技術(TxBF)等功能的開關。

1.2.6 WLAN介面層(WLAN API)

這一層是UMAC層向OSIF層提供的介面層。OSIF應當使用這些API來訪問UMAC的資料結構。

1.2.7 系統介面層 (OSIF)

系統介面層是系統適配的模組,為WLAN驅動提供網路協議棧介面和應用向的介面。這一層使用UMAC提供的API來完成其提供的功能。每個系統都應該適配自己的介面層。

1.2.8 高通驅動架構層(QDF)

這部分程式碼,提供了一整套驅動相關的介面,方便適配不同的作業系統。這是一個抽象層,由驅動呼叫,提供諸如建立timer、tasklet等功能。這個抽象層可以靈活的修改去適配不同的作業系統。本文件使用的作業系統是Linux 2.6。
任何硬體相關的和系統相關的,不屬於OSIF層的內容,應當放到這一層(QDF)。另外,如果擴充套件了一些新的介面,也要確保這些函式包含在QDF層的檔案中。

1.2.9 Atheros服務架構層 (ASF)

這一部分的程式碼,提供了一些列基本服務相關的介面,方便對不同作業系統的適配。這一層提供了一些基本服務的介面,如記憶體相關介面、debug相關介面等。這個抽象層可以靈活的修改去適配不同的作業系統。本文件使用的作業系統是Linux 2.6。

1.2.10 WLAN應用層(WLAN Application)

Wireless LAN應用層執行在使用者空間,其包括以下內容:

  • Wireless工具:用於WLAN驅動的配置
  • apcfg:AP平臺的配置檔案
  • hostapd:AP模式下的802.1X/WPA/WPA2/EAP鑑權,以及WPS。
  • wpa_supplicant:STA模式下的802.1X/WPA/WPA2/EAP鑑權,以及WPS。
  • radartool:radar檢測的測試/除錯工具。
  • Spectral守護程序。
  • spectraltool:配置/除錯spectral掃描的工具。
  • athssd:一個用於匯出Spectral掃描和分析結果的工具,還可以輸出干擾資訊。
  • pktlog:採集WLAN MAC收發包的debug資訊。

1.2.11 統一WLAN軟體架構(Unified Software WLAN Architecture)

這一章節主要是在AP和STA模式下,對高吞吐量(VHT)場景的軟體結構,有一個更詳細的介紹。這些統一提出的棧一樣的分層,支援所有的QCA軟體結構,不論使用者採用何種方式整合他的AP軟體系統(direct attach模式或者Full/Partial offload模式)。

1.2.11.1 Offload模式分層(Offload stack)

Offload模式結構圖
圖 1-4 Offload模式結構圖

  • OS介面層(OS Interface):為WLAN驅動提供網路棧和應用向的介面。
  • WSI層:WLAN Service API,由UMAC封裝,供OSIF層呼叫(避免直接訪問UMAC的資料結構)。
  • UMAC層:多數802.11協議在這一層實現(AP狀態機,連線狀態機,MLME服務)
  • 目標UMAC:處理低級別的MAC功能。管理資料流(Tx和Rx)到硬體的輸入佇列中,buffer管理,速率控制,Aggregation,MIMO節能。
  • WAL層:對不同MAC的高級別的功能的抽象
  • HAL層:硬體抽象層,實現底層的硬體功能,如建立descriptor,建立加密key,建立channel等。

Unified UMAC支援項

  • 新的結構基於間接化的函式指標的動態連結,同時支援direct attach和offload解決方案。
  • 在direct attach方案中,使用的是舊有的IF_LMAC函式指標。而在offload結構中,使用的是OL_WMI函式指標。
  • UMAC封裝的功能(函式)可以根據需要進行開啟或關閉,不論在主機端執行還是在目標端執行。

基於當前這種模組化的架構,新的offload WMI層可以很容易的繼承進去。

1.2.11.2 11AC offload host-target interface

Host與target之間通過這些已經劃分好的各個軟體介面層,協作通訊。本章節介紹的就是這些軟體介面層

Host-to-Target interface diagram
Figure 1-5 Host-to-Target interface diagram

Host介面層 (HIF)
這一層對host和target之前的匯流排介面進行抽象,並提供了一套二者可以互相通訊的機制。

Bootloader訊息介面層(BMI)
在初始化過程中,host可以使用Bootloader訊息介面層(BMI)提供的一些功能,比如獲取target的版本資訊;從target的記憶體中上傳(或讀取)一些程式碼和資料;讀/寫target暫存器;執行target上指定地址的程式等。BMI層可以下載指定的應用程式、測試程式還有補丁到程式碼和資料中,有時候也會設定一些target應用程式中的全域性變數。

Host Target通訊層 (HTC):
HTC層用於WMI和HTT二者進行傳送、接收一些控制類/資料類訊息,這些訊息的源頭的目的是target和host系統的11ac裝置之間的紐帶部分。

無線訊息介面層(WMI)
Host與target之間的控制通路由WMI介面來完成。一些預先定義好的WMI訊息,用於host WLAN與target WLAN之間互動。

Host Target傳輸層(HTT)
Host與target之間的資料通路由WMI介面來完成。一些預先定義好的HTT訊息,用於host WLAN與target WLAN之間互動。

To be continue…