Search Linux Wireless

Re: Using wmediumd in kernel 3.10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Johannes,

I attach the script that I am using to load mac80211_hwsim. What you need to do is:

1) Execute the script to load two mesh interfaces mesh0 and mesh1.
2) Load wmediumd (the version in GitHub: https://github.com/cozybit/wmediumd), and use as config file the file that I am attaching.
3) Ping from mesh0 to mesh1: ping -I mesh0 192.168.77.11

You will see in syslog a kernel crash, followed by mac80211_hwsim deregistering the netlink socket. Then the ping proceeds normally because wmediumd is dettached.

Thanks for your help!

Cheers

Daniel






El Jueves 5 de diciembre de 2013 17:25, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> escribió:
On Thu, 2013-12-05 at 16:14 +0000, Dani Camps wrote:

> I am only loading mac80211_hwsim with the parameter "radios=2". I am
> not specifying anything about "channels", which looking at the code
> should be 1.

Ok. What's the easiest way to reproduce this? Do I need
hostapd/wpa_supplicant and wmediumd, or something else?


johannes
############### #
# Configuration #
#################
NUM_RADIOS=2

sudo modprobe mac80211
sudo modprobe mac80211_hwsim channels=1 radios=$NUM_RADIOS

echo "-> Modules loaded"
sleep 2

# Prepare ip rules for send-to-self
ip rule flush
ip rule del pref   0 lookup local
ip rule add pref 5000 lookup local
ip rule add pref 32766 lookup main
ip rule add pref 32767 lookup default

#Configure the mesh interfaces
PHYS=`find /sys/kernel/debug/ieee80211 -name hwsim | cut -d/ -f 6 | sort`
i=0
for phy in ${PHYS}; do

        #Configure the mesh interface
        iw phy ${phy} interface add mesh$i type mp mesh_id bazooka
        ip address add 192.168.77.1$i/24 dev mesh$i
        ip link set mesh$i up

        i=$(($i+1))

done

#Configure the IP rules required to implement send-to-self
for i in $(seq 0 $(($NUM_RADIOS - 1))); do

        #rule for incoming packets on each interface --> go to local table
        ip rule add pref $(($i+10)) iif mesh$i lookup local

        #create a rule for each pair i->j to point to table i->j where the default device is mesh$j. This ensures t$
        for j in $(seq 0 $(($NUM_RADIOS - 1))); do
                if [ "$j" -ne "$i" ]; then
                        #table_idx=$(($j+($i+1)*100))
                        table_idx=$(($j+100))
                        #table_prio=$table_idx
                        table_prio=$(($j+($i+1)*100))
                        ip rule add pref $table_prio from 192.168.77.1$j to 192.168.77.1$i lookup $table_idx
                        ip route flush table $table_idx
                        ip route add default dev mesh$j table $table_idx
                fi
        done
        echo 1 >/proc/sys/net/ipv4/conf/mesh$i/accept_local

done

# Bringing up hwsim0, otherwise the packets do not flow through mac80211_hwsim
ifconfig hwsim0 up

ifaces :
{
        count = 2;
        ids = ["42:00:00:00:00:00", "42:00:00:00:01:00" ];
};
prob :
{
        rates = 12;
        matrix_list = (
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ],
                [ -1.000, 0.500, 0.500, -1.000 ]
        );
};


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux