トップ 差分 一覧 ソース 検索 ヘルプ PDF 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

Copyright(C) by 芝浦工業大学 工学部通信工学科, 森野研究室. All Rights Reserved.