none
question about softwifi------the code in the sdk1.6 RRS feed

  • Question

  • hi there:

              I am studying the code of the softwifi in kernal mode and  come across some questions.Here are the questions。

    1,what is the perpose of the function,"KeSetTimer" in the file Sdr_mac_tx.c? I wonder if it indicates that the retry count of the packet in the SendSymWaitList has become greater than the threshold so that the driver should drop it and free the resources it has taken.

    2, what's the point of the funciotn "Latency check" in "DataFrameAck" in Sdr_mac_rx.c?

    3,how do  two nodes do the timing synchronization in softwifi? It will be of great help that you guys can tell me which part of the softwifi  do this.

      looking forward to your answers, thanks!   

    Wednesday, July 18, 2012 9:12 AM

Answers

  • I can answer your last 2 questions, and redirect the first question to other teammates, please wait a while.

    2. The function 'LatencyCheck' in Sdr_mac_rx.c is to control the latency between decoding a frame and sending ACK frame. You can refer the section '9.2.3.1 SIFS' in 'IEEE Std 802.11?-2007, IEEE Standard for Information Technology--Telecommunications and information exchange between systems--LANs and MANs--Specific requirements--Part 11: WLAN MAC and PHY Specifications'.
    3. For 802.11a protocol, check the function 'BB11ARxTrySync'. For 802.11b protocol, check the function 'BB11BDownSample'. For the brick implementation of 802.11b protocol, check the class 'TSymTiming'.

    By the way, if you don't care much about kernel mode driver, you can investigate code in the folder 'umxsdr', which is user mode implementation of SoftWifi. They are more readable, robust and easier to experiment.

    Friday, July 20, 2012 3:23 AM
    Answerer
  • Question 1:

    The TX, RX and CS are controlled by the MAC state machine.

    The state machine jumps between CS and RX if there are always signals in air.

    Once this scenario occurs, TX gets no chance for execution.

    The timer helps periodically clean the pending TX packet which cannot be transmitted out under this special condition.



    Friday, July 20, 2012 3:32 AM

All replies

  • I can answer your last 2 questions, and redirect the first question to other teammates, please wait a while.

    2. The function 'LatencyCheck' in Sdr_mac_rx.c is to control the latency between decoding a frame and sending ACK frame. You can refer the section '9.2.3.1 SIFS' in 'IEEE Std 802.11?-2007, IEEE Standard for Information Technology--Telecommunications and information exchange between systems--LANs and MANs--Specific requirements--Part 11: WLAN MAC and PHY Specifications'.
    3. For 802.11a protocol, check the function 'BB11ARxTrySync'. For 802.11b protocol, check the function 'BB11BDownSample'. For the brick implementation of 802.11b protocol, check the class 'TSymTiming'.

    By the way, if you don't care much about kernel mode driver, you can investigate code in the folder 'umxsdr', which is user mode implementation of SoftWifi. They are more readable, robust and easier to experiment.

    Friday, July 20, 2012 3:23 AM
    Answerer
  • Question 1:

    The TX, RX and CS are controlled by the MAC state machine.

    The state machine jumps between CS and RX if there are always signals in air.

    Once this scenario occurs, TX gets no chance for execution.

    The timer helps periodically clean the pending TX packet which cannot be transmitted out under this special condition.



    Friday, July 20, 2012 3:32 AM
  • thanks for your reply,it's really helpful!
    Friday, July 20, 2012 3:39 AM
  • I am really apreciated about your reply, here is another question ,what's about the "KeSetTimer" in Sdr_mac_send.c? Is this for the newly queued SymPacket?  and  what do you mean by "periodically clean the pending TX packet ",as i know this timer expires only once. So,would you please describe this in detail?

    ----------------------------------------------------------------------------------

    When a packet is newly queued in SendSymWaitList, the program should update the timer set in the Tx state,thus the program can try it's best to send out this packet .

    ---------------------------------------------------------------------------------

    Above is my understanding of this function in Sdr_mac_send.c, am i right?

    thanks very much!

    Friday, July 20, 2012 8:57 AM
  • Hi, Sorry for the late response.

    We use timeout to prevent the condition I mentioned before.

    In sdr_mac_send.c, once a packet is newly transferred, we simply reset the timer to the timeout value.

    If a packet is TX out, we also reset the timer.

    If the timeout occurs, we clean all the pending send packets.

    Tuesday, July 31, 2012 9:46 AM