none
A problem of the code of the function "SdrMacCs" RRS feed

  • Question

  • I'm  studying Sora for future research and study, and now I have a problem about the drive code doing the CS function, whose name is "SdrMacCs". Some detailed codes are as followed:

     

    switch (hRes)
        {
        case BB11A_CHANNEL_CLEAN:
        case BB11B_CHANNEL_CLEAN:

            if (IS_MAC_EXPECT_ACK(pMac))
            {
                hRes = __ExpectAck(pPhy);
                if (hRes != BB11B_OK_POWER_DETECTED)
                {
                    DbgPrint("[MAC_CS][Error]  Ack detect fail, we don't need ACK anymore \n");
                    MAC_DISLIKE_ACK(pMac);
                }
                else
                {
                    SoraFSMGotoState(StateMachine, Dot11_MAC_RX);
                    return;
                }
            }

            DbgPrint("[MAC_CS] channel clean, goto tx \n");
            SoraFSMGotoState(StateMachine, Dot11_MAC_TX);

     

    A communication node detects the free channel and finds it expects ACK, then it will call __ExpectAck to detect ACK. My question is that if the node use the modulation mode in 802.11a (OFDM exactly), doesn't it need to use PhyDot11ACs to detect ACK? But I find that __ExpectAck always uses PhyDot11BCs to detect ACK five times, and it brings me a puzzle. I'll be very grateful for your answer.

    Wednesday, April 20, 2011 2:18 AM

All replies

  • Hello ychm,

    PhyDot11ACs and PhyDot11BCs implement the same function. There difference is that:

    PhyDot11BCs uses the xmm register based on Inter SSE structure. PhyDot11ACs uses the vector1 library based on SSE3 intrinsic.

    You can learn the vector1's usage in Sora manual.

    Thanks.

    -Albert

    Wednesday, April 20, 2011 9:13 AM
  •   Hello, Albert CAO,

      I traced the function PhyDotACs and PhyDot11BCs but found that they are implemented by different carrier sesing algorithm. Therefore, I think if an ACK is fast transmitted using OFDM, we should use PhyDot11ACs to detect it instead of PhyDot11BCs like the sample code.

      How do you think about that?

      Thanks.

                                                                                                                                                          -ychm

    Monday, April 25, 2011 8:50 AM
  • Hi ychm,

    If I remember correctly, 802.11 standards didn't specify the algorithm for carrier sense. You can use energy detection, correlation based algorithm or combine together, that is how the algorihtms in different implementation differs.

    One thing can be guaranteed is that current implemention works with a lot of tests. Certainly, you can change the implementation and even study the impact to performance.

    -Jiansong 

    Tuesday, May 17, 2011 9:20 AM