diff options
Diffstat (limited to '0003-wifi.patch')
-rw-r--r-- | 0003-wifi.patch | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/0003-wifi.patch b/0003-wifi.patch deleted file mode 100644 index 77e14cecf98f..000000000000 --- a/0003-wifi.patch +++ /dev/null @@ -1,312 +0,0 @@ -diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c -index 05dca3e..59c2fcc 100644 ---- a/drivers/net/usb/cdc_ether.c -+++ b/drivers/net/usb/cdc_ether.c -@@ -807,13 +807,6 @@ static const struct usb_device_id products[] = { - .driver_info = 0, - }, - --/* Microsoft Surface 3 dock (based on Realtek RTL8153) */ --{ -- USB_DEVICE_AND_INTERFACE_INFO(MICROSOFT_VENDOR_ID, 0x07c6, USB_CLASS_COMM, -- USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), -- .driver_info = 0, --}, -- - /* TP-LINK UE300 USB 3.0 Ethernet Adapters (based on Realtek RTL8153) */ - { - USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, 0x0601, USB_CLASS_COMM, -diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index d51d9ab..b94ebe9 100644 ---- a/drivers/net/usb/r8152.c -+++ b/drivers/net/usb/r8152.c -@@ -5310,7 +5310,6 @@ static const struct usb_device_id rtl8152_table[] = { - {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8152)}, - {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8153)}, - {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07ab)}, -- {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07c6)}, - {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)}, - {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)}, - {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062)}, -diff --git a/drivers/net/wireless/marvell/mwifiex/11n_aggr.c b/drivers/net/wireless/marvell/mwifiex/11n_aggr.c -index 042a1d0..fc9041f 100644 ---- a/drivers/net/wireless/marvell/mwifiex/11n_aggr.c -+++ b/drivers/net/wireless/marvell/mwifiex/11n_aggr.c -@@ -200,8 +200,7 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv, - - do { - /* Check if AMSDU can accommodate this MSDU */ -- if ((skb_aggr->len + skb_src->len + LLC_SNAP_LEN) > -- adapter->tx_buf_size) -+ if (skb_tailroom(skb_aggr) < (skb_src->len + LLC_SNAP_LEN)) - break; - - skb_src = skb_dequeue(&pra_list->skb_head); -diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c -index 32c5074..33a7325 100644 ---- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c -+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c -@@ -2503,6 +2503,7 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, - struct ieee80211_channel *chan; - struct ieee_types_header *ie; - struct mwifiex_user_scan_cfg *user_scan_cfg; -+ u8 mac_addr[ETH_ALEN]; - - mwifiex_dbg(priv->adapter, CMD, - "info: received scan request on %s\n", dev->name); -@@ -2529,15 +2530,10 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, - priv->scan_request = request; - - if (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { -- ether_addr_copy(priv->random_mac, request->mac_addr); -- for (i = 0; i < ETH_ALEN; i++) { -- priv->random_mac[i] &= request->mac_addr_mask[i]; -- priv->random_mac[i] |= get_random_int() & -- ~(request->mac_addr_mask[i]); -- } -- ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac); -- } else { -- eth_zero_addr(priv->random_mac); -+ get_random_mask_addr(mac_addr, request->mac_addr, -+ request->mac_addr_mask); -+ ether_addr_copy(request->mac_addr, mac_addr); -+ ether_addr_copy(user_scan_cfg->random_mac, mac_addr); - } - - user_scan_cfg->num_ssids = request->n_ssids; -diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h -index a76bd79..a34de85 100644 ---- a/drivers/net/wireless/marvell/mwifiex/main.h -+++ b/drivers/net/wireless/marvell/mwifiex/main.h -@@ -680,7 +680,6 @@ struct mwifiex_private { - struct mwifiex_user_scan_chan hidden_chan[MWIFIEX_USER_SCAN_CHAN_MAX]; - u8 assoc_resp_ht_param; - bool ht_param_present; -- u8 random_mac[ETH_ALEN]; - }; - - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index cd31494..3f2a881 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -1729,6 +1729,16 @@ static int mwifiex_pcie_process_cmd_complete(struct mwifiex_adapter *adapter) - } - - rx_len = get_unaligned_le16(skb->data); -+ -+ -+ if (rx_len == 0) { -+ mwifiex_dbg(adapter, ERROR, -+ "0 byte cmdrsp\n"); -+ mwifiex_map_pci_memory(adapter, skb, MWIFIEX_UPLD_SIZE, -+ PCI_DMA_FROMDEVICE); -+ return 0; -+ } -+ - skb_put(skb, MWIFIEX_UPLD_SIZE - skb->len); - skb_trim(skb, rx_len); - -diff --git a/drivers/net/wireless/marvell/mwifiex/scan.c b/drivers/net/wireless/marvell/mwifiex/scan.c -index c9d41ed..cddf412 100644 ---- a/drivers/net/wireless/marvell/mwifiex/scan.c -+++ b/drivers/net/wireless/marvell/mwifiex/scan.c -@@ -1948,7 +1948,8 @@ mwifiex_active_scan_req_for_passive_chan(struct mwifiex_private *priv) - - adapter->active_scan_triggered = true; - if (priv->scan_request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) -- ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac); -+ ether_addr_copy(user_scan_cfg->random_mac, -+ priv->scan_request->mac_addr); - user_scan_cfg->num_ssids = priv->scan_request->n_ssids; - user_scan_cfg->ssid_list = priv->scan_request->ssids; - -diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c -index fb09014..db03c6b 100644 ---- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c -+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c -@@ -2336,8 +2336,8 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init) - return -1; - } - -- mwifiex_send_cmd(priv, HostCmd_CMD_CHAN_REGION_CFG, -- HostCmd_ACT_GEN_GET, 0, NULL, true); -+ //mwifiex_send_cmd(priv, HostCmd_CMD_CHAN_REGION_CFG, -+ // HostCmd_ACT_GEN_GET, 0, NULL, true); - } - - /* get tx rate */ -diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c -index 0fba5b1..4e1687f 100644 ---- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c -+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c -@@ -48,9 +48,14 @@ mwifiex_process_cmdresp_error(struct mwifiex_private *priv, - struct host_cmd_ds_802_11_ps_mode_enh *pm; - unsigned long flags; - -- mwifiex_dbg(adapter, ERROR, -- "CMD_RESP: cmd %#x error, result=%#x\n", -- resp->command, resp->result); -+ if (resp->command == 271 && resp->result == 2){ -+ // ignore this command as the firmware does not support it -+ } -+ else { -+ mwifiex_dbg(adapter, ERROR, -+ "CMD_RESP: cmd %#x error, result=%#x\n", -+ resp->command, resp->result); -+ } - - if (adapter->curr_cmd->wait_q_enabled) - adapter->cmd_wait_q.status = -1; -diff --git a/net/wireless/sme.c b/net/wireless/sme.c -index 3dd05a0..ab32ef1 100644 ---- a/net/wireless/sme.c -+++ b/net/wireless/sme.c -@@ -690,6 +690,11 @@ void __cfg80211_connect_result(struct net_device *dev, - return; - } - -+ if (WARN_ON(!wdev->ssid_len)) { -+ cfg80211_put_bss(wdev->wiphy, cr->bss); -+ return; -+ } -+ - nl80211_send_connect_result(wiphy_to_rdev(wdev->wiphy), dev, cr, - GFP_KERNEL); - -@@ -1062,7 +1067,7 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, - /* - * If we have an ssid_len, we're trying to connect or are - * already connected, so reject a new SSID unless it's the -- * same (which is the case for re-association.) -+ * same (which is the case for Re-Association. - */ - if (wdev->ssid_len && - (wdev->ssid_len != connect->ssid_len || -diff --git b/net/wireless/sme.c.rej b/net/wireless/sme.c.rej -new file mode 100644 -index 0000000..e78d68c ---- /dev/null -+++ b/net/wireless/sme.c.rej -@@ -0,0 +1,82 @@ -+--- net/wireless/sme.c -++++ net/wireless/sme.c -+@@ -522,11 +522,6 @@ static int cfg80211_sme_connect(struct wireless_dev *wdev, -+ return -EOPNOTSUPP; -+ -+ if (wdev->current_bss) { -+- if (!prev_bssid) -+- return -EALREADY; -+- if (prev_bssid && -+- !ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid)) -+- return -ENOTCONN; -+ cfg80211_unhold_bss(wdev->current_bss); -+ cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); -+ wdev->current_bss = NULL; -+@@ -1063,11 +1058,35 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, -+ -+ ASSERT_WDEV_LOCK(wdev); -+ -+- if (WARN_ON(wdev->connect_keys)) { -+- kzfree(wdev->connect_keys); -+- wdev->connect_keys = NULL; -++ /* -++ * If we have an ssid_len, we're trying to connect or are -++ * already connected, so reject a new SSID unless it's the -++ * same (which is the case for re-association.) -++ */ -++ if (wdev->ssid_len && -++ (wdev->ssid_len != connect->ssid_len || -++ memcmp(wdev->ssid, connect->ssid, wdev->ssid_len))) -++ return -EALREADY; -++ -++ /* -++ * If connected, reject (re-)association unless prev_bssid -++ * matches the current BSSID. -++ */ -++ if (wdev->current_bss) { -++ if (!prev_bssid) -++ return -EALREADY; -++ if (!ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid)) -++ return -ENOTCONN; -+ } -+ -++ /* -++ * Reject if we're in the process of connecting with WEP, -++ * this case isn't very interesting and trying to handle -++ * it would make the code much more complex. -++ */ -++ if (wdev->connect_keys) -++ return -EINPROGRESS; -++ -+ cfg80211_oper_and_ht_capa(&connect->ht_capa_mask, -+ rdev->wiphy.ht_capa_mod_mask); -+ -+@@ -1118,7 +1137,12 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, -+ -+ if (err) { -+ wdev->connect_keys = NULL; -+- wdev->ssid_len = 0; -++ /* -++ * This could be reassoc getting refused, don't clear -++ * ssid_len in that case. -++ */ -++ if (!wdev->current_bss) -++ wdev->ssid_len = 0; -+ return err; -+ } -+ -+@@ -1145,6 +1169,14 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev, -+ else if (wdev->ssid_len) -+ err = rdev_disconnect(rdev, dev, reason); -+ -++ /* -++ * Clear ssid_len unless we actually were fully connected, -++ * in which case cfg80211_disconnected() will take care of -++ * this later. -++ */ -++ if (!wdev->current_bss) -++ wdev->ssid_len = 0; -++ -+ return err; -+ } -+ -diff --git a/drivers/net/wireless/marvell/mwifiex/init.c b/drivers/net/wireless/marvell/mwifiex/init.c -index e11919db7..7f41cf8fe 100644 ---- a/drivers/net/wireless/marvell/mwifiex/init.c -+++ b/drivers/net/wireless/marvell/mwifiex/init.c -@@ -60,7 +60,7 @@ static void wakeup_timer_fn(unsigned long data) - adapter->hw_status = MWIFIEX_HW_STATUS_RESET; - mwifiex_cancel_all_pending_cmd(adapter); - -- if (adapter->if_ops.card_reset && !adapter->hs_activated) -+ if (adapter->if_ops.card_reset) - adapter->if_ops.card_reset(adapter); - } - -diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c -index 3f2a88167..50df1c05f 100644 ---- a/drivers/net/wireless/marvell/mwifiex/pcie.c -+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c -@@ -310,6 +310,8 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev) - mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); - } - -+ cancel_work_sync(&card->work); -+ - mwifiex_remove_card(adapter); - } - -diff --git a/drivers/net/wireless/marvell/mwifiex/sdio.c b/drivers/net/wireless/marvell/mwifiex/sdio.c -index fd5183c10..832824a89 100644 ---- a/drivers/net/wireless/marvell/mwifiex/sdio.c -+++ b/drivers/net/wireless/marvell/mwifiex/sdio.c -@@ -399,6 +399,8 @@ mwifiex_sdio_remove(struct sdio_func *func) - mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); - } - -+ cancel_work_sync(&card->work); -+ - mwifiex_remove_card(adapter); - } - |