Hi,
in this function there is some effort to set the EOSP flag in QoS Null
frames:
if (reason == IEEE80211_FRAME_RELEASE_UAPSD)
nullfunc->qos_ctrl |=
cpu_to_le16(IEEE80211_QOS_CTL_EOSP);
ieee80211_xmit is called at the end of the function. Which then calls
ieee80211_set_qos_hdr.
But ieee80211_set_qos_hdr will completely overwrite the QoS header again.
So, what is wrong here?
Regards
Marco
On Mon, 2012-01-16 at 13:15 +0100, Marco Porsch wrote:
> ieee80211_xmit is called at the end of the function. Which then calls
> ieee80211_set_qos_hdr.
>
> But ieee80211_set_qos_hdr will completely overwrite the QoS header again.
> So, what is wrong here?
You, I think?
void ieee80211_set_qos_hdr(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb)
...
/* preserve EOSP bit */
ack_policy = *p & IEEE80211_QOS_CTL_EOSP;
...
/* qos header is 2 bytes */
*p++ = ack_policy | tid;
*p = ieee80211_vif_is_mesh(&sdata->vif) ?
(IEEE80211_QOS_CTL_MESH_CONTROL_PRESENT >> 8) :
0;
johannes