- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!ログ
*printk
printk(KERN_INFO "")
*dmesgコマンド
//一覧
dmesg
//出力後、ログ削除
sudo dmesg -c
!メイン処理系
*ieee80211_debug.c
**main.c
メッセージ処理をしているので、名前の通りデバッグに使えそう?
!初期化系
*ieee80211_proto_attach
*ieee80211_aclator_register
*ieee80211_fix_rate
*ieee80211_proto.c
*ieee80211_reset_erp
*ieee80211_set_shortslottime
*ieee80211_rateset basic11g
*ieee80211_init
*ieee80211_open
*ieee80211_start_running
*ieee80211_stop
*ieee80211_tx_timeout
*ieee80211_newstate
!入出力
*ieee80211_ioctl.c
**
!通信中
:通信時に呼ばれるもの:
,関数名,タイミング,格納デバイス,備考
,ieee80211_parent_queue_xmin,パケット送信毎,ieee80211_vap,
,ieee80211_input,パケット受信時,ieee80211_vap,
,if_ath.c,パケット受信時,ath_softc,ieee80211_inputより遥かに高頻度に呼ばれる、こっちの方がレイヤが下?階層的にはath_softc->ieee80211_vap。
*いずれもパケットの送受信カウントを更新している場所
:その他特定条件で呼ばれるもの:
,関数名,タイミング,備考
,IEEE80211_DISCARD_MAC,,パケ落ち?ただし定義部分がなし
,accept_data_frame,,パケット落ちを判定できるかも?
:ログとして使えるパラメータ:
*net_device_stats構造体の中身
,変数名,型,備考
,tx_packets,unsigned long int,送信数
,tx_bytes,unsigned long int,送信量
,rx_packets,unsigned long int,受信数
,rx_bytes,unsigned long int,受信量
,rx_errors,unsigned long int,エラー数(パケ落ち数?未検証)
*ieee80211_stats構造体の中身
,変数名,型,備考
,is_rx_mgtdiscard,unsigned long int,パケ落ち数?(未検証)
:マルチキャスト関連:
*関係ありそうな関数・パラメータ・ファイル
**IEEE80211_IS_MULTICAST : アドレスを引数にして判定
**IEEE80211_M_STA :
**PACKET_MULTICAST :
**ieee80211.h : パケットのフレームなどの定義。rts/ctsのフレームもここ。
**ath_hal_setuptxdesc : rts/cts dulation
*IFF_MULTICASTがある場所
**ieee80211_input.c
*IEEE80211_IS_MULTICASTがある場所
**ieee80211_input.c
**ieee80211_node.c
***ieee80211_find_txnode : destination address
*IEEE80211_M_STAがある場所
**ieee80211_input.c
**ieee80211_wireless.c
**ieee80211_output.c
**ieee80211_scan_sta.c
**ieee80211_node.c
**ieee80211.c : mulicast rate
**if_ath.c
*multicastっぽいところ
ieee80211_crypto.c
if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) {
skb = ieee80211_defrag(ni, skb, hdrspace);
if (skb == NULL) {
/* Fragment dropped or frame not complete yet */
goto out;
}
}
!!MAC
*ieee80211_input.c
**IEEE80211_NOTE_MAC()
!!パケット
,ieee80211.h
,ieee80211_frame,generic definitions for IEEE 802.11 frames
,ieee80211_qosframe,
,ieee80211_frame_addr4,
,ieee80211_qosframe_addr4,
,ieee80211_ctlframe_addr2,
,ieee80211_mnf,Management Notification Frame
,ieee80211_frame_min, Control frames
,ieee80211_frame_rts,RTS frames
,ieee80211_frame_cts,CTS frames
,ieee80211_frame_ack,ACK frames
,ieee80211_frame_pspoll,
,ieee80211_frame_cfend,NB: also CF-End+CF-Ack
ただ、madwifi内で他で参照されていない模様
!!action
*パケットのアドレス構造体
*パケットタイプ
*IS_MULTICAST関数の操作(送信側はどこか)
!!purpose
無理やりRTSをマルチキャスト→再送回数0→CTS衝突←デュレーションを長く → 通常のマルチキャスト
!!その他
*ieee80211_linux.c
**vlan