wmaster0是linux無線網路裝置的主介面,根據官方說明,從linux2.6.32開始刪除了這個介面,所以從linux2.6.32版本開始不會再看到這個介面,我們比較熟悉的是類似於waln0這種介面,因為簡單來說,乙個wlanx(0,1,2,…)介面就代表一張無線網絡卡。但是,在linux2.6.31以前,所有的傳送操作(還有其他一些操作)都要通過wmaster0來實現,下面以ath5k驅動程式為例簡單分析一些傳送操作這個過程。
首先,從ieee80211_register_hw()函式看看wmaster0的註冊過程:
1 …2 mdev = alloc_netdev_mq(sizeof(struct ieee80211_master_priv),
3 "wmaster%d", ieee80211_master_setup,
4 hw->queues);
5 …
通過alloc_netdev_mq()函式來註冊wmaster0介面,其中ieee80211_master_setup是函式名,其原型如下所示:
1 …2 static const struct net_device_ops ieee80211_master_ops = ;
9 10 static void ieee80211_master_setup(struct net_device *mdev)
11 18 …
其中ieee80211_master_start_xmit就是實現真正傳送操作的函式,從ieee80211_register_hw()函式繼續往下看:
1 …2 if (local->hw.wiphy->inte***ce_modes & bit(nl80211_iftype_station)) ;
11 …
12 static void ieee80211_if_setup(struct net_device *dev)
13 19 …
其中,dev->netdev_ops = &ieee80211_dataif_ops這是關鍵,下面看它裡面的.ndo_start_xmit = ieee80211_subif_start_xmit成員:
1 int ieee80211_subif_start_xmit(struct sk_buff *skb,2 struct net_device *dev)
3
第6行,medv就是wmaster0介面,第10行,呼叫了dev_queue_xmit()函式,這個函式是網路層進入資料鏈路層的關鍵函式:
1 int dev_queue_xmit(struct sk_buff *skb)2
到這裡可以看出,傳送資料時,上層使用wlan0介面,到了資料鏈路層以下開始使用wmaster0這個介面實現傳送操作。
NULL0介面的作用
null 口是個偽介面 pseudo inte ce 不能配位址,也不能被封裝,它總是 up 的,但是從來不 或者接受任何通訊量,對於所有發到該介面的通訊量都直接丟棄。不管是手動彙總還是自動彙總彙總的介面都是空介面 null0 eigrp 中的 null0 介面 指向null0 因為這個 路由是拿來...
物件導向 8 介面與介面的實現
二 介面的作用?三 介面的相關語法 四 介面的向上造型 總結 1 介面的語法 2 什麼情況下用介面?3 介面的好處 本篇文章主要講解介面的語法,什麼情況下用介面?讀者如果發現有什麼理解錯的地方指正一下,我會第一時間來改正並重新學習,謝謝大家 1 是一種資料型別 引用資料型別 2 由inte ce定義...
xp登陸介面的修改
很有意思的乙個主題,但是當我解除安裝這個主題之後,登陸介面就不再出現歡迎 螢幕了。在控制面板裡改了多少回也沒有改過來。最後找到這麼個方法。到登錄檔裡面,找到hkey local machine software microsoft windows nt currentversion winlogon...