604 (("WLANLDD: DWlanLogicalChannel::HandleMsg: mutex released"))); |
608 (("WLANLDD: DWlanLogicalChannel::HandleMsg: mutex released"))); |
605 } |
609 } |
606 |
610 |
607 |
611 |
608 // --------------------------------------------------------------------------- |
612 // --------------------------------------------------------------------------- |
609 // |
613 // Note! This method is executed in the context of the user mode client |
610 // --------------------------------------------------------------------------- |
614 // thread, but in supervisor mode |
611 // |
615 // --------------------------------------------------------------------------- |
612 TAny* DWlanLogicalChannel::DoControlFast( TInt aFunction, TAny* param ) |
616 // |
|
617 TAny* DWlanLogicalChannel::DoControlFast( TInt aFunction, TAny* aParam ) |
613 { |
618 { |
614 TAny* ret( NULL ); |
619 TAny* ret( NULL ); |
615 TBool triggerTx ( EFalse ); |
620 TBool triggerTx ( EFalse ); |
616 |
621 |
617 TraceDump(WLM_CMD_DETAILS, |
622 TraceDump(WLM_CMD_DETAILS, |
618 (("WLANLDD: DWlanLogicalChannel::DoControlFast: current thread 0x%08x"), |
623 (("WLANLDD: DWlanLogicalChannel::DoControlFast: current thread 0x%08x"), |
619 &Kern::CurrentThread())); |
624 &Kern::CurrentThread())); |
620 TraceDump(WLM_CMD_DETAILS, (("WLANLDD: channel creator thread: 0x%08x"), |
625 TraceDump(WLM_CMD_DETAILS, (("WLANLDD: channel creator thread: 0x%08x"), |
621 iClient)); |
626 iClient)); |
622 TraceDump(WLM_CMD_DETAILS, (("WLANLDD: function: 0x%x"), aFunction)); |
627 TraceDump(WLM_CMD_DETAILS, (("WLANLDD: function: 0x%x"), aFunction)); |
623 |
|
624 // Note! We are executing in the context of the client's thread, but |
|
625 // in supervisor mode |
|
626 |
628 |
627 // acquire mutex |
629 // acquire mutex |
628 // Enter critical section before requesting the mutex as |
630 // Enter critical section before requesting the mutex as |
629 // we are executing in the context of a user mode thread |
631 // we are executing in the context of a user mode thread |
630 NKern::ThreadEnterCS(); |
632 NKern::ThreadEnterCS(); |
636 NKern::ThreadLeaveCS(); |
638 NKern::ThreadLeaveCS(); |
637 |
639 |
638 TraceDump(MUTEX, |
640 TraceDump(MUTEX, |
639 (("WLANLDD: DWlanLogicalChannel::DoControlFast: mutex acquired"))); |
641 (("WLANLDD: DWlanLogicalChannel::DoControlFast: mutex acquired"))); |
640 |
642 |
641 switch ( aFunction ) |
643 if ( iUnit == KUnitWlan ) |
642 { |
644 { |
643 case RPcmNetCardIf::EControlFastAllocTxBuffer: |
645 ret = OnMgmtSideControlFast( aFunction, aParam ); |
644 ret = iEthernetFrameMemMngr->AllocTxBuffer( |
646 } |
645 reinterpret_cast<TUint>(param) ); |
647 else if ( iUnit == KUnitEthernet ) |
646 |
648 { |
647 if ( !ret && iAddTxFrameAllowed ) |
649 ret = OnEthernetSideControlFast( aFunction, aParam, triggerTx ); |
648 { |
650 } |
649 iAddTxFrameAllowed = EFalse; |
651 else |
650 |
652 { |
651 TraceDump( NWSA_TX, |
653 // unknown unit |
652 ("WLANLDD: DWlanLogicalChannel::DoControlFast: stop flow from protocol stack") ); |
654 #ifndef NDEBUG |
653 } |
655 TraceDump(ERROR_LEVEL, |
654 break; |
656 ("WLANLDD: DWlanLogicalChannel::DoControlFast: unknown unit")); |
655 |
657 TraceDump(ERROR_LEVEL, (("WLANLDD: aFunction: %d"), aFunction)); |
656 case RPcmNetCardIf::EControlFastAddTxFrame: |
658 TraceDump(ERROR_LEVEL, (("WLANLDD: unit: %d"), iUnit)); |
657 { |
659 os_assert( (TUint8*)("WLANLDD: panic"), (TUint8*)(WLAN_FILE), __LINE__ ); |
658 #ifndef NDEBUG |
|
659 if ( !iAddTxFrameAllowed ) |
|
660 { |
|
661 TraceDump(ERROR_LEVEL, |
|
662 ("WLANLDD: DWlanLogicalChannel::DoControlFast: WARNING: AddTxFrame req. when flow ctrl is on")); |
|
663 } |
|
664 #endif |
660 #endif |
665 if ( iEthernetFrameMemMngr->AllTxQueuesEmpty() ) |
|
666 { |
|
667 triggerTx = ETrue; |
|
668 } |
|
669 |
|
670 TDataBuffer* discardFrame ( NULL ); |
|
671 |
|
672 ret = reinterpret_cast<TAny*>(iEthernetFrameMemMngr->AddTxFrame( |
|
673 reinterpret_cast<TDataBuffer*>(param), |
|
674 discardFrame, |
|
675 iUmac.UserDataTxEnabled() )); |
|
676 |
|
677 if ( discardFrame ) |
|
678 { |
|
679 TraceDump( NWSA_TX_DETAILS, |
|
680 (("WLANLDD: DWlanLogicalChannel::DoControlFast: have to drop tx frame of UP: %d"), |
|
681 reinterpret_cast<TDataBuffer*>(param)->UserPriority()) ); |
|
682 |
|
683 iEthernetFrameMemMngr->FreeTxPacket( discardFrame ); |
|
684 } |
|
685 |
|
686 if ( !ret ) |
|
687 { |
|
688 iAddTxFrameAllowed = EFalse; |
|
689 |
|
690 TraceDump( NWSA_TX, |
|
691 ("WLANLDD: DWlanLogicalChannel::DoControlFast: stop flow from protocol stack") ); |
|
692 } |
|
693 break; |
|
694 } |
|
695 default: |
|
696 #ifndef NDEBUG |
|
697 TraceDump(ERROR_LEVEL, (("WLANLDD: unknown request: %d"), |
|
698 aFunction)); |
|
699 os_assert( |
|
700 (TUint8*)("WLANLDD: panic"), |
|
701 (TUint8*)(WLAN_FILE), |
|
702 __LINE__ ); |
|
703 #endif |
|
704 break; |
|
705 } |
661 } |
706 |
662 |
707 // release mutex |
663 // release mutex |
708 // Enter critical section before releasing the mutex as |
664 // Enter critical section before releasing the mutex as |
709 // we are executing in the context of a user mode thread |
665 // we are executing in the context of a user mode thread |
726 // DFC by a higher priority (kernel side) thread, and the latter will |
682 // DFC by a higher priority (kernel side) thread, and the latter will |
727 // also need to acquire the same mutex before it can proceed. So, as |
683 // also need to acquire the same mutex before it can proceed. So, as |
728 // the lower priority thread will get paused and the higher priority |
684 // the lower priority thread will get paused and the higher priority |
729 // thread will get scheduled (to execute the DFC), we don't want the |
685 // thread will get scheduled (to execute the DFC), we don't want the |
730 // higher priority thread to need to wait for the mutex. So we |
686 // higher priority thread to need to wait for the mutex. So we |
731 // released the mutex first in this code block and after that enque |
687 // released the mutex first in this code block and after that enqueue |
732 // the DFC request. |
688 // the DFC request. |
733 if ( !( iFlags & KTxTriggerArmed ) ) |
689 if ( !( iFlags & KTxTriggerArmed ) ) |
734 { |
690 { |
735 iFlags |= KTxTriggerArmed; |
691 iFlags |= KTxTriggerArmed; |
736 iTxTriggerDfc.Enque(); |
692 iTxTriggerDfc.Enque(); |
739 |
695 |
740 return ret; |
696 return ret; |
741 } |
697 } |
742 |
698 |
743 // --------------------------------------------------------------------------- |
699 // --------------------------------------------------------------------------- |
|
700 // Note! This method is executed in the context of the user mode client |
|
701 // thread, but in supervisor mode |
|
702 // --------------------------------------------------------------------------- |
|
703 // |
|
704 TAny* DWlanLogicalChannel::OnMgmtSideControlFast( |
|
705 TInt aFunction, |
|
706 TAny* aParam ) |
|
707 { |
|
708 TAny* ret( NULL ); |
|
709 |
|
710 switch ( aFunction ) |
|
711 { |
|
712 // ========================================================== |
|
713 // Get Rx frame |
|
714 // ========================================================== |
|
715 case RWlanLogicalChannel::EWlanControlFastGetRxFrame: |
|
716 if ( iEthernetFrameMemMngr ) |
|
717 { |
|
718 ret = iEthernetFrameMemMngr->GetRxFrame( |
|
719 reinterpret_cast<TDataBuffer*>(aParam) ); |
|
720 } |
|
721 break; |
|
722 // ========================================================== |
|
723 // Unknown request |
|
724 // ========================================================== |
|
725 default: |
|
726 #ifndef NDEBUG |
|
727 TraceDump(ERROR_LEVEL, (("WLANLDD: unknown request: %d"), |
|
728 aFunction)); |
|
729 os_assert( |
|
730 (TUint8*)("WLANLDD: panic"), |
|
731 (TUint8*)(WLAN_FILE), |
|
732 __LINE__ ); |
|
733 #endif |
|
734 break; |
|
735 } |
|
736 |
|
737 return ret; |
|
738 } |
|
739 |
|
740 // --------------------------------------------------------------------------- |
|
741 // Note! This method is executed in the context of the user mode client |
|
742 // thread, but in supervisor mode |
|
743 // --------------------------------------------------------------------------- |
|
744 // |
|
745 TAny* DWlanLogicalChannel::OnEthernetSideControlFast( |
|
746 TInt aFunction, |
|
747 TAny* aParam, |
|
748 TBool& aTriggerTx ) |
|
749 { |
|
750 TAny* ret( NULL ); |
|
751 aTriggerTx = EFalse; |
|
752 |
|
753 switch ( aFunction ) |
|
754 { |
|
755 // ========================================================== |
|
756 // Alloc Tx buffer |
|
757 // ========================================================== |
|
758 case RPcmNetCardIf::EControlFastAllocTxBuffer: |
|
759 if ( iEthernetFrameMemMngr ) |
|
760 { |
|
761 ret = iEthernetFrameMemMngr->AllocTxBuffer( |
|
762 reinterpret_cast<TUint>(aParam) ); |
|
763 } |
|
764 |
|
765 if ( !ret && iAddTxFrameAllowed ) |
|
766 { |
|
767 iAddTxFrameAllowed = EFalse; |
|
768 |
|
769 TraceDump( NWSA_TX, |
|
770 ("WLANLDD: DWlanLogicalChannel::OnEthernetSideControlFast: " |
|
771 "stop flow from protocol stack") ); |
|
772 } |
|
773 break; |
|
774 // ========================================================== |
|
775 // Add Tx frame |
|
776 // ========================================================== |
|
777 case RPcmNetCardIf::EControlFastAddTxFrame: |
|
778 { |
|
779 #ifndef NDEBUG |
|
780 if ( !iAddTxFrameAllowed ) |
|
781 { |
|
782 TraceDump(ERROR_LEVEL, |
|
783 ("WLANLDD: DWlanLogicalChannel::OnEthernetSideControlFast: " |
|
784 "WARNING: AddTxFrame req. when flow ctrl is on")); |
|
785 } |
|
786 #endif |
|
787 if ( iEthernetFrameMemMngr && aParam ) |
|
788 { |
|
789 if ( iEthernetFrameMemMngr->AllTxQueuesEmpty() ) |
|
790 { |
|
791 aTriggerTx = ETrue; |
|
792 } |
|
793 |
|
794 TDataBuffer* discardFrame ( NULL ); |
|
795 |
|
796 ret = reinterpret_cast<TAny*>( |
|
797 iEthernetFrameMemMngr->AddTxFrame( |
|
798 reinterpret_cast<TDataBuffer*>(aParam), |
|
799 discardFrame, |
|
800 iUmac.UserDataTxEnabled() )); |
|
801 |
|
802 if ( discardFrame ) |
|
803 { |
|
804 TraceDump( NWSA_TX_DETAILS, |
|
805 (("WLANLDD: DWlanLogicalChannel::OnEthernetSideControlFast: " |
|
806 "have to drop tx frame of UP: %d"), |
|
807 reinterpret_cast<TDataBuffer*>( |
|
808 aParam)->UserPriority()) ); |
|
809 |
|
810 iEthernetFrameMemMngr->FreeTxPacket( discardFrame ); |
|
811 aTriggerTx = EFalse; |
|
812 } |
|
813 } |
|
814 |
|
815 if ( !ret ) |
|
816 { |
|
817 iAddTxFrameAllowed = EFalse; |
|
818 |
|
819 TraceDump( NWSA_TX, |
|
820 ("WLANLDD: DWlanLogicalChannel::OnEthernetSideControlFast: " |
|
821 "stop flow from protocol stack") ); |
|
822 } |
|
823 break; |
|
824 } |
|
825 // ========================================================== |
|
826 // Get Rx frame |
|
827 // ========================================================== |
|
828 case RPcmNetCardIf::EControlFastGetRxFrame: |
|
829 { |
|
830 if ( iEthernetFrameMemMngr ) |
|
831 { |
|
832 ret = iEthernetFrameMemMngr->GetRxFrame( |
|
833 reinterpret_cast<TDataBuffer*>(aParam) ); |
|
834 } |
|
835 } |
|
836 break; |
|
837 // ========================================================== |
|
838 // Unknown request |
|
839 // ========================================================== |
|
840 default: |
|
841 #ifndef NDEBUG |
|
842 TraceDump(ERROR_LEVEL, (("WLANLDD: unknown request: %d"), |
|
843 aFunction)); |
|
844 os_assert( |
|
845 (TUint8*)("WLANLDD: panic"), |
|
846 (TUint8*)(WLAN_FILE), |
|
847 __LINE__ ); |
|
848 #endif |
|
849 break; |
|
850 } // switch |
|
851 |
|
852 return ret; |
|
853 } |
|
854 |
|
855 // --------------------------------------------------------------------------- |
744 // |
856 // |
745 // --------------------------------------------------------------------------- |
857 // --------------------------------------------------------------------------- |
746 // |
858 // |
747 void DWlanLogicalChannel::DoCancel( TInt aMask ) |
859 void DWlanLogicalChannel::DoCancel( TInt aMask ) |
748 { |
860 { |
749 if ( iUnit == KUnitWlan ) |
861 if ( iUnit == KUnitWlan ) |
750 { |
862 { |
751 if ( aMask & ( 1 << EWlanRequestNotify ) ) |
863 if ( aMask & ( 1 << RWlanLogicalChannel::EWlanRequestNotify ) ) |
752 { |
864 { |
753 TraceDump(INFO_LEVEL, |
865 TraceDump(INFO_LEVEL, |
754 ("WLANLDD: DWlanLogicalChannel::DoCancel: mgmt side notify cancel")); |
866 ("WLANLDD: DWlanLogicalChannel::DoCancel: mgmt side notify cancel")); |
755 |
867 |
756 CancelIndicationRequest(); |
868 CancelIndicationRequest(); |
757 Kern::RequestComplete( |
869 Kern::RequestComplete( |
758 iClient, iWlanRequestNotifyStatus, KErrServerTerminated ); |
870 iClient, iWlanRequestNotifyStatus, KErrServerTerminated ); |
759 iWlanRequestNotifyStatus = NULL; |
871 iWlanRequestNotifyStatus = NULL; |
760 } |
872 } |
761 else if ( aMask & ( 1 << EWlanRequestFrame ) ) |
873 else if ( aMask & ( 1 << RWlanLogicalChannel::EWlanRequestFrame ) ) |
762 { |
874 { |
763 TraceDump(INFO_LEVEL, |
875 TraceDump(INFO_LEVEL, |
764 ("WLANLDD: DWlanLogicalChannel::DoCancel: mgmt side frame read cancel")); |
876 ("WLANLDD: DWlanLogicalChannel::DoCancel: mgmt side frame read cancel")); |
765 |
877 |
766 Kern::RequestComplete( |
878 Kern::RequestComplete( |
901 TraceDump(UMAC_PROTO_CALLBACK, |
1017 TraceDump(UMAC_PROTO_CALLBACK, |
902 ("WLANLDD: DWlanLogicalChannel::OnTxProtocolStackDataComplete")); |
1018 ("WLANLDD: DWlanLogicalChannel::OnTxProtocolStackDataComplete")); |
903 TraceDump(UMAC_PROTO_CALLBACK, |
1019 TraceDump(UMAC_PROTO_CALLBACK, |
904 (("WLANLDD: aCompletionCode: %d"), aCompletionCode)); |
1020 (("WLANLDD: aCompletionCode: %d"), aCompletionCode)); |
905 |
1021 |
906 iEthernetFrameMemMngr->FreeTxPacket( aMetaHeader ); |
1022 if ( iEthernetFrameMemMngr ) |
|
1023 { |
|
1024 iEthernetFrameMemMngr->FreeTxPacket( aMetaHeader ); |
|
1025 } |
907 |
1026 |
908 TxProtocolStackData(); |
1027 TxProtocolStackData(); |
909 |
1028 |
910 if ( !iAddTxFrameAllowed ) |
1029 if ( !iAddTxFrameAllowed ) |
911 { |
1030 { |
912 if ( iResumeTxStatus && |
1031 if ( iResumeTxStatus && |
|
1032 iEthernetFrameMemMngr && |
913 iEthernetFrameMemMngr->ResumeClientTx( |
1033 iEthernetFrameMemMngr->ResumeClientTx( |
914 iUmac.UserDataTxEnabled() ) ) |
1034 iUmac.UserDataTxEnabled() ) ) |
915 { |
1035 { |
916 // resume Tx flow from protocol stack |
1036 // resume Tx flow from protocol stack |
917 |
1037 |
978 // |
1098 // |
979 // --------------------------------------------------------------------------- |
1099 // --------------------------------------------------------------------------- |
980 // |
1100 // |
981 void DWlanLogicalChannel::TxManagementData() |
1101 void DWlanLogicalChannel::TxManagementData() |
982 { |
1102 { |
983 TDataBuffer* buffer = iEthernetFrameMemMngr->OnWriteEthernetFrame(); |
1103 TDataBuffer* buffer( NULL ); |
984 |
1104 |
985 if ( !buffer ) |
1105 if ( iEthernetFrameMemMngr ) |
986 { |
1106 { |
987 TraceDump(ERROR_LEVEL, |
1107 buffer = iEthernetFrameMemMngr->OnWriteEthernetFrame(); |
988 ("WLANLDD: DWlanLogicalChannel::TxManagementData: " |
1108 } |
989 "panic, no buffer")); |
1109 |
|
1110 if ( buffer ) |
|
1111 { |
|
1112 iUmac.WriteMgmtFrame( *buffer ); |
|
1113 } |
|
1114 else |
|
1115 { |
|
1116 #ifndef NDEBUG |
990 os_assert( (TUint8*)("WLANLDD: panic"), (TUint8*)(WLAN_FILE), __LINE__ ); |
1117 os_assert( (TUint8*)("WLANLDD: panic"), (TUint8*)(WLAN_FILE), __LINE__ ); |
991 } |
1118 #endif |
992 else |
1119 Kern::RequestComplete( |
993 { |
1120 iClient, iWlanSendFrameStatus, KErrGeneral ); |
994 iUmac.WriteMgmtFrame( *buffer ); |
|
995 } |
1121 } |
996 } |
1122 } |
997 |
1123 |
998 // --------------------------------------------------------------------------- |
1124 // --------------------------------------------------------------------------- |
999 // |
1125 // |
1000 // --------------------------------------------------------------------------- |
1126 // --------------------------------------------------------------------------- |
1001 // |
1127 // |
1002 void DWlanLogicalChannel::TxProtocolStackData() |
1128 void DWlanLogicalChannel::TxProtocolStackData() |
1003 { |
1129 { |
1004 #ifndef NDEBUG |
1130 #ifndef NDEBUG |
1005 TUint packetsSubmitted ( 0 ); |
1131 TUint packetsSubmitted ( 0 ); |
1006 #endif |
1132 #endif |
1007 |
1133 |
1008 if ( !iTxActive ) |
1134 if ( !iTxActive ) |
1009 { |
1135 { |
1449 } |
1581 } |
1450 } |
1582 } |
1451 |
1583 |
1452 switch ( aReqNo ) |
1584 switch ( aReqNo ) |
1453 { |
1585 { |
1454 case EWlanInitSystem: |
1586 case RWlanLogicalChannel::EWlanInitSystem: |
1455 // bootup the chip and the system |
1587 // bootup the chip and the system |
1456 iWlanGeneralRequestStatus = aStatus; |
1588 iWlanGeneralRequestStatus = aStatus; |
1457 InitSystem( a1, sizeof(TOpenParam) ); |
1589 InitSystem( a1, sizeof(TOpenParam) ); |
1458 break; |
1590 break; |
1459 case EWlanFinitSystem: |
1591 case RWlanLogicalChannel::EWlanFinitSystem: |
1460 // power down the chip and the system |
1592 // power down the chip and the system |
1461 iWlanGeneralRequestStatus = aStatus; |
1593 iWlanGeneralRequestStatus = aStatus; |
1462 FinitSystem(); |
1594 FinitSystem(); |
1463 break; |
1595 break; |
1464 case EWlanCommand: |
1596 case RWlanLogicalChannel::EWlanCommand: |
1465 // management command |
1597 // management command |
1466 iWlanGeneralRequestStatus = aStatus; |
1598 iWlanGeneralRequestStatus = aStatus; |
1467 |
1599 |
1468 // read the USER mode parameters to internal storage |
1600 // read the USER mode parameters to internal storage |
1469 ret = Kern::ThreadRawRead( |
1601 ret = Kern::ThreadRawRead( |
1500 // because it is not accessed by UMAC and the |
1632 // because it is not accessed by UMAC and the |
1501 // actual user mode writing is done by OnOidCompleted method |
1633 // actual user mode writing is done by OnOidCompleted method |
1502 output_buffer.iData, |
1634 output_buffer.iData, |
1503 output_buffer.iLen ); |
1635 output_buffer.iLen ); |
1504 break; |
1636 break; |
1505 case EWlanRequestNotify: |
1637 case RWlanLogicalChannel::EWlanRequestNotify: |
1506 // store the USER mode indication address; |
1638 // store the USER mode indication address; |
1507 iIndicationBuffer = static_cast<TIndication*>(a1); |
1639 iIndicationBuffer = static_cast<TIndication*>(a1); |
1508 iWlanRequestNotifyStatus = aStatus; |
1640 iWlanRequestNotifyStatus = aStatus; |
1509 IndicationRequest( static_cast<TIndication*>(a1) ); |
1641 IndicationRequest( static_cast<TIndication*>(a1) ); |
1510 break; |
1642 break; |
1511 case EWlanRequestFrame: |
1643 case RWlanLogicalChannel::EWlanRequestFrame: |
1512 if ( OnReadEthernetFrameRequest() ) |
1644 if ( OnReadEthernetFrameRequest() ) |
1513 { |
1645 { |
1514 // rx data to be completed exists |
1646 // rx data to be completed exists |
1515 // complete it directly |
1647 // complete it directly |
1516 Kern::RequestComplete( |
1648 Kern::RequestComplete( |
1889 TUint32 aSnapFrameTxOffset ) |
2021 TUint32 aSnapFrameTxOffset ) |
1890 { |
2022 { |
1891 if ( iEthernetFrameMemMngr ) |
2023 if ( iEthernetFrameMemMngr ) |
1892 { |
2024 { |
1893 TraceDump(NWSA_TX_DETAILS, |
2025 TraceDump(NWSA_TX_DETAILS, |
1894 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: aEthernetFrameTxOffset: %d"), |
2026 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: " |
|
2027 "aEthernetFrameTxOffset: %d"), |
1895 aEthernetFrameTxOffset )); |
2028 aEthernetFrameTxOffset )); |
1896 TraceDump(NWSA_TX_DETAILS, |
2029 TraceDump(NWSA_TX_DETAILS, |
1897 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: aDot11FrameTxOffset: %d"), |
2030 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: " |
|
2031 "aDot11FrameTxOffset: %d"), |
1898 aDot11FrameTxOffset )); |
2032 aDot11FrameTxOffset )); |
1899 TraceDump(NWSA_TX_DETAILS, |
2033 TraceDump(NWSA_TX_DETAILS, |
1900 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: aSnapFrameTxOffset: %d"), |
2034 (("WLANLDD: DWlanLogicalChannel::SetMgmtSideTxOffsets: " |
|
2035 "aSnapFrameTxOffset: %d"), |
1901 aSnapFrameTxOffset )); |
2036 aSnapFrameTxOffset )); |
1902 |
2037 |
1903 iEthernetFrameMemMngr->SetTxOffsets( |
2038 iEthernetFrameMemMngr->SetTxOffsets( |
1904 aEthernetFrameTxOffset, |
2039 aEthernetFrameTxOffset, |
1905 aDot11FrameTxOffset, |
2040 aDot11FrameTxOffset, |