diff options
author | Kumar Anand <kumaranand@google.com> | 2018-05-11 05:22:42 +0000 |
---|---|---|
committer | Kumar Anand <kumaranand@google.com> | 2018-05-11 05:24:09 +0000 |
commit | 3acf2d53921d740b298219f99569fdbdab2ede47 (patch) | |
tree | 6a9734ff964abface7fb5b17f7f698ea6466e916 | |
parent | 25427aacc57d9f8249f5fed0eba8ab7d7d6f564a (diff) |
Revert "qcacld-3.0: Treat ARP/ICMP/ICMPV6 packets as high priority"android-8.1.0_r0.76android-8.1.0_r0.70
This reverts commit 1b72a7fee7bfa92ea982b5ba6b2064e9370d4374.
Reason for revert: b/73204553
Change-Id: I1c116c126b9b235fa0209252a16059854cab2d19
-rw-r--r-- | drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_wmm.c | 86 |
1 files changed, 28 insertions, 58 deletions
diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_wmm.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_wmm.c index a5b51c68ceac..77ed25b98ed5 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_wmm.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_wmm.c @@ -63,7 +63,6 @@ #include <cds_sched.h> #include "sme_api.h" -#define WLAN_HDD_HIPRI_TOS 0xc0 #define WLAN_HDD_MAX_DSCP 0x3f #define HDD_WMM_UP_TO_AC_MAP_SIZE 8 @@ -1412,22 +1411,6 @@ QDF_STATUS hdd_wmm_adapter_close(hdd_adapter_t *pAdapter) return QDF_STATUS_SUCCESS; } -static inline unsigned char hdd_wmm_check_ip_proto(unsigned char ip_proto, - unsigned char ip_tos, - bool *is_hipri) -{ - switch (ip_proto) { - case IPPROTO_ICMP: - case IPPROTO_ICMPV6: - *is_hipri = true; - return WLAN_HDD_HIPRI_TOS; - - default: - *is_hipri = false; - return ip_tos; - } -} - /** * hdd_wmm_classify_pkt() - Function which will classify an OS packet * into a WMM AC based on DSCP @@ -1435,7 +1418,7 @@ static inline unsigned char hdd_wmm_check_ip_proto(unsigned char ip_proto, * @adapter: adapter upon which the packet is being transmitted * @skb: pointer to network buffer * @user_pri: user priority of the OS packet - * @is_hipri: high priority packet flag + * @is_eapol: eapol packet flag * * Return: None */ @@ -1443,7 +1426,7 @@ static void hdd_wmm_classify_pkt(hdd_adapter_t *adapter, struct sk_buff *skb, sme_QosWmmUpType *user_pri, - bool *is_hipri) + bool *is_eapol) { unsigned char dscp; unsigned char tos; @@ -1470,16 +1453,14 @@ void hdd_wmm_classify_pkt(hdd_adapter_t *adapter, if (eth_hdr->eth_II.h_proto == htons(ETH_P_IP)) { /* case 1: Ethernet II IP packet */ ip_hdr = (struct iphdr *)&pkt[sizeof(eth_hdr->eth_II)]; - tos = hdd_wmm_check_ip_proto(ip_hdr->protocol, ip_hdr->tos, - is_hipri); + tos = ip_hdr->tos; #ifdef HDD_WMM_DEBUG hdd_info("Ethernet II IP Packet, tos is %d", tos); #endif /* HDD_WMM_DEBUG */ + } else if (eth_hdr->eth_II.h_proto == htons(ETH_P_IPV6)) { ipv6hdr = ipv6_hdr(skb); - tos = hdd_wmm_check_ip_proto( - ipv6hdr->nexthdr, ntohs(*(const __be16 *)ipv6hdr) >> 4, - is_hipri); + tos = ntohs(*(const __be16 *)ipv6hdr) >> 4; #ifdef HDD_WMM_DEBUG hdd_info("Ethernet II IPv6 Packet, tos is %d", tos); #endif /* HDD_WMM_DEBUG */ @@ -1490,8 +1471,7 @@ void hdd_wmm_classify_pkt(hdd_adapter_t *adapter, (eth_hdr->eth_8023.h_proto == htons(ETH_P_IP))) { /* case 2: 802.3 LLC/SNAP IP packet */ ip_hdr = (struct iphdr *)&pkt[sizeof(eth_hdr->eth_8023)]; - tos = hdd_wmm_check_ip_proto(ip_hdr->protocol, ip_hdr->tos, - is_hipri); + tos = ip_hdr->tos; #ifdef HDD_WMM_DEBUG hdd_info("802.3 LLC/SNAP IP Packet, tos is %d", tos); #endif /* HDD_WMM_DEBUG */ @@ -1504,8 +1484,7 @@ void hdd_wmm_classify_pkt(hdd_adapter_t *adapter, ip_hdr = (struct iphdr *) &pkt[sizeof(eth_hdr->eth_IIv)]; - tos = hdd_wmm_check_ip_proto(ip_hdr->protocol, - ip_hdr->tos, is_hipri); + tos = ip_hdr->tos; #ifdef HDD_WMM_DEBUG hdd_info("Ethernet II VLAN tagged IP Packet, tos is %d", tos); @@ -1525,39 +1504,30 @@ void hdd_wmm_classify_pkt(hdd_adapter_t *adapter, ip_hdr = (struct iphdr *) &pkt[sizeof(eth_hdr->eth_8023v)]; - tos = hdd_wmm_check_ip_proto(ip_hdr->protocol, - ip_hdr->tos, is_hipri); + tos = ip_hdr->tos; #ifdef HDD_WMM_DEBUG hdd_info("802.3 LLC/SNAP VLAN tagged IP Packet, tos is %d", tos); #endif /* HDD_WMM_DEBUG */ } else { /* default */ - *is_hipri = false; - tos = 0; #ifdef HDD_WMM_DEBUG hdd_warn("VLAN tagged Unhandled Protocol, using default tos"); #endif /* HDD_WMM_DEBUG */ + tos = 0; } - } else if (eth_hdr->eth_II.h_proto == htons(HDD_ETHERTYPE_802_1_X)) { - *is_hipri = true; - tos = WLAN_HDD_HIPRI_TOS; -#ifdef HDD_WMM_DEBUG - hdd_info("802.1x packet, tos is %d", tos); -#endif /* HDD_WMM_DEBUG */ - } else if (skb->protocol == htons(ETH_P_ARP)) { - *is_hipri = true; - tos = WLAN_HDD_HIPRI_TOS; -#ifdef HDD_WMM_DEBUG - hdd_info("ARP packet, tos is %d", tos); -#endif /* HDD_WMM_DEBUG */ } else { /* default */ - *is_hipri = false; - tos = 0; #ifdef HDD_WMM_DEBUG hdd_warn("Unhandled Protocol, using default tos"); #endif /* HDD_WMM_DEBUG */ + /* Give the highest priority to 802.1x packet */ + if (eth_hdr->eth_II.h_proto == + htons(HDD_ETHERTYPE_802_1_X)) { + tos = 0xC0; + *is_eapol = true; + } else + tos = 0; } dscp = (tos >> 2) & 0x3f; @@ -1587,20 +1557,20 @@ static uint16_t __hdd_get_queue_index(uint16_t up) /** * hdd_get_queue_index() - get queue index * @up: user priority - * @is_hipri: high priority packet flag + * @is_eapol: is_eapol flag * * Return: queue_index */ static -uint16_t hdd_get_queue_index(u16 up, bool is_hipri) +uint16_t hdd_get_queue_index(uint16_t up, bool is_eapol) { - if (qdf_unlikely(is_hipri)) + if (qdf_unlikely(is_eapol == true)) return HDD_LINUX_AC_HI_PRIO; return __hdd_get_queue_index(up); } #else static -uint16_t hdd_get_queue_index(u16 up, bool is_hipri) +uint16_t hdd_get_queue_index(uint16_t up, bool is_eapol) { return __hdd_get_queue_index(up); } @@ -1630,7 +1600,7 @@ uint16_t hdd_hostapd_select_queue(struct net_device *dev, struct sk_buff *skb uint16_t queueIndex; hdd_adapter_t *adapter = (hdd_adapter_t *) netdev_priv(dev); hdd_context_t *hddctx = WLAN_HDD_GET_CTX(adapter); - bool is_hipri = false; + bool is_eapol = false; int status = 0; status = wlan_hdd_validate_context(hddctx); @@ -1640,9 +1610,9 @@ uint16_t hdd_hostapd_select_queue(struct net_device *dev, struct sk_buff *skb } /* Get the user priority from IP header */ - hdd_wmm_classify_pkt(adapter, skb, &up, &is_hipri); + hdd_wmm_classify_pkt(adapter, skb, &up, &is_eapol); skb->priority = up; - queueIndex = hdd_get_queue_index(skb->priority, is_hipri); + queueIndex = hdd_get_queue_index(skb->priority, is_eapol); return queueIndex; } @@ -1660,9 +1630,9 @@ uint16_t hdd_wmm_select_queue(struct net_device *dev, struct sk_buff *skb) { sme_QosWmmUpType up = SME_QOS_WMM_UP_BE; uint16_t queueIndex; - hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev); - bool is_hipri = false; - hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev); + bool is_eapol = false; + hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(pAdapter); int status; status = wlan_hdd_validate_context(hdd_ctx); @@ -1672,9 +1642,9 @@ uint16_t hdd_wmm_select_queue(struct net_device *dev, struct sk_buff *skb) } /* Get the user priority from IP header */ - hdd_wmm_classify_pkt(adapter, skb, &up, &is_hipri); + hdd_wmm_classify_pkt(pAdapter, skb, &up, &is_eapol); skb->priority = up; - queueIndex = hdd_get_queue_index(skb->priority, is_hipri); + queueIndex = hdd_get_queue_index(skb->priority, is_eapol); return queueIndex; } |