mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'wireless-next-2026-03-19' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
Johannes Berg says: ==================== Aside from various small improvements/cleanups, not much: - cfg80211/mac80211: S1G and UHR improvements - hwsim: incumbent signal report test support * tag 'wireless-next-2026-03-19' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (31 commits) qtnfmac: use alloc_netdev macro for single queue devices wifi: libertas: don't kill URBs in interrupt context wifi: libertas: use USB anchors for tracking in-flight URBs wifi: nl80211: use int for band coming from netlink wifi: rsi_91x_usb: do not pause rfkill polling when stopping mac80211 wifi: mac80211: fix STA link removal during link removal wifi: nl80211: reject S1G/60G with HT chantype wifi: ieee80211: fix definition of EHT-MCS 15 in MRU wifi: cfg80211: check non-S1G width with S1G chandef wifi: cfg80211: restrict cfg80211_chandef_create() to only HT-based bands wifi: mac80211: don't use cfg80211_chandef_create() for default chandef wifi: mac80211: Remove deleted sta links in ieee80211_ml_reconf_work() wifi: b43: use register definitions in nphy_op_software_rfkill wifi: cfg80211: split control freq check from chandef check wifi: mac80211: always use full chanctx compatible check wifi: mac80211: refactor chandef tracing macros wifi: mac80211: validate HE 6 GHz operation when EHT is used wifi: nl80211: split out UHR operation information wifi: mwifiex: drop redundant device reference wifi: rt2x00: drop redundant device reference ... ==================== Link: https://patch.msgid.link/20260319082439.79875-3-johannes@sipsolutions.net Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
@@ -6288,10 +6288,10 @@ static int ath11k_mac_mgmt_action_frame_fill_elem_data(struct ath11k_vif *arvif,
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
|
||||
/* make sure category field is present */
|
||||
if (skb->len < IEEE80211_MIN_ACTION_SIZE)
|
||||
if (skb->len < IEEE80211_MIN_ACTION_SIZE(category))
|
||||
return -EINVAL;
|
||||
|
||||
remaining_len = skb->len - IEEE80211_MIN_ACTION_SIZE;
|
||||
remaining_len = skb->len - IEEE80211_MIN_ACTION_SIZE(category);
|
||||
has_protected = ieee80211_has_protected(hdr->frame_control);
|
||||
|
||||
/* In case of SW crypto and hdr protected (PMF), packet will already be encrypted,
|
||||
|
||||
@@ -9119,10 +9119,10 @@ static int ath12k_mac_mgmt_action_frame_fill_elem_data(struct ath12k_link_vif *a
|
||||
lockdep_assert_wiphy(wiphy);
|
||||
|
||||
/* make sure category field is present */
|
||||
if (skb->len < IEEE80211_MIN_ACTION_SIZE)
|
||||
if (skb->len < IEEE80211_MIN_ACTION_SIZE(category))
|
||||
return -EINVAL;
|
||||
|
||||
remaining_len = skb->len - IEEE80211_MIN_ACTION_SIZE;
|
||||
remaining_len = skb->len - IEEE80211_MIN_ACTION_SIZE(category);
|
||||
has_protected = ieee80211_has_protected(hdr->frame_control);
|
||||
|
||||
/* In case of SW crypto and hdr protected (PMF), packet will already be encrypted,
|
||||
|
||||
@@ -104,7 +104,7 @@ static bool ath12k_is_addba_resp_action_code(struct ieee80211_mgmt *mgmt)
|
||||
if (mgmt->u.action.category != WLAN_CATEGORY_BACK)
|
||||
return false;
|
||||
|
||||
if (mgmt->u.action.u.addba_resp.action_code != WLAN_ACTION_ADDBA_RESP)
|
||||
if (mgmt->u.action.action_code != WLAN_ACTION_ADDBA_RESP)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
||||
@@ -2440,13 +2440,11 @@ static int at76_probe(struct usb_interface *interface,
|
||||
struct mib_fw_version *fwv;
|
||||
int board_type = (int)id->driver_info;
|
||||
|
||||
udev = usb_get_dev(interface_to_usbdev(interface));
|
||||
udev = interface_to_usbdev(interface);
|
||||
|
||||
fwv = kmalloc_obj(*fwv);
|
||||
if (!fwv) {
|
||||
ret = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
if (!fwv)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Load firmware into kernel memory */
|
||||
fwe = at76_load_firmware(udev, board_type);
|
||||
@@ -2534,8 +2532,7 @@ static int at76_probe(struct usb_interface *interface,
|
||||
|
||||
exit:
|
||||
kfree(fwv);
|
||||
if (ret < 0)
|
||||
usb_put_dev(udev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2552,7 +2549,6 @@ static void at76_disconnect(struct usb_interface *interface)
|
||||
|
||||
wiphy_info(priv->hw->wiphy, "disconnecting\n");
|
||||
at76_delete_device(priv);
|
||||
usb_put_dev(interface_to_usbdev(interface));
|
||||
dev_info(&interface->dev, "disconnected\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -6566,19 +6566,19 @@ static void b43_nphy_op_software_rfkill(struct b43_wldev *dev,
|
||||
|
||||
b43_radio_mask(dev, 0x09, ~0x2);
|
||||
|
||||
b43_radio_write(dev, 0x204D, 0);
|
||||
b43_radio_write(dev, 0x2053, 0);
|
||||
b43_radio_write(dev, 0x2058, 0);
|
||||
b43_radio_write(dev, 0x205E, 0);
|
||||
b43_radio_mask(dev, 0x2062, ~0xF0);
|
||||
b43_radio_write(dev, 0x2064, 0);
|
||||
b43_radio_write(dev, B2056_TX0 | B2056_TX_PADA_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX0 | B2056_TX_PADG_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX0 | B2056_TX_PGAA_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX0 | B2056_TX_PGAG_BOOST_TUNE, 0);
|
||||
b43_radio_mask(dev, B2056_TX0 | B2056_TX_MIXA_BOOST_TUNE, ~0xF0);
|
||||
b43_radio_write(dev, B2056_TX0 | B2056_TX_MIXG_BOOST_TUNE, 0);
|
||||
|
||||
b43_radio_write(dev, 0x304D, 0);
|
||||
b43_radio_write(dev, 0x3053, 0);
|
||||
b43_radio_write(dev, 0x3058, 0);
|
||||
b43_radio_write(dev, 0x305E, 0);
|
||||
b43_radio_mask(dev, 0x3062, ~0xF0);
|
||||
b43_radio_write(dev, 0x3064, 0);
|
||||
b43_radio_write(dev, B2056_TX1 | B2056_TX_PADA_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX1 | B2056_TX_PADG_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX1 | B2056_TX_PGAA_BOOST_TUNE, 0);
|
||||
b43_radio_write(dev, B2056_TX1 | B2056_TX_PGAG_BOOST_TUNE, 0);
|
||||
b43_radio_mask(dev, B2056_TX1 | B2056_TX_MIXA_BOOST_TUNE, ~0xF0);
|
||||
b43_radio_write(dev, B2056_TX1 | B2056_TX_MIXG_BOOST_TUNE, 0);
|
||||
}
|
||||
} else {
|
||||
if (phy->rev >= 19) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* Copyright (C) 2025 Intel Corporation
|
||||
* Copyright (C) 2025-2026 Intel Corporation
|
||||
*/
|
||||
|
||||
#include "mld.h"
|
||||
@@ -116,9 +116,9 @@ static bool iwl_mld_is_skb_match(struct sk_buff *skb, u8 *addr, u8 dialog_token)
|
||||
u8 skb_dialog_token;
|
||||
|
||||
if (ieee80211_is_timing_measurement(skb))
|
||||
skb_dialog_token = mgmt->u.action.u.wnm_timing_msr.dialog_token;
|
||||
skb_dialog_token = mgmt->u.action.wnm_timing_msr.dialog_token;
|
||||
else
|
||||
skb_dialog_token = mgmt->u.action.u.ftm.dialog_token;
|
||||
skb_dialog_token = mgmt->u.action.ftm.dialog_token;
|
||||
|
||||
if ((ether_addr_equal(mgmt->sa, addr) ||
|
||||
ether_addr_equal(mgmt->da, addr)) &&
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* Copyright (C) 2015-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018-2025 Intel Corporation
|
||||
* Copyright (C) 2018-2026 Intel Corporation
|
||||
*/
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/math64.h>
|
||||
@@ -1409,8 +1409,7 @@ void iwl_mvm_ftm_lc_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
|
||||
struct iwl_mvm_loc_entry *entry;
|
||||
const u8 *ies, *lci, *civic, *msr_ie;
|
||||
size_t ies_len, lci_len = 0, civic_len = 0;
|
||||
size_t baselen = IEEE80211_MIN_ACTION_SIZE +
|
||||
sizeof(mgmt->u.action.u.ftm);
|
||||
size_t baselen = IEEE80211_MIN_ACTION_SIZE(ftm);
|
||||
static const u8 rprt_type_lci = IEEE80211_SPCT_MSR_RPRT_TYPE_LCI;
|
||||
static const u8 rprt_type_civic = IEEE80211_SPCT_MSR_RPRT_TYPE_CIVIC;
|
||||
|
||||
@@ -1419,7 +1418,7 @@ void iwl_mvm_ftm_lc_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
|
||||
ies = mgmt->u.action.u.ftm.variable;
|
||||
ies = mgmt->u.action.ftm.variable;
|
||||
ies_len = len - baselen;
|
||||
|
||||
msr_ie = cfg80211_find_ie_match(WLAN_EID_MEASURE_REPORT, ies, ies_len,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
* Copyright (C) 2022, 2026 Intel Corporation
|
||||
*/
|
||||
|
||||
#include "mvm.h"
|
||||
@@ -18,9 +18,9 @@ static bool iwl_mvm_is_skb_match(struct sk_buff *skb, u8 *addr, u8 dialog_token)
|
||||
u8 skb_dialog_token;
|
||||
|
||||
if (ieee80211_is_timing_measurement(skb))
|
||||
skb_dialog_token = mgmt->u.action.u.wnm_timing_msr.dialog_token;
|
||||
skb_dialog_token = mgmt->u.action.wnm_timing_msr.dialog_token;
|
||||
else
|
||||
skb_dialog_token = mgmt->u.action.u.ftm.dialog_token;
|
||||
skb_dialog_token = mgmt->u.action.ftm.dialog_token;
|
||||
|
||||
if ((ether_addr_equal(mgmt->sa, addr) ||
|
||||
ether_addr_equal(mgmt->da, addr)) &&
|
||||
|
||||
@@ -114,8 +114,8 @@ static void if_usb_write_bulk_callback(struct urb *urb)
|
||||
static void if_usb_free(struct if_usb_card *cardp)
|
||||
{
|
||||
/* Unlink tx & rx urb */
|
||||
usb_kill_urb(cardp->tx_urb);
|
||||
usb_kill_urb(cardp->rx_urb);
|
||||
usb_kill_anchored_urbs(&cardp->tx_submitted);
|
||||
usb_kill_anchored_urbs(&cardp->rx_submitted);
|
||||
|
||||
usb_free_urb(cardp->tx_urb);
|
||||
cardp->tx_urb = NULL;
|
||||
@@ -221,6 +221,9 @@ static int if_usb_probe(struct usb_interface *intf,
|
||||
udev->descriptor.bDeviceSubClass,
|
||||
udev->descriptor.bDeviceProtocol);
|
||||
|
||||
init_usb_anchor(&cardp->rx_submitted);
|
||||
init_usb_anchor(&cardp->tx_submitted);
|
||||
|
||||
for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
|
||||
endpoint = &iface_desc->endpoint[i].desc;
|
||||
if (usb_endpoint_is_bulk_in(endpoint)) {
|
||||
@@ -276,7 +279,6 @@ static int if_usb_probe(struct usb_interface *intf,
|
||||
|
||||
cardp->boot2_version = udev->descriptor.bcdDevice;
|
||||
|
||||
usb_get_dev(udev);
|
||||
usb_set_intfdata(intf, cardp);
|
||||
|
||||
r = lbs_get_firmware_async(priv, &udev->dev, cardp->model,
|
||||
@@ -287,7 +289,6 @@ static int if_usb_probe(struct usb_interface *intf,
|
||||
return 0;
|
||||
|
||||
err_get_fw:
|
||||
usb_put_dev(udev);
|
||||
lbs_remove_card(priv);
|
||||
err_add_card:
|
||||
if_usb_reset_device(cardp);
|
||||
@@ -321,7 +322,6 @@ static void if_usb_disconnect(struct usb_interface *intf)
|
||||
kfree(cardp);
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
usb_put_dev(interface_to_usbdev(intf));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -426,7 +426,12 @@ static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, uint16_t nb
|
||||
goto tx_ret;
|
||||
}
|
||||
|
||||
usb_kill_urb(cardp->tx_urb);
|
||||
/* check if there are pending URBs */
|
||||
if (!usb_anchor_empty(&cardp->tx_submitted)) {
|
||||
lbs_deb_usbd(&cardp->udev->dev, "%s failed: pending URB\n", __func__);
|
||||
ret = -EBUSY;
|
||||
goto tx_ret;
|
||||
}
|
||||
|
||||
usb_fill_bulk_urb(cardp->tx_urb, cardp->udev,
|
||||
usb_sndbulkpipe(cardp->udev,
|
||||
@@ -435,8 +440,10 @@ static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, uint16_t nb
|
||||
|
||||
cardp->tx_urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
|
||||
usb_anchor_urb(cardp->tx_urb, &cardp->tx_submitted);
|
||||
if ((ret = usb_submit_urb(cardp->tx_urb, GFP_ATOMIC))) {
|
||||
lbs_deb_usbd(&cardp->udev->dev, "usb_submit_urb failed: %d\n", ret);
|
||||
usb_unanchor_urb(cardp->tx_urb);
|
||||
} else {
|
||||
lbs_deb_usb2(&cardp->udev->dev, "usb_submit_urb success\n");
|
||||
ret = 0;
|
||||
@@ -467,8 +474,10 @@ static int __if_usb_submit_rx_urb(struct if_usb_card *cardp,
|
||||
cardp);
|
||||
|
||||
lbs_deb_usb2(&cardp->udev->dev, "Pointer for rx_urb %p\n", cardp->rx_urb);
|
||||
usb_anchor_urb(cardp->rx_urb, &cardp->rx_submitted);
|
||||
if ((ret = usb_submit_urb(cardp->rx_urb, GFP_ATOMIC))) {
|
||||
lbs_deb_usbd(&cardp->udev->dev, "Submit Rx URB failed: %d\n", ret);
|
||||
usb_unanchor_urb(cardp->rx_urb);
|
||||
kfree_skb(skb);
|
||||
cardp->rx_skb = NULL;
|
||||
ret = -1;
|
||||
@@ -838,8 +847,8 @@ static void if_usb_prog_firmware(struct lbs_private *priv, int ret,
|
||||
}
|
||||
|
||||
/* Cancel any pending usb business */
|
||||
usb_kill_urb(cardp->rx_urb);
|
||||
usb_kill_urb(cardp->tx_urb);
|
||||
usb_kill_anchored_urbs(&cardp->rx_submitted);
|
||||
usb_kill_anchored_urbs(&cardp->tx_submitted);
|
||||
|
||||
cardp->fwlastblksent = 0;
|
||||
cardp->fwdnldover = 0;
|
||||
@@ -869,8 +878,8 @@ restart:
|
||||
if (cardp->bootcmdresp == BOOT_CMD_RESP_NOT_SUPPORTED) {
|
||||
/* Return to normal operation */
|
||||
ret = -EOPNOTSUPP;
|
||||
usb_kill_urb(cardp->rx_urb);
|
||||
usb_kill_urb(cardp->tx_urb);
|
||||
usb_kill_anchored_urbs(&cardp->rx_submitted);
|
||||
usb_kill_anchored_urbs(&cardp->tx_submitted);
|
||||
if (if_usb_submit_rx_urb(cardp) < 0)
|
||||
ret = -EIO;
|
||||
goto done;
|
||||
@@ -900,7 +909,7 @@ restart:
|
||||
wait_event_interruptible(cardp->fw_wq, cardp->surprise_removed || cardp->fwdnldover);
|
||||
|
||||
timer_delete_sync(&cardp->fw_timeout);
|
||||
usb_kill_urb(cardp->rx_urb);
|
||||
usb_kill_anchored_urbs(&cardp->rx_submitted);
|
||||
|
||||
if (!cardp->fwdnldover) {
|
||||
pr_info("failed to load fw, resetting device!\n");
|
||||
@@ -960,8 +969,8 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
|
||||
goto out;
|
||||
|
||||
/* Unlink tx & rx urb */
|
||||
usb_kill_urb(cardp->tx_urb);
|
||||
usb_kill_urb(cardp->rx_urb);
|
||||
usb_kill_anchored_urbs(&cardp->tx_submitted);
|
||||
usb_kill_anchored_urbs(&cardp->rx_submitted);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
|
||||
@@ -48,6 +48,9 @@ struct if_usb_card {
|
||||
struct urb *rx_urb, *tx_urb;
|
||||
struct lbs_private *priv;
|
||||
|
||||
struct usb_anchor rx_submitted;
|
||||
struct usb_anchor tx_submitted;
|
||||
|
||||
struct sk_buff *rx_skb;
|
||||
|
||||
uint8_t ep_in;
|
||||
|
||||
@@ -223,7 +223,6 @@ static int if_usb_probe(struct usb_interface *intf,
|
||||
if (!priv)
|
||||
goto dealloc;
|
||||
|
||||
usb_get_dev(udev);
|
||||
usb_set_intfdata(intf, cardp);
|
||||
|
||||
return 0;
|
||||
@@ -258,7 +257,6 @@ static void if_usb_disconnect(struct usb_interface *intf)
|
||||
kfree(cardp);
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
usb_put_dev(interface_to_usbdev(intf));
|
||||
|
||||
lbtf_deb_leave(LBTF_DEB_MAIN);
|
||||
}
|
||||
|
||||
@@ -755,16 +755,12 @@ mwifiex_construct_tdls_action_frame(struct mwifiex_private *priv,
|
||||
switch (action_code) {
|
||||
case WLAN_PUB_ACTION_TDLS_DISCOVER_RES:
|
||||
/* See the layout of 'struct ieee80211_mgmt'. */
|
||||
extra = sizeof(mgmt->u.action.u.tdls_discover_resp) +
|
||||
sizeof(mgmt->u.action.category);
|
||||
extra = IEEE80211_MIN_ACTION_SIZE(tdls_discover_resp) - 24;
|
||||
skb_put(skb, extra);
|
||||
mgmt->u.action.category = WLAN_CATEGORY_PUBLIC;
|
||||
mgmt->u.action.u.tdls_discover_resp.action_code =
|
||||
WLAN_PUB_ACTION_TDLS_DISCOVER_RES;
|
||||
mgmt->u.action.u.tdls_discover_resp.dialog_token =
|
||||
dialog_token;
|
||||
mgmt->u.action.u.tdls_discover_resp.capability =
|
||||
cpu_to_le16(capab);
|
||||
mgmt->u.action.action_code = WLAN_PUB_ACTION_TDLS_DISCOVER_RES;
|
||||
mgmt->u.action.tdls_discover_resp.dialog_token = dialog_token;
|
||||
mgmt->u.action.tdls_discover_resp.capability = cpu_to_le16(capab);
|
||||
/* move back for addr4 */
|
||||
memmove(pos + ETH_ALEN, &mgmt->u.action, extra);
|
||||
/* init address 4 */
|
||||
|
||||
@@ -520,8 +520,6 @@ static int mwifiex_usb_probe(struct usb_interface *intf,
|
||||
return ret;
|
||||
}
|
||||
|
||||
usb_get_dev(udev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -666,8 +664,6 @@ static void mwifiex_usb_disconnect(struct usb_interface *intf)
|
||||
mwifiex_dbg(adapter, FATAL,
|
||||
"%s: removing card\n", __func__);
|
||||
mwifiex_remove_card(adapter);
|
||||
|
||||
usb_put_dev(interface_to_usbdev(intf));
|
||||
}
|
||||
|
||||
static void mwifiex_usb_coredump(struct device *dev)
|
||||
|
||||
@@ -1985,9 +1985,9 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
|
||||
*/
|
||||
if (unlikely(ieee80211_is_action(wh->frame_control) &&
|
||||
mgmt->u.action.category == WLAN_CATEGORY_BACK &&
|
||||
mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ &&
|
||||
mgmt->u.action.action_code == WLAN_ACTION_ADDBA_REQ &&
|
||||
priv->ap_fw)) {
|
||||
u16 capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab);
|
||||
u16 capab = le16_to_cpu(mgmt->u.action.addba_req.capab);
|
||||
tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2;
|
||||
index = mwl8k_tid_queue_mapping(tid);
|
||||
}
|
||||
|
||||
@@ -413,10 +413,10 @@ mt76_connac2_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi,
|
||||
u32 val;
|
||||
|
||||
if (ieee80211_is_action(fc) &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE + 1 + 1 + 2 &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE(addba_req.capab) &&
|
||||
mgmt->u.action.category == WLAN_CATEGORY_BACK &&
|
||||
mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ) {
|
||||
u16 capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab);
|
||||
mgmt->u.action.action_code == WLAN_ACTION_ADDBA_REQ) {
|
||||
u16 capab = le16_to_cpu(mgmt->u.action.addba_req.capab);
|
||||
|
||||
txwi[5] |= cpu_to_le32(MT_TXD5_ADD_BA);
|
||||
tid = (capab >> 2) & IEEE80211_QOS_CTL_TID_MASK;
|
||||
|
||||
@@ -668,9 +668,9 @@ mt7925_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi,
|
||||
u32 val;
|
||||
|
||||
if (ieee80211_is_action(fc) &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE + 1 &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE(action_code) &&
|
||||
mgmt->u.action.category == WLAN_CATEGORY_BACK &&
|
||||
mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ)
|
||||
mgmt->u.action.action_code == WLAN_ACTION_ADDBA_REQ)
|
||||
tid = MT_TX_ADDBA;
|
||||
else if (ieee80211_is_mgmt(hdr->frame_control))
|
||||
tid = MT_TX_NORMAL;
|
||||
|
||||
@@ -800,9 +800,9 @@ mt7996_mac_write_txwi_80211(struct mt7996_dev *dev, __le32 *txwi,
|
||||
u32 val;
|
||||
|
||||
if (ieee80211_is_action(fc) &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE + 1 &&
|
||||
skb->len >= IEEE80211_MIN_ACTION_SIZE(action_code) &&
|
||||
mgmt->u.action.category == WLAN_CATEGORY_BACK &&
|
||||
mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ) {
|
||||
mgmt->u.action.action_code == WLAN_ACTION_ADDBA_REQ) {
|
||||
if (is_mt7990(&dev->mt76))
|
||||
txwi[6] |= cpu_to_le32(FIELD_PREP(MT_TXD6_TID_ADDBA, tid));
|
||||
else
|
||||
|
||||
@@ -452,8 +452,8 @@ int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *vif,
|
||||
void *qdev_vif;
|
||||
int ret;
|
||||
|
||||
dev = alloc_netdev_mqs(sizeof(struct qtnf_vif *), name,
|
||||
name_assign_type, ether_setup, 1, 1);
|
||||
dev = alloc_netdev(sizeof(struct qtnf_vif *), name,
|
||||
name_assign_type, ether_setup);
|
||||
if (!dev)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
@@ -802,14 +802,12 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
|
||||
struct rt2x00_dev *rt2x00dev;
|
||||
int retval;
|
||||
|
||||
usb_dev = usb_get_dev(usb_dev);
|
||||
usb_reset_device(usb_dev);
|
||||
|
||||
hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw);
|
||||
if (!hw) {
|
||||
rt2x00_probe_err("Failed to allocate hardware\n");
|
||||
retval = -ENOMEM;
|
||||
goto exit_put_device;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
usb_set_intfdata(usb_intf, hw);
|
||||
@@ -851,10 +849,6 @@ exit_free_reg:
|
||||
|
||||
exit_free_device:
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
exit_put_device:
|
||||
usb_put_dev(usb_dev);
|
||||
|
||||
usb_set_intfdata(usb_intf, NULL);
|
||||
|
||||
return retval;
|
||||
@@ -873,11 +867,7 @@ void rt2x00usb_disconnect(struct usb_interface *usb_intf)
|
||||
rt2x00usb_free_reg(rt2x00dev);
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
/*
|
||||
* Free the USB device data.
|
||||
*/
|
||||
usb_set_intfdata(usb_intf, NULL);
|
||||
usb_put_dev(interface_to_usbdev(usb_intf));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2x00usb_disconnect);
|
||||
|
||||
|
||||
@@ -5146,10 +5146,10 @@ static void rtl8xxxu_dump_action(struct device *dev,
|
||||
if (!(rtl8xxxu_debug & RTL8XXXU_DEBUG_ACTION))
|
||||
return;
|
||||
|
||||
switch (mgmt->u.action.u.addba_resp.action_code) {
|
||||
switch (mgmt->u.action.action_code) {
|
||||
case WLAN_ACTION_ADDBA_RESP:
|
||||
cap = le16_to_cpu(mgmt->u.action.u.addba_resp.capab);
|
||||
timeout = le16_to_cpu(mgmt->u.action.u.addba_resp.timeout);
|
||||
cap = le16_to_cpu(mgmt->u.action.addba_resp.capab);
|
||||
timeout = le16_to_cpu(mgmt->u.action.addba_resp.timeout);
|
||||
dev_info(dev, "WLAN_ACTION_ADDBA_RESP: "
|
||||
"timeout %i, tid %02x, buf_size %02x, policy %02x, "
|
||||
"status %02x\n",
|
||||
@@ -5157,11 +5157,11 @@ static void rtl8xxxu_dump_action(struct device *dev,
|
||||
(cap & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2,
|
||||
(cap & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK) >> 6,
|
||||
(cap >> 1) & 0x1,
|
||||
le16_to_cpu(mgmt->u.action.u.addba_resp.status));
|
||||
le16_to_cpu(mgmt->u.action.addba_resp.status));
|
||||
break;
|
||||
case WLAN_ACTION_ADDBA_REQ:
|
||||
cap = le16_to_cpu(mgmt->u.action.u.addba_req.capab);
|
||||
timeout = le16_to_cpu(mgmt->u.action.u.addba_req.timeout);
|
||||
cap = le16_to_cpu(mgmt->u.action.addba_req.capab);
|
||||
timeout = le16_to_cpu(mgmt->u.action.addba_req.timeout);
|
||||
dev_info(dev, "WLAN_ACTION_ADDBA_REQ: "
|
||||
"timeout %i, tid %02x, buf_size %02x, policy %02x\n",
|
||||
timeout,
|
||||
@@ -5171,7 +5171,7 @@ static void rtl8xxxu_dump_action(struct device *dev,
|
||||
break;
|
||||
default:
|
||||
dev_info(dev, "action frame %02x\n",
|
||||
mgmt->u.action.u.addba_resp.action_code);
|
||||
mgmt->u.action.action_code);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user