Commit a19454b6 authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'wireless-drivers-2020-09-09' of...

Merge tag 'wireless-drivers-2020-09-09' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers



Kalle Valo says:

====================
wireless-drivers fixes for v5.9

First set of fixes for v5.9, small but important.

brcmfmac

* fix a throughput regression on bcm4329

mt76

* fix a regression with stations reconnecting on mt7616

* properly free tx skbs, it was working by accident before

mwifiex

* fix a regression with 256 bit encryption keys

wlcore

* revert AES CMAC support as it caused a regression
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 99dc4a5d 1264c1e0
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -664,9 +664,15 @@ static void pkt_align(struct sk_buff *p, int len, int align)
/* To check if there's window offered */
static bool data_ok(struct brcmf_sdio *bus)
{
	/* Reserve TXCTL_CREDITS credits for txctl */
	return (bus->tx_max - bus->tx_seq) > TXCTL_CREDITS &&
	       ((bus->tx_max - bus->tx_seq) & 0x80) == 0;
	u8 tx_rsv = 0;

	/* Reserve TXCTL_CREDITS credits for txctl when it is ready to send */
	if (bus->ctrl_frame_stat)
		tx_rsv = TXCTL_CREDITS;

	return (bus->tx_max - bus->tx_seq - tx_rsv) != 0 &&
	       ((bus->tx_max - bus->tx_seq - tx_rsv) & 0x80) == 0;

}

/* To check if there's window offered */
+1 −1
Original line number Diff line number Diff line
@@ -954,7 +954,7 @@ struct mwifiex_tkip_param {
struct mwifiex_aes_param {
	u8 pn[WPA_PN_SIZE];
	__le16 key_len;
	u8 key[WLAN_KEY_LEN_CCMP];
	u8 key[WLAN_KEY_LEN_CCMP_256];
} __packed;

struct mwifiex_wapi_param {
+2 −2
Original line number Diff line number Diff line
@@ -619,7 +619,7 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv,
	key_v2 = &resp->params.key_material_v2;

	len = le16_to_cpu(key_v2->key_param_set.key_params.aes.key_len);
	if (len > WLAN_KEY_LEN_CCMP)
	if (len > sizeof(key_v2->key_param_set.key_params.aes.key))
		return -EINVAL;

	if (le16_to_cpu(key_v2->action) == HostCmd_ACT_GEN_SET) {
@@ -635,7 +635,7 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv,
		return 0;

	memset(priv->aes_key_v2.key_param_set.key_params.aes.key, 0,
	       WLAN_KEY_LEN_CCMP);
	       sizeof(key_v2->key_param_set.key_params.aes.key));
	priv->aes_key_v2.key_param_set.key_params.aes.key_len =
				cpu_to_le16(len);
	memcpy(priv->aes_key_v2.key_param_set.key_params.aes.key,
+2 −1
Original line number Diff line number Diff line
@@ -2128,7 +2128,8 @@ static int mt7615_load_n9(struct mt7615_dev *dev, const char *name)
		 sizeof(dev->mt76.hw->wiphy->fw_version),
		 "%.10s-%.15s", hdr->fw_ver, hdr->build_date);

	if (!strncmp(hdr->fw_ver, "2.0", sizeof(hdr->fw_ver))) {
	if (!is_mt7615(&dev->mt76) &&
	    !strncmp(hdr->fw_ver, "2.0", sizeof(hdr->fw_ver))) {
		dev->fw_ver = MT7615_FIRMWARE_V2;
		dev->mcu_ops = &sta_update_ops;
	} else {
+6 −2
Original line number Diff line number Diff line
@@ -699,8 +699,12 @@ void mt7915_unregister_device(struct mt7915_dev *dev)
	spin_lock_bh(&dev->token_lock);
	idr_for_each_entry(&dev->token, txwi, id) {
		mt7915_txp_skb_unmap(&dev->mt76, txwi);
		if (txwi->skb)
			dev_kfree_skb_any(txwi->skb);
		if (txwi->skb) {
			struct ieee80211_hw *hw;

			hw = mt76_tx_status_get_hw(&dev->mt76, txwi->skb);
			ieee80211_free_txskb(hw, txwi->skb);
		}
		mt76_put_txwi(&dev->mt76, txwi);
	}
	spin_unlock_bh(&dev->token_lock);
Loading