sta_info.c (e7d9facf0bab6d919342fea17c8cc0f65f8a0fe9) sta_info.c (55de908ab292c03f1eb280f51170ddb9c6b57e31)
1/*
2 * Copyright 2002-2005, Instant802 Networks, Inc.
3 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */

--- 994 unchanged lines hidden (view full) ---

1003{
1004 struct ieee80211_local *local = sdata->local;
1005 struct ieee80211_qos_hdr *nullfunc;
1006 struct sk_buff *skb;
1007 int size = sizeof(*nullfunc);
1008 __le16 fc;
1009 bool qos = test_sta_flag(sta, WLAN_STA_WME);
1010 struct ieee80211_tx_info *info;
1/*
2 * Copyright 2002-2005, Instant802 Networks, Inc.
3 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */

--- 994 unchanged lines hidden (view full) ---

1003{
1004 struct ieee80211_local *local = sdata->local;
1005 struct ieee80211_qos_hdr *nullfunc;
1006 struct sk_buff *skb;
1007 int size = sizeof(*nullfunc);
1008 __le16 fc;
1009 bool qos = test_sta_flag(sta, WLAN_STA_WME);
1010 struct ieee80211_tx_info *info;
1011 struct ieee80211_chanctx_conf *chanctx_conf;
1011
1012 if (qos) {
1013 fc = cpu_to_le16(IEEE80211_FTYPE_DATA |
1014 IEEE80211_STYPE_QOS_NULLFUNC |
1015 IEEE80211_FCTL_FROMDS);
1016 } else {
1017 size -= 2;
1018 fc = cpu_to_le16(IEEE80211_FTYPE_DATA |

--- 33 unchanged lines hidden (view full) ---

1052 * ends the poll/service period.
1053 */
1054 info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER |
1055 IEEE80211_TX_STATUS_EOSP |
1056 IEEE80211_TX_CTL_REQ_TX_STATUS;
1057
1058 drv_allow_buffered_frames(local, sta, BIT(tid), 1, reason, false);
1059
1012
1013 if (qos) {
1014 fc = cpu_to_le16(IEEE80211_FTYPE_DATA |
1015 IEEE80211_STYPE_QOS_NULLFUNC |
1016 IEEE80211_FCTL_FROMDS);
1017 } else {
1018 size -= 2;
1019 fc = cpu_to_le16(IEEE80211_FTYPE_DATA |

--- 33 unchanged lines hidden (view full) ---

1053 * ends the poll/service period.
1054 */
1055 info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER |
1056 IEEE80211_TX_STATUS_EOSP |
1057 IEEE80211_TX_CTL_REQ_TX_STATUS;
1058
1059 drv_allow_buffered_frames(local, sta, BIT(tid), 1, reason, false);
1060
1060 ieee80211_xmit(sdata, skb);
1061 rcu_read_lock();
1062 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
1063 if (WARN_ON(!chanctx_conf)) {
1064 rcu_read_unlock();
1065 kfree_skb(skb);
1066 return;
1067 }
1068
1069 ieee80211_xmit(sdata, skb, chanctx_conf->channel->band);
1070 rcu_read_unlock();
1061}
1062
1063static void
1064ieee80211_sta_ps_deliver_response(struct sta_info *sta,
1065 int n_frames, u8 ignored_acs,
1066 enum ieee80211_frame_release_type reason)
1067{
1068 struct ieee80211_sub_if_data *sdata = sta->sdata;

--- 373 unchanged lines hidden ---
1071}
1072
1073static void
1074ieee80211_sta_ps_deliver_response(struct sta_info *sta,
1075 int n_frames, u8 ignored_acs,
1076 enum ieee80211_frame_release_type reason)
1077{
1078 struct ieee80211_sub_if_data *sdata = sta->sdata;

--- 373 unchanged lines hidden ---