OSDN Git Service

staging: rl8723au: rtw_make_wlanhdr(): Use ieee80211_qos_hdr
authorJes Sorensen <Jes.Sorensen@redhat.com>
Wed, 21 May 2014 07:38:05 +0000 (09:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 May 2014 07:27:47 +0000 (16:27 +0900)
Use the kernel provided struct and defines to fill in qos_ctrl

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8723au/core/rtw_xmit.c

index a82afcb..f99e59c 100644 (file)
@@ -861,9 +861,8 @@ static int xmitframe_swencrypt(struct rtw_adapter *padapter,
 static int rtw_make_wlanhdr(struct rtw_adapter *padapter, u8 *hdr,
                            struct pkt_attrib *pattrib)
 {
-       u16 *qc;
-
        struct ieee80211_hdr *pwlanhdr = (struct ieee80211_hdr *)hdr;
+       struct ieee80211_qos_hdr *qoshdr;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        u8 qos_option = false;
        int res = _SUCCESS;
@@ -942,11 +941,18 @@ static int rtw_make_wlanhdr(struct rtw_adapter *padapter, u8 *hdr,
                        pwlanhdr->frame_control |=
                                cpu_to_le16(IEEE80211_FCTL_PROTECTED);
                if (qos_option) {
-                       qc = (unsigned short *)(hdr + pattrib->hdrlen - 2);
-                       if (pattrib->priority)
-                               SetPriority(qc, pattrib->priority);
-                       SetEOSP(qc, pattrib->eosp);
-                       SetAckpolicy(qc, pattrib->ack_policy);
+                       qoshdr = (struct ieee80211_qos_hdr *)hdr;
+
+                       qoshdr->qos_ctrl = cpu_to_le16(
+                               pattrib->priority & IEEE80211_QOS_CTL_TID_MASK);
+
+                       qoshdr->qos_ctrl |= cpu_to_le16(
+                               (pattrib->ack_policy << 5) &
+                               IEEE80211_QOS_CTL_ACK_POLICY_MASK);
+
+                       if (pattrib->eosp)
+                               qoshdr->qos_ctrl |=
+                                       cpu_to_le16(IEEE80211_QOS_CTL_EOSP);
                }
                /* TODO: fill HT Control Field */