You are on page 1of 2

LAB 3: IEEE 802.

11 (Wi-Fi) Association/Disassociation
Rebecca Almeida: 45136498 (Part 1 & 2)
Akshay Arora: 46837977 (Part 3 & 4)

The main objective of this lab was to understand the association/ disassociation
of different stations with their Wi-Fi Access-point (in this case WARP board). In
this lab, we were able to update the wlan_mac_ap.c code to change the default
station association settings of the WARP board.
In part 1, we were able to download and open the project using Xilinx tools.
Initially after running the downloaded project, we were not able to observe the
output properly (output not readable). This error was because the dip switch
which prints the UART output was set in the wrong position. After making the
correct setting, we were able to printout the expected output .Also, we learnt
how to generate an SSID(Service Set identifier) for our Access-point and we
were able to detect it using Wi-Fi on our mobile stations.
In part 2, we had to change the limit of maximum and minimum allowable
devices to get associated using switch buttons. We have used up button to set
the higher limit and down button for the lower limit. We made use of two test
cases: 1) max=3, min=1 ; 2) max=4, min=2. We had a syntax error when we
tried to assign a different value for MAX_NUM_ASSOC. This was because the
MAX_NUM_ASSOC had fixed defined value of 10. To set the minimum and
maximum limit we assigned a variable called new_max in place of
MAX_NUM_ASSOC in the C file. We also faced some confusion in deciding where
to implement the counter. Initially we implemented the counter in the up and
down functions. However the counter value failed to loop back to 0 after
reaching the maximum association number. Then we tried implementing the
code in the association/disassociation function where a new association is added
to the station list and we were able to observe proper output.
In part 3, we had to print out the RSSI(Received Signal Strength Indication) value
of the station, so we used associated_station -> rx.last_power variable in
association code. As, the value was in ascii ,we had to typecast it to (int) in order
to access it. However we were only able to printout the RSSI value when a new
station got associated to the WARP board. In order to monitor the RSSI value of
the station continuously, we implemented this code in timestamp function
instead (access variable curr_station_info-> rx.last_power). From this we were
able to observe a range of RSSI values for different distance between station and
the WARP board. We had to then set the RSSI limit to allow only those devices to
associate who fall under this limit. After monitoring the RSSI values we decided
to set this limit to -54dB. We were unable to get the devices disassociated using
rx.last_power variable. Then we solved this issue by making nested if-else loop
conditions to disassociate devices which had their RSSI values lower than -

54dB . Thus, we could observe disassociation on the terminal, once the device
was held very far from the antenna.

In part 4, we learnt how to check the MAC address of our mobile station. We
could also read the MAC addresses of other mobile stations which were
associated to our Access-point. Our task was to associate only our mobile station
and disassociate other devices. We faced a problem to restrict devices with
different MAC address to get associated to our access point as we were unable to
use any function which can disassociate a device because they were all present
in a structure format, so using them directly was not possible. We came to a
solution to this problem by comparing the MAC address of our mobile station with
MAC address of other devices by creating an array of our MAC address . Only, If
the result of comparison was null i.e successful, we showed that our device is
associated ,whereas when other devices were trying to connect, they were
unable to associate to our access point and received a message that their
devices cannot be disassociated.
After completing this lab we were able to understand the operation of
association/disassociation function properly. However we have not fully
understood the timestamp function like for example the use of
STATION_INFO_FLAG_DISABLE_ASSOC_CHECK flag, etc. There were some parts
in the code where we could generate and transmit beacons which are related to
association but I was not able to understand the code in that part. Also while
checking the RSSI values ,it was unclear that if there were any losses due to
obstacles or directionality.

You might also like