| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /****************************************************************************** |
|---|
| 2 | 3 | * |
|---|
| 3 | | - * GPL LICENSE SUMMARY |
|---|
| 4 | | - * |
|---|
| 5 | 4 | * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved. |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 8 | | - * it under the terms of version 2 of the GNU General Public License as |
|---|
| 9 | | - * published by the Free Software Foundation. |
|---|
| 10 | | - * |
|---|
| 11 | | - * This program is distributed in the hope that it will be useful, but |
|---|
| 12 | | - * WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 13 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|---|
| 14 | | - * General Public License for more details. |
|---|
| 15 | | - * |
|---|
| 16 | | - * You should have received a copy of the GNU General Public License |
|---|
| 17 | | - * along with this program; if not, write to the Free Software |
|---|
| 18 | | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, |
|---|
| 19 | | - * USA |
|---|
| 20 | | - * |
|---|
| 21 | | - * The full GNU General Public License is included in this distribution |
|---|
| 22 | | - * in the file called COPYING. |
|---|
| 5 | + * Copyright (C) 2019 Intel Corporation |
|---|
| 23 | 6 | * |
|---|
| 24 | 7 | * Contact Information: |
|---|
| 25 | 8 | * Intel Linux Wireless <linuxwifi@intel.com> |
|---|
| .. | .. |
|---|
| 284 | 267 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
|---|
| 285 | 268 | struct iwl_station_priv *sta_priv = NULL; |
|---|
| 286 | 269 | struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; |
|---|
| 287 | | - struct iwl_device_cmd *dev_cmd; |
|---|
| 270 | + struct iwl_device_tx_cmd *dev_cmd; |
|---|
| 288 | 271 | struct iwl_tx_cmd *tx_cmd; |
|---|
| 289 | 272 | __le16 fc; |
|---|
| 290 | 273 | u8 hdr_len; |
|---|
| .. | .. |
|---|
| 365 | 348 | if (unlikely(!dev_cmd)) |
|---|
| 366 | 349 | goto drop_unlock_priv; |
|---|
| 367 | 350 | |
|---|
| 368 | | - memset(dev_cmd, 0, sizeof(*dev_cmd)); |
|---|
| 369 | 351 | dev_cmd->hdr.cmd = REPLY_TX; |
|---|
| 370 | 352 | tx_cmd = (struct iwl_tx_cmd *) dev_cmd->payload; |
|---|
| 371 | 353 | |
|---|
| .. | .. |
|---|
| 485 | 467 | int q; |
|---|
| 486 | 468 | |
|---|
| 487 | 469 | for (q = IWLAGN_FIRST_AMPDU_QUEUE; |
|---|
| 488 | | - q < priv->cfg->base_params->num_of_queues; q++) { |
|---|
| 470 | + q < priv->trans->trans_cfg->base_params->num_of_queues; q++) { |
|---|
| 489 | 471 | if (!test_and_set_bit(q, priv->agg_q_alloc)) { |
|---|
| 490 | 472 | priv->queue_to_mac80211[q] = mq; |
|---|
| 491 | 473 | return q; |
|---|
| .. | .. |
|---|
| 638 | 620 | IWL_DEBUG_TX_QUEUES(priv, "Can proceed: ssn = next_recl = %d\n", |
|---|
| 639 | 621 | tid_data->agg.ssn); |
|---|
| 640 | 622 | tid_data->agg.state = IWL_AGG_STARTING; |
|---|
| 641 | | - ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); |
|---|
| 623 | + ret = IEEE80211_AMPDU_TX_START_IMMEDIATE; |
|---|
| 642 | 624 | } else { |
|---|
| 643 | 625 | IWL_DEBUG_TX_QUEUES(priv, "Can't proceed: ssn %d, " |
|---|
| 644 | 626 | "next_reclaimed = %d\n", |
|---|
| .. | .. |
|---|
| 821 | 803 | rcu_read_unlock(); |
|---|
| 822 | 804 | } |
|---|
| 823 | 805 | |
|---|
| 824 | | -/** |
|---|
| 806 | +/* |
|---|
| 825 | 807 | * translate ucode response to mac80211 tx status control values |
|---|
| 826 | 808 | */ |
|---|
| 827 | 809 | static void iwlagn_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags, |
|---|
| .. | .. |
|---|
| 1274 | 1256 | } |
|---|
| 1275 | 1257 | } |
|---|
| 1276 | 1258 | |
|---|
| 1277 | | -/** |
|---|
| 1259 | +/* |
|---|
| 1278 | 1260 | * iwlagn_rx_reply_compressed_ba - Handler for REPLY_COMPRESSED_BA |
|---|
| 1279 | 1261 | * |
|---|
| 1280 | 1262 | * Handles block-acknowledge notification from device, which reports success |
|---|
| .. | .. |
|---|
| 1299 | 1281 | * (in Tx queue's circular buffer) of first TFD/frame in window */ |
|---|
| 1300 | 1282 | u16 ba_resp_scd_ssn = le16_to_cpu(ba_resp->scd_ssn); |
|---|
| 1301 | 1283 | |
|---|
| 1302 | | - if (scd_flow >= priv->cfg->base_params->num_of_queues) { |
|---|
| 1284 | + if (scd_flow >= priv->trans->trans_cfg->base_params->num_of_queues) { |
|---|
| 1303 | 1285 | IWL_ERR(priv, |
|---|
| 1304 | 1286 | "BUG_ON scd_flow is bigger than number of queues\n"); |
|---|
| 1305 | 1287 | return; |
|---|