VOID StopNetIfQueue( IN PRTMP_ADAPTER pAd, IN UCHAR QueIdx, IN PNDIS_PACKET pPacket) { PNET_DEV NetDev = NULL, wdev_NetDev= NULL; UCHAR IfIdx = 0; BOOLEAN valid = FALSE; IfIdx = RTMP_GET_PACKET_WDEV(pPacket); if ((IfIdx < WDEV_NUM_MAX) && (pAd->wdev_list[IfIdx] != NULL)) { wdev_NetDev = pAd->wdev_list[IfIdx]->if_dev; } #ifdef APCLI_SUPPORT if (RTMP_GET_PACKET_NET_DEVICE(pPacket) >= MIN_NET_DEVICE_FOR_APCLI) { IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_APCLI) % MAX_APCLI_NUM; NetDev = pAd->ApCfg.ApCliTab[IfIdx].wdev.if_dev; } else #endif /* APCLI_SUPPORT */ { #ifdef MBSS_SUPPORT if (pAd->OpMode == OPMODE_AP) { IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_MBSSID) % MAX_MBSSID_NUM(pAd); NetDev = pAd->ApCfg.MBSSID[IfIdx].wdev.if_dev; } else { IfIdx = MAIN_MBSSID; NetDev = pAd->net_dev; } #else IfIdx = MAIN_MBSSID; NetDev = pAd->net_dev; #endif } /* WMM support 4 software queues.*/ /* One software queue full doesn't mean device have no capbility to transmit packet.*/ /* So disable block Net-If queue function while WMM enable.*/ #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) valid = (pAd->ApCfg.MBSSID[IfIdx].wdev.bWmmCapable == TRUE) ? FALSE : TRUE; #endif /* CONFIG_AP_SUPPORT */ #ifdef CONFIG_STA_SUPPORT { IF_DEV_CONFIG_OPMODE_ON_STA(pAd) valid = (pAd->CommonCfg.bWmmCapable == TRUE) ? FALSE : TRUE; } #endif /* CONFIG_STA_SUPPORT */ if (valid) blockNetIf(&pAd->blockQueueTab[QueIdx], NetDev); return; }
VOID StopNetIfQueue( IN PRTMP_ADAPTER pAd, IN UCHAR QueIdx, IN PNDIS_PACKET pPacket) { PNET_DEV NetDev = NULL; UCHAR IfIdx = 0; BOOLEAN valid = FALSE; #ifdef APCLI_SUPPORT if (RTMP_GET_PACKET_NET_DEVICE(pPacket) >= MIN_NET_DEVICE_FOR_APCLI) { IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_APCLI) % MAX_APCLI_NUM; NetDev = pAd->ApCfg.ApCliTab[IfIdx].dev; } else #endif // APCLI_SUPPORT // #ifdef WDS_SUPPORT if (RTMP_GET_PACKET_NET_DEVICE(pPacket) >= MIN_NET_DEVICE_FOR_WDS) { IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_WDS) % MAX_WDS_ENTRY; NetDev = pAd->WdsTab.WdsEntry[IfIdx].dev; } else #endif // WDS_SUPPORT // { #ifdef MBSS_SUPPORT if (pAd->OpMode == OPMODE_AP) { IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_MBSSID) % MAX_MBSSID_NUM; NetDev = pAd->ApCfg.MBSSID[IfIdx].MSSIDDev; } else { IfIdx = MAIN_MBSSID; NetDev = pAd->net_dev; } #else IfIdx = MAIN_MBSSID; NetDev = pAd->net_dev; #endif } // WMM support 4 software queues. // One software queue full doesn't mean device have no capbility to transmit packet. // So disable block Net-If queue function while WMM enable. #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) valid = (pAd->ApCfg.MBSSID[IfIdx].bWmmCapable == TRUE) ? FALSE : TRUE; #endif // CONFIG_AP_SUPPORT // #ifdef CONFIG_STA_SUPPORT IF_DEV_CONFIG_OPMODE_ON_STA(pAd) valid = (pAd->CommonCfg.bWmmCapable == TRUE) ? FALSE : TRUE; #endif // CONFIG_STA_SUPPORT // if (valid) blockNetIf(&pAd->blockQueueTab[QueIdx], NetDev); return; }
VOID StopNetIfQueue(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACKET pPacket) { UCHAR wdev_idx; struct wifi_dev *wdev; wdev_idx = RTMP_GET_PACKET_WDEV(pPacket); if ((wdev_idx < WDEV_NUM_MAX) && (pAd->wdev_list[wdev_idx] != NULL)) { wdev = pAd->wdev_list[wdev_idx]; /* WMM support 4 software queues.*/ /* One software queue full doesn't mean device have no capbility to transmit packet.*/ /* So disable block Net-If queue function while WMM enable.*/ if ((wdev->bWmmCapable == FALSE) && (wdev->if_dev)) blockNetIf(&pAd->blockQueueTab[QueIdx], wdev->if_dev); } return; }
VOID StopNetIfQueue( IN PRTMP_ADAPTER pAd, IN UCHAR QueIdx, IN PNDIS_PACKET pPacket) { PNET_DEV NetDev = NULL; BOOLEAN valid; NetDev = pAd->net_dev; // WMM support 4 software queues. // One software queue full doesn't mean device have no capbility to transmit packet. // So disable block Net-If queue function while WMM enable. valid = (pAd->PortCfg.bWmmCapable == TRUE) ? FALSE : TRUE; if (valid) blockNetIf(&pAd->blockQueueTab[QueIdx], NetDev); return; }