Home | History | Annotate | Download | only in Sta_Management

Lines Matching refs:pQosMngr

80 static void release_module(qosMngr_t *pQosMngr, TI_UINT32 initVec);
81 static TI_STATUS verifyAndConfigTrafficParams(qosMngr_t *pQosMngr, TQueueTrafficParams *pQtrafficParams);
82 static TI_STATUS verifyAndConfigQosParams(qosMngr_t *pQosMngr,TAcQosParams *pAcQosParams);
83 static TI_STATUS getWMEInfoElement(qosMngr_t *pQosMngr,TI_UINT8 *pWMEie,TI_UINT8 *pLen);
84 static TI_STATUS verifyWmeIeParams(qosMngr_t *pQosMngr,TI_UINT8 *pQosIeParams);
85 static TI_STATUS updateACParams(qosMngr_t *pQosMngr,dot11_ACParameters_t *pAcParams);
86 static TI_STATUS setWmeSiteParams(qosMngr_t *pQosMngr, TI_UINT8 *pQosIeParams);
89 static void deleteTspecConfiguration(qosMngr_t *pQosMngr, TI_UINT8 acID);
90 static void setNonQosAdmissionState(qosMngr_t *pQosMngr, TI_UINT8 acID);
92 static TI_STATUS qosMngr_SetPsRxStreaming (qosMngr_t *pQosMngr, TPsRxStreaming *pNewParams);
110 qosMngr_t *pQosMngr = NULL;
117 pQosMngr = os_memoryAlloc(hOs,sizeof(qosMngr_t));
119 if (pQosMngr == NULL)
122 os_memoryZero (hOs, pQosMngr, sizeof(qosMngr_t));
127 pQosMngr->pTrafficAdmCtrl = trafficAdmCtrl_create(hOs);
129 if (pQosMngr->pTrafficAdmCtrl == NULL)
131 qosMngr_destroy(pQosMngr);
137 return(pQosMngr);
158 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
160 if (pQosMngr == NULL)
164 release_module(pQosMngr, initVec);
175 INPUT: pQosMngr - QOS Mngr pointer.
182 static void release_module(qosMngr_t *pQosMngr, TI_UINT32 initVec)
186 trafficAdmCtrl_unload(pQosMngr->pTrafficAdmCtrl);
189 os_memoryFree(pQosMngr->hOs, pQosMngr, sizeof(qosMngr_t));
212 qosMngr_t *pQosMngr = (qosMngr_t *)(pStadHandles->hQosMngr);
215 pQosMngr->hOs = pStadHandles->hOs;
216 pQosMngr->hReport = pStadHandles->hReport;
217 pQosMngr->hSiteMgr = pStadHandles->hSiteMgr;
218 pQosMngr->hTWD = pStadHandles->hTWD;
219 pQosMngr->hTxCtrl = pStadHandles->hTxCtrl;
220 pQosMngr->hTxMgmtQ = pStadHandles->hTxMgmtQ;
221 pQosMngr->hMeasurementMngr = pStadHandles->hMeasurementMgr;
222 pQosMngr->hSmeSm = pStadHandles->hSme;
223 pQosMngr->hCtrlData = pStadHandles->hCtrlData;
224 pQosMngr->hEvHandler = pStadHandles->hEvHandler;
225 pQosMngr->hXCCMgr = pStadHandles->hXCCMngr;
226 pQosMngr->hTimer = pStadHandles->hTimer;
227 pQosMngr->hStaCap = pStadHandles->hStaCap;
229 pQosMngr->isConnected = TI_FALSE;
235 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
240 pQosMngr->WMEEnable = pQosMngrInitParams->wmeEnable;
241 pQosMngr->trafficAdmCtrlEnable = pQosMngrInitParams->trafficAdmCtrlEnable;
242 pQosMngr->tagZeroConverHeader = pQosMngrInitParams->qosTagZeroConverHeader;
243 pQosMngr->qosPacketBurstEnable = pQosMngrInitParams->PacketBurstEnable;
244 pQosMngr->qosPacketBurstTxOpLimit = pQosMngrInitParams->PacketBurstTxOpLimit;
245 pQosMngr->desiredPsMode = pQosMngrInitParams->desiredPsMode;
246 pQosMngr->bCwFromUserEnable = pQosMngrInitParams->bCwFromUserEnable;
247 pQosMngr->uDesireCwMin = pQosMngrInitParams->uDesireCwMin;
248 pQosMngr->uDesireCwMax = pQosMngrInitParams->uDesireCwMax;
249 pQosMngr->bEnableBurstMode = pQosMngrInitParams->bEnableBurstMode;
252 pQosMngr->activeProtocol = QOS_NONE;
253 pQosMngr->WMESiteSupport = TI_FALSE;
255 pQosMngr->desiredMaxSpLen = pQosMngrInitParams->desiredMaxSpLen;
257 pQosMngr->voiceTspecConfigured = TI_FALSE;
258 pQosMngr->videoTspecConfigured = TI_FALSE;
259 pQosMngr->performTSPECRenegotiation = TI_FALSE;
260 pQosMngr->TSPECNegotiationResultCallb = NULL;
261 pQosMngr->TSPECNegotiationResultModule = NULL;
264 pQosMngr->QosNullDataTemplateUserPriority = 0xFF;
266 TWD_CfgBurstMode(pQosMngr->hTWD, pQosMngr->bEnableBurstMode);
269 qosMngr_resetAdmCtrlParameters(pQosMngr);
271 status = trafficAdmCtrl_config (pQosMngr->pTrafficAdmCtrl,
272 pQosMngr->hTxMgmtQ,
273 pQosMngr->hReport,
274 pQosMngr->hOs,
275 pQosMngr,
276 pQosMngr->hCtrlData,
277 pQosMngr->hXCCMgr,
278 pQosMngr->hTimer,
279 pQosMngr->hTWD,
280 pQosMngr->hTxCtrl,
296 pQosMngr->acParams[acID].QtrafficParams.queueID = acID;
297 pQosMngr->acParams[acID].QtrafficParams.channelType = CHANNEL_TYPE_EDCF;
298 pQosMngr->acParams[acID].QtrafficParams.tsid = acID;
299 pQosMngr->acParams[acID].QtrafficParams.dot11EDCATableMSDULifeTime = 0;
300 pQosMngr->acParams[acID].QtrafficParams.psScheme = PS_SCHEME_LEGACY;
301 pQosMngr->acParams[acID].QtrafficParams.ackPolicy = pQosMngrInitParams->acAckPolicy[acID];
302 pQosMngr->acParams[acID].QtrafficParams.APSDConf[0] = 0;
303 pQosMngr->acParams[acID].QtrafficParams.APSDConf[1] = 0;
309 os_memoryCopy(pQosMngr->hOs,
310 &pQosMngr->acParams[acID].QTrafficInitParams,
311 &pQosMngr->acParams[acID].QtrafficParams,
315 verifyAndConfigTrafficParams(pQosMngr,&(pQosMngr->acParams[acID].QtrafficParams));
323 pQosMngr->acParams[acID].acQosParams.ac = acID;
324 pQosMngr->acParams[acID].acQosParams.aifsn = AIFS_DEF;
325 pQosMngr->acParams[acID].acQosParams.cwMax = pQosMngr->uDesireCwMax;
326 pQosMngr->acParams[acID].acQosParams.cwMin = pQosMngr->uDesireCwMin;
327 pQosMngr->acParams[acID].acQosParams.txopLimit = QOS_TX_OP_LIMIT_DEF;
328 pQosMngr->acParams[acID].msduLifeTimeParam = pQosMngrInitParams->MsduLifeTime[acID];
339 if (pQosMngr->qosPacketBurstEnable==TI_TRUE)
341 pQosMngr->acParams[QOS_AC_BE].acQosParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
345 pQosMngr->acParams[QOS_AC_BE].acQosParams.txopLimit = QOS_TX_OP_LIMIT_DEF;
352 os_memoryCopy(pQosMngr->hOs,
353 &pQosMngr->acParams[acID].acQosInitParams,
354 &pQosMngr->acParams[acID].acQosParams,
358 if(verifyAndConfigQosParams(hQosMngr,&(pQosMngr->acParams[acID].acQosParams)) != TI_OK)
360 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetDefault: failed on verifyAndConfigQosParams\n");
370 pQosMngr->acParams[acID].desiredWmeAcPsMode = PS_SCHEME_UPSD_TRIGGER;
374 pQosMngr->acParams[acID].desiredWmeAcPsMode = PS_SCHEME_LEGACY;
377 pQosMngr->acParams[acID].currentWmeAcPsMode = PS_SCHEME_LEGACY; /* default configuration is legacy PS for all queues */
380 txCtrlParams_setAcMsduLifeTime(pQosMngr->hTxCtrl, acID, pQosMngrInitParams->MsduLifeTime[acID]);
381 txCtrlParams_setAcAckPolicy(pQosMngr->hTxCtrl, acID, ACK_POLICY_LEGACY);
384 pQosMngr->acParams[acID].wmeAcAckPolicy = pQosMngrInitParams->acAckPolicy[acID];
387 setNonQosAdmissionState(pQosMngr, acID);
393 pQosMngr->aTidPsRxStreaming[uTid].uTid = uTid;
394 pQosMngr->aTidPsRxStreaming[uTid].bEnabled = TI_FALSE;
396 pQosMngr->uNumEnabledPsRxStreams = 0;
399 txCtrlParams_setQosHeaderConverMode(pQosMngr->hTxCtrl, HDR_CONVERT_LEGACY);
405 pQosMngr->aBaPolicy[uTid] = pQosMngrInitParams->aBaPolicy[uTid];
406 pQosMngr->aBaInactivityTimeout[uTid] = pQosMngrInitParams->aBaInactivityTimeout[uTid];
411 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_config : QoS configuration complete!");
432 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
437 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].AC = (EAcTrfcType)acID;
438 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority = INACTIVE_USER_PRIORITY; /* Setting invalid user Priority to prevent GET_TSPEC or DELETE */
439 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].nominalMsduSize = 0;
440 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].minimumPHYRate = 0;
441 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].meanDataRate = 0;
442 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].surplausBwAllowance = 0;
443 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].mediumTime = 0;
444 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].UPSDFlag = 0;
445 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMinimumServiceInterval = 0;
446 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMaximumServiceInterval = 0;
447 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].streamDirection = BI_DIRECTIONAL;
448 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
450 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].AC = (EAcTrfcType)acID;
451 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].userPriority = INACTIVE_USER_PRIORITY; /* Setting invalid user Priority to prevent GET_TSPEC or DELETE */
452 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].nominalMsduSize = 0;
453 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].minimumPHYRate = 0;
454 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].meanDataRate = 0;
455 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].surplausBwAllowance = 0;
456 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].mediumTime = 0;
457 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].UPSDFlag = 0;
458 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].uMinimumServiceInterval = 0;
459 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].uMaximumServiceInterval = 0;
460 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].streamDirection = BI_DIRECTIONAL;
461 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
463 pQosMngr->resourceMgmtTable.totalAllocatedMediumTime = 0;
484 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
491 pQosMngr->activeProtocol = QOS_NONE;
492 pQosMngr->WMESiteSupport = TI_FALSE;
495 qosMngr_resetAdmCtrlParameters(pQosMngr);
497 trafficAdmCtrl_stop(pQosMngr->pTrafficAdmCtrl);
502 txCtrlParams_setAdmissionCtrlParams(pQosMngr->hTxCtrl, acID, 0 , 0, TI_FALSE);
510 if (pQosMngr->qosPacketBurstEnable==TI_TRUE)
512 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
516 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = QOS_TX_OP_LIMIT_DEF;
521 os_memoryCopy(pQosMngr->hOs,&(pQosMngr->acParams[acID].acQosParams),&(pQosMngr->acParams[acID].acQosInitParams),sizeof(TAcQosParams));
526 os_memoryCopy(pQosMngr->hOs,&(pQosMngr->acParams[acID].QtrafficParams),&(pQosMngr->acParams[acID].QTrafficInitParams),sizeof(TQueueTrafficParams));
529 pQosMngr->acParams[acID].currentWmeAcPsMode = PS_SCHEME_LEGACY; /* default configuration is legacy PS for all queues */
532 txCtrlParams_setAcAckPolicy(pQosMngr->hTxCtrl, acID, ACK_POLICY_LEGACY);
535 setNonQosAdmissionState(pQosMngr, acID);
546 status = verifyAndConfigTrafficParams(hQosMngr,&(pQosMngr->acParams[QOS_AC_BE].QtrafficParams));
549 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setSite:failed to init NON_QOS Queue Traffic parameters!!!\n\n");
557 status = verifyAndConfigQosParams(hQosMngr,&(pQosMngr->acParams[QOS_AC_BE].acQosParams));
560 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setSite:failed to init NON_QOS AC QoS parameters!!!\n\n");
565 txCtrlParams_setQosHeaderConverMode(pQosMngr->hTxCtrl, HDR_CONVERT_LEGACY);
573 TPsRxStreaming *pCurrTidParams = &pQosMngr->aTidPsRxStreaming[uTid];
578 TWD_CfgPsRxStreaming (pQosMngr->hTWD, pCurrTidParams, NULL, NULL);
581 pQosMngr->uNumEnabledPsRxStreams = 0;
585 pQosMngr->isConnected = TI_FALSE;
588 pQosMngr->QosNullDataTemplateUserPriority = 0xFF;
590 pQosMngr->voiceTspecConfigured = TI_FALSE;
591 pQosMngr->videoTspecConfigured = TI_FALSE;
594 pQosMngr->QosNullDataTemplateUserPriority = 0xFF;
596 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_disconnect : QoS disconnect complete!");
599 measurementMgr_stopTsMetrics(pQosMngr->hMeasurementMngr);
622 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
628 if (pQosMngr->isConnected == TI_TRUE)
630 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_connect : Already connected !!!\n");
639 buildPsPollTemplate(pQosMngr->hSiteMgr, &templateStruct);
640 TWD_CmdTemplate (pQosMngr->hTWD, &templateStruct, NULL, NULL);
643 pQosMngr->isConnected = TI_TRUE;
649 if (pQosMngr->acParams[acID].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
652 if ( pQosMngr->acParams[acID].apInitAdmissionState != ADMISSION_REQUIRED )
654 pQosMngr->QosNullDataTemplateUserPriority = WMEQosAcToTid[acID];
659 buildQosNullDataTemplate(pQosMngr->hSiteMgr, &templateStruct,pQosMngr->QosNullDataTemplateUserPriority);
660 TWD_CmdTemplate (pQosMngr->hTWD, &templateStruct, NULL, NULL);
662 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "setWmeSiteParams: Setting QOS Null data for UserPriority %d (belongs to AC %d)\n", WMEQosAcToTid[acID], acID);
671 if ((pQosMngr->QosNullDataTemplateUserPriority == 0xFF) && (UPSDCnt == MAX_NUM_OF_AC))
673 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_connect : QOS Null Data template not set since all ACs require admission !!!\n");
690 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
695 StaCap_IsHtEnable(pQosMngr->hStaCap, &b11nEnable);
701 ctrlData_getParam(pQosMngr->hCtrlData, &param);
706 if ((pQosMngr->aBaPolicy[uTidIndex] == BA_POLICY_INITIATOR) ||
707 (pQosMngr->aBaPolicy[uTidIndex] == BA_POLICY_INITIATOR_AND_RECEIVER))
709 TWD_CfgSetBaInitiator (pQosMngr->hTWD,
714 pQosMngr->aBaInactivityTimeout[uTidIndex]);
717 if ((pQosMngr->aBaPolicy[uTidIndex] == BA_POLICY_RECEIVER) ||
718 (pQosMngr->aBaPolicy[uTidIndex] == BA_POLICY_INITIATOR_AND_RECEIVER))
720 TWD_CfgSetBaReceiver (pQosMngr->hTWD,
749 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
751 if (pQosMngr->desiredPsMode == PS_SCHEME_UPSD_TRIGGER && siteAPSDSupport)
761 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
763 if (pQosMngr == NULL)
765 *actProt = pQosMngr->activeProtocol;
787 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
789 if(pQosMngr == NULL)
792 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_getParams: %x\n", pParamInfo->paramType);
797 pParamInfo->content.qosPacketBurstEnb = pQosMngr->qosPacketBurstEnable;
800 pParamInfo->content.currentPsMode = pQosMngr->currentPsMode;
804 pParamInfo->content.qosSiteProtocol = pQosMngr->activeProtocol;
808 pParamInfo->content.qosDesiredPsMode.uDesiredPsMode = pQosMngr->desiredPsMode;
810 pParamInfo->content.qosDesiredPsMode.uDesiredWmeAcPsMode[acID] = pQosMngr->acParams[acID].desiredWmeAcPsMode;
815 pParamInfo->content.TspecConfigure.voiceTspecConfigure = (TI_UINT8)pQosMngr->voiceTspecConfigured;
816 pParamInfo->content.TspecConfigure.videoTspecConfigure = (TI_UINT8)pQosMngr->videoTspecConfigured;
818 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_getParams: QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC=%d\n", pQosMngr->voiceTspecConfigured);
820 if (pQosMngr->voiceTspecConfigured == TI_TRUE)
826 pTspecParams = &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_6];
827 pConfiguredParams = &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_6];
841 pQosMngr->tspecRenegotiationParams[USER_PRIORITY_6].uUserPriority = MAX_USER_PRIORITY;
844 if (pQosMngr->videoTspecConfigured == TI_TRUE)
850 pTspecParams = &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4];
851 pConfiguredParams = &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_4];
865 pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4].uUserPriority = MAX_USER_PRIORITY;
875 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Not connected to an AP...\n");
878 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "AP does not support QOS...\n");
881 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Invalid parameter...\n");
884 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Unknown return value...\n");
893 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getTspecParams: userPriority > 7 -> Ignore !!!\n");
897 if(pQosMngr->isConnected == TI_FALSE)
899 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getTspecParams: Not connected - Ignoring request !!!\n");
903 if(pQosMngr->activeProtocol == QOS_NONE)
905 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getTspecParams: Not connected to QOS AP - Ignoring reqeust !!!\n");
912 if(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState == AC_WAIT_ADMISSION)
914 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: AC = %d , TSPEC Signaling is in progress -> Ignoring request !!!\n",acID);
919 if(pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority != pParamInfo->content.qosTspecParameters.uUserPriority)
921 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getTspecParams: user priority is not admitted. -> Ignore !!!\n");
925 pParamInfo->content.qosTspecParameters.uMeanDataRate = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].meanDataRate;
926 pParamInfo->content.qosTspecParameters.uNominalMSDUsize = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].nominalMsduSize;
927 pParamInfo->content.qosTspecParameters.uAPSDFlag = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].UPSDFlag;
928 pParamInfo->content.qosTspecParameters.uMinimumServiceInterval = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMinimumServiceInterval;
929 pParamInfo->content.qosTspecParameters.uMaximumServiceInterval = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMaximumServiceInterval;
930 pParamInfo->content.qosTspecParameters.uMinimumPHYRate = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].minimumPHYRate;
931 pParamInfo->content.qosTspecParameters.uSurplusBandwidthAllowance = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].surplausBwAllowance;
932 pParamInfo->content.qosTspecParameters.uMediumTime = pQosMngr->resourceMgmtTable.currentTspecInfo[acID].mediumTime;
940 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setParams :Error trying to set invalid acId: %d param\n",pParamInfo->content.qosApQosParams.uAC);
943 if(pQosMngr->isConnected == TI_FALSE)
945 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Not connected to an AP...\n");
948 if(pQosMngr->activeProtocol == QOS_NONE)
950 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "AP does not support QOS...\n");
954 pParamInfo->content.qosApQosParams.uAssocAdmissionCtrlFlag = pQosMngr->acParams[acID].apInitAdmissionState; /* admission flag */
955 pParamInfo->content.qosApQosParams.uAIFS = pQosMngr->acParams[acID].acQosParams.aifsn;
956 pParamInfo->content.qosApQosParams.uCwMin = (1 << pQosMngr->acParams[acID].acQosParams.cwMin)-1;
957 pParamInfo->content.qosApQosParams.uCwMax = (1 << pQosMngr->acParams[acID].acQosParams.cwMax)-1;
958 pParamInfo->content.qosApQosParams.uTXOPLimit = pQosMngr->acParams[acID].acQosParams.txopLimit << 5;
966 TPsRxStreaming *pTidStream = &pQosMngr->aTidPsRxStreaming[uTid];
968 os_memoryCopy (pQosMngr->hOs, (void *)pParams, (void *)pTidStream, sizeof(TPsRxStreaming));
974 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getParams Error: unknown paramType 0x%x!\n",pParamInfo->paramType);
998 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1003 if(pQosMngr == NULL)
1008 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setParams :Error trying to set NULL params!\n");
1012 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setParams: %x\n", pParamInfo->paramType);
1023 if (pParamInfo->content.qosPacketBurstEnb == pQosMngr->qosPacketBurstEnable)
1027 pQosMngr->qosPacketBurstEnable = pParamInfo->content.qosPacketBurstEnb;
1033 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
1036 if (pQosMngr->activeProtocol == QOS_NONE)
1038 pQosMngr->acParams[QOS_AC_BE].acQosParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
1040 status = verifyAndConfigQosParams(hQosMngr,&(pQosMngr->acParams[QOS_AC_BE].acQosParams));
1050 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = QOS_TX_OP_LIMIT_DEF;
1053 if (pQosMngr->activeProtocol == QOS_NONE)
1055 pQosMngr->acParams[QOS_AC_BE].acQosParams.txopLimit = QOS_TX_OP_LIMIT_DEF;
1057 status = verifyAndConfigQosParams(hQosMngr,&(pQosMngr->acParams[QOS_AC_BE].acQosParams));
1066 pQosMngr->WMESiteSupport = TI_TRUE;
1068 pQosMngr->WMESiteSupport = TI_FALSE;
1073 return qosMngr_SetPsRxStreaming (pQosMngr, &pParamInfo->content.tPsRxStreaming);
1079 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setParams :Error trying to set invalid acId: %d param\n",pParamInfo->content.qosOsParams.acID);
1086 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setParams :Error trying to set invalid PSDeliveryProtocol: %d param\n",pParamInfo->content.qosOsParams.PSDeliveryProtocol);
1094 if( (pParamInfo->content.qosOsParams.PSDeliveryProtocol != pQosMngr->acParams[acID].desiredWmeAcPsMode) &&
1095 (pQosMngr->isConnected == TI_TRUE) )
1097 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setParams :Error trying to set new PS protocol while connected");
1106 pQosMngr->acParams[acID].QtrafficParams.psScheme = pQosMngr->acParams[acID].currentWmeAcPsMode;
1107 pQosMngr->acParams[acID].msduLifeTimeParam = pParamInfo->content.qosOsParams.MaxLifeTime;
1109 status = verifyAndConfigTrafficParams(pQosMngr,&(pQosMngr->acParams[acID].QtrafficParams));
1114 txCtrlParams_setAcMsduLifeTime(pQosMngr->hTxCtrl, acID, pParamInfo->content.qosOsParams.MaxLifeTime);
1118 pQosMngr->acParams[acID].desiredWmeAcPsMode = (PSScheme_e) pParamInfo->content.qosOsParams.PSDeliveryProtocol;
1122 if( (pQosMngr->activeProtocol == QOS_WME) && (pQosMngr->desiredPsMode == PS_SCHEME_UPSD_TRIGGER) && (pParamInfo->content.currentPsMode == PS_SCHEME_UPSD_TRIGGER) )
1123 pQosMngr->currentPsMode = PS_SCHEME_UPSD_TRIGGER;
1125 pQosMngr->currentPsMode = PS_SCHEME_LEGACY;
1129 pQosMngr->TSPECNegotiationResultCallb = NULL;
1130 pQosMngr->TSPECNegotiationResultModule = NULL;
1138 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Driver is still waiting for a response of previous request...\n");
1141 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Other user priority from the same AC has already used a TSPEC...\n");
1144 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Not connected to an AP...\n");
1147 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "AP does not support QOS...\n");
1150 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Invalid parameter...\n");
1153 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Unknown return value...\n");
1159 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setParams: QOS_MNGR_RESEND_TSPEC_REQUEST\n");
1160 pQosMngr->TSPECNegotiationResultCallb = (qosMngrCallb_t)pParamInfo->content.qosRenegotiateTspecRequest.callback;
1161 pQosMngr->TSPECNegotiationResultModule = pParamInfo->content.qosRenegotiateTspecRequest.handler;
1162 status = qosMngr_requestAdmission(hQosMngr, &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_6]);
1164 if ((status == TI_OK) && (pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4].uUserPriority != MAX_USER_PRIORITY))
1166 status = qosMngr_requestAdmission(hQosMngr, &pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4]);
1177 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Not connected to an AP...\n");
1180 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "AP does not support QOS...\n");
1183 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Invalid parameter...\n");
1186 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Unknown return value...\n");
1194 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, " :Error trying to set invalid zero timeout for UPSD \n");
1198 pQosMngr->rxTimeOut.psPoll = (TI_UINT16)pParamInfo->content.rxTimeOut.psPoll;
1199 pQosMngr->rxTimeOut.UPSD = (TI_UINT16)pParamInfo->content.rxTimeOut.UPSD;
1204 param.content.halCtrlRxTimeOut = pQosMngr->rxTimeOut;
1205 TWD_SetParam (pQosMngr->hTWD, &param);
1211 pQosMngr->performTSPECRenegotiation = TI_TRUE;
1213 pQosMngr->performTSPECRenegotiation = TI_FALSE;
1215 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setParams: QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC=%d\n", pQosMngr->performTSPECRenegotiation);
1219 TRACE1(pQosMngr
1243 static TI_STATUS verifyAndConfigTrafficParams(qosMngr_t *pQosMngr, TQueueTrafficParams *pQtrafficParams)
1250 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigTrafficParams :Error trying to set invalid queueID: %d param",pQtrafficParams->queueID);
1258 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigTrafficParams :Error trying to set invalid channelType: %d param",pQtrafficParams->channelType);
1267 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigTrafficParams :Error trying to set invalid tsid: %d param",pQtrafficParams->tsid);
1275 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigTrafficParams :Error trying to set invalid psScheme: %d param",pQtrafficParams->psScheme);
1282 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigTrafficParams :Error trying to set invalid ackPolicy: %d param",pQtrafficParams->ackPolicy);
1293 return TWD_SetParam (pQosMngr->hTWD, &param);
1311 static TI_STATUS verifyAndConfigQosParams(qosMngr_t *pQosMngr,TAcQosParams *pAcQosParams)
1317 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigQosParams :Error trying to set invalid ac : %d param",pAcQosParams->ac);
1323 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigQosParams :Error trying to set invalid aifsn : %d param",pAcQosParams->aifsn);
1330 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigQosParams :Error trying to set invalid cwMax : %d param",pAcQosParams->cwMax);
1336 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigQosParams :Error trying to set invalid cwMax : %d param",pAcQosParams->cwMax);
1342 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "verifyAndConfigQosParams :Error trying to set invalid txopLimit : %d param",pAcQosParams->txopLimit);
1354 return TWD_CfgAcParams (pQosMngr->hTWD, &acQosParams, NULL, NULL);
1374 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1376 *bWmeEnable = pQosMngr->WMEEnable;
1397 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1401 if(pQosMngr->WMESiteSupport && pQosMngr->WMEEnable)
1403 pQosMngr->activeProtocol = QOS_WME;
1407 pQosMngr->activeProtocol = QOS_NONE;
1409 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, " qosMngr_selectActiveProtocol() : pQosMngr->activeProtocol %d\n",pQosMngr->activeProtocol);
1431 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1434 if(pQosMngr->currentPsMode == PS_SCHEME_UPSD_TRIGGER)
1438 if(pQosMngr->acParams[acID].desiredWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1440 pQosMngr->acParams[acID].currentWmeAcPsMode = PS_SCHEME_UPSD_TRIGGER;
1465 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1470 if(pQosMngr->activeProtocol == QOS_WME)
1479 if(pQosMngr->currentPsMode == PS_SCHEME_UPSD_TRIGGER)
1481 if(pQosMngr->acParams[QOS_AC_VO].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1485 if(pQosMngr->acParams[QOS_AC_VI].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1490 if(pQosMngr->acParams[QOS_AC_BK].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1495 if(pQosMngr->acParams[QOS_AC_BE].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1500 dot11_QOS_CAPABILITY_IE->QosInfoField |= (((pQosMngr->desiredMaxSpLen) & MAX_SP_LENGTH_MASK) << MAX_SP_LENGTH_SHIFT);
1502 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "dot11_QOS_CAPABILITY_IE->QosInfoField = 0x%x\n",dot11_QOS_CAPABILITY_IE->QosInfoField);
1509 if (pQosMngr->performTSPECRenegotiation == TI_TRUE)
1511 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_getQosCapabiltyInfeElement: performing TSPEC renegotiation\n");
1513 status = XCCMngr_getXCCQosIElements(pQosMngr->hXCCMgr, (pQosIe+(*pLen)), &extraIeLen);
1542 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1547 if(pQosMngr == NULL)
1554 switch(pQosMngr->activeProtocol)
1557 status = getWMEInfoElement(pQosMngr,pQosIe,&temp);
1590 static TI_STATUS getWMEInfoElement(qosMngr_t *pQosMngr,TI_UINT8 *pWMEie,TI_UINT8 *pLen)
1604 if(pQosMngr->currentPsMode == PS_SCHEME_UPSD_TRIGGER)
1606 if(pQosMngr->acParams[QOS_AC_VO].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1610 if(pQosMngr->acParams[QOS_AC_VI].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1615 if(pQosMngr->acParams[QOS_AC_BK].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1620 if(pQosMngr->acParams[QOS_AC_BE].currentWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER)
1625 pDot11_WME_IE->ACInfoField |= (((pQosMngr->desiredMaxSpLen) & MAX_SP_LENGTH_MASK) << MAX_SP_LENGTH_SHIFT);
1651 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1656 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_checkTspecRenegResults: performTSPECRenegotiation = %d, tspecParams received= %x\n", pQosMngr->performTSPECRenegotiation, assocRsp->tspecVoiceParameters);
1658 if (pQosMngr->performTSPECRenegotiation != TI_TRUE)
1662 measurementMgr_disableTsMetrics(pQosMngr->hMeasurementMngr, MAX_NUM_OF_AC);
1670 qosMngr_setAdmissionInfo(pQosMngr, USER_PRIORITY_6,
1671 &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_6],
1674 if (pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4].uUserPriority != MAX_USER_PRIORITY)
1676 qosMngr_setAdmissionInfo(pQosMngr, USER_PRIORITY_4,
1677 &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_4],
1681 pQosMngr->hMeasurementMngr, MAX_NUM_OF_AC);
1690 pQosMngr->voiceTspecConfigured = TI_TRUE;
1693 qosMngr_setAdmissionInfo(pQosMngr, tspecInfo.AC, &tspecInfo, STATUS_TRAFFIC_ADM_REQUEST_ACCEPT);
1699 pQosMngr->videoTspecConfigured = TI_TRUE;
1701 qosMngr_setAdmissionInfo(pQosMngr, tspecInfo.AC, &tspecInfo, STATUS_TRAFFIC_ADM_REQUEST_ACCEPT);
1703 else if (pQosMngr->tspecRenegotiationParams[USER_PRIORITY_4].uUserPriority != MAX_USER_PRIORITY)
1706 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setSite: Signal TSPEC was not re-negotiated while voice was \n");
1707 qosMngr_setAdmissionInfo(pQosMngr, USER_PRIORITY_4,
1708 &pQosMngr->resourceMgmtTable.candidateTspecInfo[USER_PRIORITY_4],
1716 XCCMngr_setXCCQoSParams(pQosMngr->hXCCMgr, &assocRsp->XCCIEs[acCount], acCount);
1738 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1745 switch(pQosMngr->activeProtocol)
1749 status = verifyWmeIeParams(pQosMngr, (TI_UINT8 *)assocRsp->WMEParams);
1752 pQosMngr->activeProtocol = QOS_NONE;
1753 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setSite: setting active protocol QOS_WME params with non QOS_WME IE params frame, setting active protocol back to NONE \n");
1757 status = setWmeSiteParams(pQosMngr, (TI_UINT8 *)assocRsp->WMEParams);
1760 pQosMngr->activeProtocol = QOS_NONE;
1761 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "Warning: qosMngr_setSite-> failed to set AC QOS_WME parameters!!! , setting active protocol back to NONE\n");
1765 status = siteMgr_setWMEParamsSite(pQosMngr->hSiteMgr, assocRsp->WMEParams);
1768 pQosMngr->activeProtocol = QOS_NONE;
1769 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setSite:failed to init QOS_WME parameters!!! , setting active protocol back to NONE\n\n");
1779 if (pQosMngr->qosPacketBurstEnable == TI_TRUE)
1782 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
1784 pQosMngr->acParams[QOS_AC_BE].acQosInitParams.txopLimit = pQosMngr->qosPacketBurstTxOpLimit;
1786 status = verifyAndConfigQosParams(hQosMngr,&(pQosMngr->acParams[QOS_AC_BE].acQosParams));
1789 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "qosMngr_setSite:failed to init NON_QOS parameters!!!\n\n");
1797 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "Warning: qosMngr_setSite NO active protocls To set \n");
1802 qosMngr_checkTspecRenegResults(pQosMngr, assocRsp);
1824 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1830 if(pQosMngr == NULL)
1834 switch(pQosMngr->activeProtocol)
1842 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "Warning: updateIEinfo -> trying to update QOS_WME parameters with NULL site parameters!!!\n");
1847 status = verifyWmeIeParams(pQosMngr,pQosIeParams);
1850 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "Warning: updateIEinfo ->upadting active protocl QOS_WME params with non QOS_WME IE params frame !!!\n");
1856 status = updateACParams(pQosMngr,&(pWMEparams->WME_ACParameteres));
1859 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "updateIEinfo-> failed to update AC QOS_WME parameters!!!\n\n");
1866 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "updateIEinfo-> trying to update qos paramters without active protocol !!!");
1876 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
1881 pPreservedParams = &pQosMngr->tspecRenegotiationParams[user_priority];
1882 pCandidateParams = &pQosMngr->resourceMgmtTable.candidateTspecInfo[user_priority];
1889 trafficAdmCtrl_buildTSPec(pQosMngr->pTrafficAdmCtrl, pCandidateParams, pQosIe, &ieLen);
1913 static TI_STATUS setWmeSiteParams(qosMngr_t *pQosMngr, TI_UINT8 *pQosIeParams)
1921 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "setWmeSiteParams: pQosIeParams is NULL !");
1928 txCtrlParams_setAcAckPolicy(pQosMngr->hTxCtrl, acID, pQosMngr->acParams[acID].wmeAcAckPolicy);
1941 status = updateACParams(pQosMngr,&(pWMEparams->WME_ACParameteres));
1946 txCtrlParams_setQosHeaderConverMode(pQosMngr->hTxCtrl, HDR_CONVERT_QOS);
1966 static TI_STATUS updateACParams(qosMngr_t *pQosMngr,dot11_ACParameters_t *pAcParams)
1985 pAcTrafficAdmState = &(pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState);
1989 pQosMngr->acParams[acID].acQosParams.ac = acID;
1990 pQosMngr->acParams[acID].acQosParams.aifsn = pACParameteresRecord->ACI_AIFSN & AC_PARAMS_AIFSN_MASK;
1991 pQosMngr->acParams[acID].acQosParams.txopLimit = pACParameteresRecord->TXOPLimit;
1994 if(TI_TRUE ==pQosMngr->bCwFromUserEnable)
1996 pQosMngr->acParams[acID].acQosParams.cwMin = pQosMngr->uDesireCwMin;
1997 pQosMngr->acParams[acID].acQosParams.cwMax = pQosMngr->uDesireCwMax;
2001 pQosMngr->acParams[acID].acQosParams.cwMin = pACParameteresRecord->ECWmin_ECWmax & AC_PARAMS_CWMIN_MASK;
2002 pQosMngr->acParams[acID].acQosParams.cwMax = (pACParameteresRecord->ECWmin_ECWmax & AC_PARAMS_CWMAX_MASK) >> 4;
2005 status = verifyAndConfigQosParams(pQosMngr,&(pQosMngr->acParams[acID].acQosParams));
2011 pQosMngr->acParams[acID].QtrafficParams.psScheme = pQosMngr->acParams[acID].currentWmeAcPsMode;
2012 status = verifyAndConfigTrafficParams(pQosMngr,&(pQosMngr->acParams[acID].QtrafficParams));
2020 pQosMngr->acParams[acID].apInitAdmissionState = ADMISSION_REQUIRED;
2023 txCtrlParams_setAcAdmissionStatus(pQosMngr->hTxCtrl, acID, ADMISSION_REQUIRED, AC_NOT_ADMITTED);
2027 pQosMngr->acParams[acID].apInitAdmissionState = ADMISSION_NOT_REQUIRED;
2030 txCtrlParams_setAcAdmissionStatus(pQosMngr->hTxCtrl, acID, ADMISSION_NOT_REQUIRED, AC_ADMITTED);
2039 TPsRxStreaming *pTid1Params = &pQosMngr->aTidPsRxStreaming[uTid1];
2040 TPsRxStreaming *pTid2Params = &pQosMngr->aTidPsRxStreaming[uTid2];
2044 TWD_CfgPsRxStreaming (pQosMngr->hTWD, pTid1Params, NULL, NULL);
2048 TWD_CfgPsRxStreaming (pQosMngr->hTWD, pTid2Params, NULL, NULL);
2071 static TI_STATUS verifyWmeIeParams(qosMngr_t *pQosMngr,TI_UINT8 *pQosIeParams)
2079 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, ": pQosIeParams is NULL!! \n");
2084 getWMEInfoElement(pQosMngr,(TI_UINT8 *)&WMEie,(TI_UINT8 *)&Len);
2092 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_WARNING, ": QosIeParams mismatch (ID or OUI)!! \n");
2098 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_WARNING, ": Driver QOS_WME version: %d, Site QOS_WME version: %d\n", WMEie.version, pWMERecvIe->version);
2109 INPUT: pQosMngr - Qos Manager handle.
2117 static TI_STATUS qosMngr_SetPsRxStreaming (qosMngr_t *pQosMngr, TPsRxStreaming *pNewParams)
2121 pQosMngr->aTidPsRxStreaming[uCurrTid];
2125 if (pQosMngr->isConnected == TI_FALSE)
2127 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetPsRxStreaming: Not connected - Ignoring request !!!\n");
2132 if (pQosMngr->activeProtocol != QOS_WME)
2134 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetPsRxStreaming: Not connected to a QOS AP - Ignoring request !!!\n");
2141 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "TID = %d > 7 !!!\n", uCurrTid);
2146 if (pQosMngr->resourceMgmtTable.currentTspecInfo[uAcId].trafficAdmState != AC_ADMITTED)
2148 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetPsRxStreaming: AC = %d is not admitted -> Ignoring request !!!\n", uAcId);
2155 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetPsRxStreaming: TID %d is already disabled -> Ignoring request !!!\n", uCurrTid);
2162 pQosMngr->uNumEnabledPsRxStreams == MAX_ENABLED_PS_RX_STREAMS)
2164 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_SetPsRxStreaming: Can't have more than %d TIDs enabled -> Ignoring request !!!\n", MAX_ENABLED_PS_RX_STREAMS);
2169 os_memoryCopy (pQosMngr->hOs, (void *)pCurrTidParams, (void *)pNewParams, sizeof(TPsRxStreaming));
2176 pQosMngr->uNumEnabledPsRxStreams++;
2181 pQosMngr->uNumEnabledPsRxStreams--;
2185 return TWD_CfgPsRxStreaming (pQosMngr->hTWD, pCurrTidParams, NULL, NULL);
2209 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2215 if(pQosMngr->isConnected == TI_FALSE)
2217 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: Not connected - Ignoring request !!!\n");
2222 if(pQosMngr->activeProtocol != QOS_WME)
2224 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: Not connected to a QOS AP - Ignoring request !!!\n");
2229 if(pQosMngr->trafficAdmCtrlEnable == TI_FALSE)
2231 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: Admission-Control is disabled - Ignoring request !!!\n");
2238 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "uUserPriority = %d > 7 !!!\n",addTspecParams->uUserPriority);
2246 if(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState == AC_WAIT_ADMISSION)
2248 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: AC = %d , signaling is in process -> Ignore Request !!!\n",acID);
2253 if( (pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState == AC_ADMITTED) &&
2254 (pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority <= MAX_USER_PRIORITY) &&
2255 (pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority != addTspecParams->uUserPriority) )
2257 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_requestAdmission: AC = %d , another UP (%d) on same AC is already admited -> Ignoring request !!!\n", acID, pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority);
2264 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "uNominalMSDUsize = %d > 2312, !!!\n",addTspecParams->uNominalMSDUsize);
2269 if( (addTspecParams->uAPSDFlag == PS_SCHEME_UPSD_TRIGGER) && (pQosMngr->currentPsMode != PS_SCHEME_UPSD_TRIGGER) )
2271 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "The STA's current status does not support UPSD -> Ignoring TSPEC request that has UPSD on !!!\n");
2275 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_requestAdmission: UP = %d , acID = %d\n",addTspecParams->uUserPriority, acID);
2278 qosMngr_storeTspecCandidateParams (&(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID]),
2284 pQosMngr->voiceTspecConfigured = TI_TRUE;
2289 pQosMngr->videoTspecConfigured = TI_TRUE;
2293 status = trafficAdmCtrl_startAdmRequest(pQosMngr->pTrafficAdmCtrl, &(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID]));
2298 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_WAIT_ADMISSION;
2299 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_requestAdmission: UP = %d , request TI_OK !!!\n",addTspecParams->uUserPriority);
2304 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2305 TRACE2(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "qosMngr_requestAdmission: UP = %d , request NOT TI_OK status=%d!!!\n",addTspecParams->uUserPriority, status);
2328 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2334 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: userPriority > 7 -> Ignore !!!");
2339 if(pQosMngr->isConnected == TI_FALSE)
2341 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: pQosMngr->connected == TI_FALSE -> Ignore !!!");
2346 if(pQosMngr->activeProtocol != QOS_WME)
2348 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: activeProtocol != QOS_WME -> Ignore !!!");
2356 if(pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState != AC_ADMITTED)
2358 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: AC is not ADMITED -> Ignore !!!");
2363 if(pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority != delAdmissionParams->uUserPriority)
2365 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: user priority is invalid. -> Ignore !!!\n");
2370 if(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState == AC_WAIT_ADMISSION)
2372 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_deleteAdmission: AC is under negotiation -> Ignore !!!");
2379 trafficAdmCtrl_sendDeltsFrame(pQosMngr->pTrafficAdmCtrl, &(pQosMngr->resourceMgmtTable.currentTspecInfo[acID]),
2383 deleteTspecConfiguration(pQosMngr, acID);
2402 static void deleteTspecConfiguration(qosMngr_t *pQosMngr, TI_UINT8 acID)
2407 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].nominalMsduSize = 0;
2408 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].minimumPHYRate = 0;
2409 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].meanDataRate = 0;
2410 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].surplausBwAllowance = 0;
2411 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].mediumTime = 0;
2412 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].UPSDFlag = 0;
2413 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMinimumServiceInterval = 0;
2414 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].uMaximumServiceInterval = 0;
2415 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].streamDirection = BI_DIRECTIONAL;
2418 pQosMngr->resourceMgmtTable.totalAllocatedMediumTime -= pQosMngr->resourceMgmtTable.currentTspecInfo[acID].mediumTime;
2424 ctrlData_setParam(pQosMngr->hCtrlData, &param);
2428 measurementMgr_disableTsMetrics(pQosMngr->hMeasurementMngr, acID);
2432 if( pQosMngr->acParams[acID].apInitAdmissionState == ADMISSION_REQUIRED )
2435 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2438 txCtrlParams_setAdmissionCtrlParams(pQosMngr->hTxCtrl,
2440 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].mediumTime ,
2441 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].minimumPHYRate, TI_FALSE);
2445 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_ADMITTED;
2449 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority = INACTIVE_USER_PRIORITY;
2453 if ((pQosMngr->currentPsMode == PS_SCHEME_UPSD_TRIGGER) && (pQosMngr->acParams[acID].desiredWmeAcPsMode == PS_SCHEME_UPSD_TRIGGER))
2455 pQosMngr->acParams[acID].currentWmeAcPsMode = PS_SCHEME_UPSD_TRIGGER;
2459 pQosMngr->acParams[acID].currentWmeAcPsMode = PS_SCHEME_LEGACY;
2464 pQosMngr->voiceTspecConfigured = TI_FALSE;
2469 pQosMngr->videoTspecConfigured = TI_FALSE;
2475 pQosMngr->acParams[acID].QtrafficParams.psScheme = pQosMngr->acParams[acID].currentWmeAcPsMode;
2476 verifyAndConfigTrafficParams(pQosMngr,&(pQosMngr->acParams[acID].QtrafficParams));
2479 if (pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState == AC_NOT_ADMITTED)
2483 TPsRxStreaming *pTid1Params = &pQosMngr->aTidPsRxStreaming[uTid1];
2484 TPsRxStreaming *pTid2Params = &pQosMngr->aTidPsRxStreaming[uTid2];
2489 TWD_CfgPsRxStreaming (pQosMngr->hTWD, pTid1Params, NULL, NULL);
2490 pQosMngr->uNumEnabledPsRxStreams--;
2495 TWD_CfgPsRxStreaming (pQosMngr->hTWD, pTid2Params, NULL, NULL);
2496 pQosMngr->uNumEnabledPsRxStreams--;
2512 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2528 EvHandlerSendEvent(pQosMngr->hEvHandler, IPC_EVENT_TSPEC_STATUS, (TI_UINT8*)(&addtsReasonCode), sizeof(OS_802_11_QOS_TSPEC_PARAMS));
2555 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2560 if(pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState != AC_WAIT_ADMISSION)
2562 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setAdmissionInfo: acID = %d, trafficAdmState != WAIT. IGNORE !!!\n", acID);
2567 if (pQosMngr->TSPECNegotiationResultCallb != NULL)
2569 pQosMngr->TSPECNegotiationResultCallb (pQosMngr->TSPECNegotiationResultModule, trafficAdmRequestStatus);
2570 pQosMngr->TSPECNegotiationResultCallb = NULL;
2571 pQosMngr->TSPECNegotiationResultModule = NULL;
2579 TRACE3(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setAdmissionInfo: admCtrl status = REQUEST_ACCEPT [ acID = %d, mediumTime = %d, minimumPHYRate = %d ]\n", acID, pTspecInfo->mediumTime, pTspecInfo->minimumPHYRate);
2593 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2596 if (pTspecInfo->tid == pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].tid)
2601 EvHandlerSendEvent (pQosMngr->hEvHandler,
2611 EvHandlerSendEvent (pQosMngr->hEvHandler,
2619 os_memoryCopy (pQosMngr->hOs,
2620 &pQosMngr->resourceMgmtTable.currentTspecInfo[acID],
2625 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_ADMITTED;
2628 pQosMngr->resourceMgmtTable.totalAllocatedMediumTime += pTspecInfo->mediumTime;
2638 pQosMngr->QosNullDataTemplateUserPriority == 0xFF)
2641 pQosMngr->QosNullDataTemplateUserPriority = (TI_UINT8)addtsReasonCode.uUserPriority;
2646 buildQosNullDataTemplate (pQosMngr->hSiteMgr, &templateStruct, pQosMngr->QosNullDataTemplateUserPriority);
2647 TWD_CmdTemplate (pQosMngr->hTWD, &templateStruct, NULL, NULL);
2649 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setAdmissionInfo: Setting QOS null data for UserPriority=%d (due to TSPEC ACCEPT response)\n", addtsReasonCode.uUserPriority);
2656 if (pQosMngr->acParams[acID].apInitAdmissionState == ADMISSION_REQUIRED)
2662 txCtrlParams_setAdmissionCtrlParams(pQosMngr->hTxCtrl,
2673 if (pQosMngr->acParams[acID].currentWmeAcPsMode != psMode)
2677 pQosMngr->acParams[acID].currentWmeAcPsMode = psMode;
2680 pQosMngr->acParams[acID].QtrafficParams.psScheme = pQosMngr->acParams[acID].currentWmeAcPsMode;
2681 status = verifyAndConfigTrafficParams (pQosMngr, &pQosMngr->acParams[acID].QtrafficParams);
2691 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setAdmissionInfo: admCtrl status = REQUEST_REJECT [ acID = %d ]\n", acID);
2694 if (pTspecInfo->tid == pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].tid)
2704 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2710 addtsReasonCode.uUserPriority = pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].userPriority;
2717 EvHandlerSendEvent (pQosMngr->hEvHandler,
2724 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "qosMngr_setAdmissionInfo: admCtrl status = REQUEST_TIMEOUT [ acID = %d ]\n", acID);
2727 pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2730 addtsReasonCode.uUserPriority = pQosMngr->resourceMgmtTable.candidateTspecInfo[acID].userPriority;
2741 EvHandlerSendEvent (pQosMngr->hEvHandler,
2748 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_setAdmissionInfo: receive state from admCtrl = unknown !!! \n");
2771 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2774 if( (pQosMngr->isConnected == TI_FALSE) ||
2775 (pQosMngr->activeProtocol != QOS_WME) ||
2776 (pQosMngr->trafficAdmCtrlEnable == TI_FALSE) )
2778 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "QosMngr_receiveActionFrames: Ignore !!!");
2804 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_INFORMATION, "QosMngr_receiveActionFrames: DELTS [ acID = %d ] \n", acID);
2808 if( (pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState == AC_ADMITTED) &&
2809 ( pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority == userPriority) )
2811 deleteTspecConfiguration(pQosMngr, acID);
2825 EvHandlerSendEvent(pQosMngr->hEvHandler, IPC_EVENT_TSPEC_STATUS, (TI_UINT8*)(&addtsReasonCode), sizeof(OS_802_11_QOS_TSPEC_PARAMS));
2829 TRACE3(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "QosMngr_receiveActionFrames: DELTS [ acID = %d userPriority = %d currentUserPriority = %d] Current State in not ADMITED !! \n", acID, userPriority,pQosMngr->resourceMgmtTable.currentTspecInfo[acID].userPriority);
2836 if (trafficAdmCtrl_recv(pQosMngr->pTrafficAdmCtrl, pData, action) == TI_OK)
2866 XCCMngr_setXCCQoSParams(pQosMngr->hXCCMgr, &XCCIE, acID);
2872 TRACE1(pQosMngr->hReport, REPORT_SEVERITY_WARNING, "QosMngr_receiveActionFrames: Receive unknown action code = %d -> Ignore !! \n",action);
2893 qosMngr_t *pQosMngr = (qosMngr_t *)hQosMngr;
2898 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getCurrAcStatus: acID > 3 -> Ignore !!!");
2903 if(pQosMngr->isConnected == TI_FALSE)
2905 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getCurrAcStatus: pQosMngr->connected == TI_FALSE -> Ignore !!!");
2910 if(pQosMngr->activeProtocol != QOS_WME)
2912 TRACE0(pQosMngr->hReport, REPORT_SEVERITY_ERROR, "qosMngr_getCurrAcStatus: activeProtocol != QOS_WME -> Ignore !!!");
2916 pAcStatusParams->uCurrentUAPSDStatus = pQosMngr->acParams[pAcStatusParams->uAC].currentWmeAcPsMode;
2917 pAcStatusParams->pCurrentAdmissionStatus = pQosMngr->resourceMgmtTable.currentTspecInfo[pAcStatusParams->uAC].trafficAdmState;
2930 INPUT: pQosMngr - Qos Manager pointer.
2939 static void setNonQosAdmissionState(qosMngr_t *pQosMngr, TI_UINT8 acID)
2943 pQosMngr->acParams[acID].apInitAdmissionState = ADMISSION_NOT_REQUIRED;
2944 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_ADMITTED;
2946 txCtrlParams_setAcAdmissionStatus(pQosMngr->hTxCtrl, acID, ADMISSION_NOT_REQUIRED, AC_ADMITTED);
2950 pQosMngr->acParams[acID].apInitAdmissionState = ADMISSION_REQUIRED;
2951 pQosMngr->resourceMgmtTable.currentTspecInfo[acID].trafficAdmState = AC_NOT_ADMITTED;
2953 txCtrlParams_setAcAdmissionStatus(pQosMngr->hTxCtrl, acID, ADMISSION_REQUIRED, AC_NOT_ADMITTED);