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 --- |