トップ 一覧 検索 ヘルプ RSS ログイン

madwifi_debugの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!ログ
*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