summarylogtreecommitdiffstats
path: root/0003-wifi.patch
diff options
context:
space:
mode:
authorshadoukun2017-11-24 18:35:14 -0500
committershadoukun2017-11-24 18:35:14 -0500
commita0eb6bf18d3c2e387d2096c0e4216e39fe6678a3 (patch)
tree070bc8d93f7e579934a6f993650c39ca08cad6b7 /0003-wifi.patch
parenta1888e9546f9f56419fd797cfacd8d5d8d5aaa44 (diff)
downloadaur-a0eb6bf18d3c2e387d2096c0e4216e39fe6678a3.tar.gz
update to 4.14.2. Multitouch/pen fixed.
Diffstat (limited to '0003-wifi.patch')
-rw-r--r--0003-wifi.patch288
1 files changed, 245 insertions, 43 deletions
diff --git a/0003-wifi.patch b/0003-wifi.patch
index e81ecef37277..587d799ea142 100644
--- a/0003-wifi.patch
+++ b/0003-wifi.patch
@@ -1,60 +1,98 @@
-diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-index 025bc06a..07bdf271 100644
---- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-@@ -418,6 +418,9 @@ mwifiex_cfg80211_set_power_mgmt(struct wiphy *wiphy,
-
- ps_mode = enabled;
-
-+ mwifiex_dbg(priv->adapter, ERROR, "overriding ps_mode to false\n");
-+ ps_mode = 0;
-+
- return mwifiex_drv_set_power(priv, &ps_mode);
- }
-
-diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-index 83916c14..b47def60 100644
---- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-@@ -2308,7 +2308,7 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
- if (ret)
- return -1;
-
-- if (priv->bss_type != MWIFIEX_BSS_TYPE_UAP) {
-+ if (0 && priv->bss_type != MWIFIEX_BSS_TYPE_UAP) {
- /* Enable IEEE PS by default */
- priv->adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
- ret = mwifiex_send_cmd(priv,
-@@ -2364,7 +2364,7 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
- if (ret)
- return -1;
-
-- if (!disable_auto_ds && first_sta &&
-+ if (0 && !disable_auto_ds && first_sta &&
- priv->bss_type != MWIFIEX_BSS_TYPE_UAP) {
- /* Enable auto deep sleep */
- auto_ds.auto_ds = DEEP_SLEEP_ON;
+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 a75013ac..448ba72d 100644
+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 ac62bce5..293607e6 100644
+index cd31494..3f2a881 100644
--- a/drivers/net/wireless/marvell/mwifiex/pcie.c
+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
-@@ -1716,6 +1716,16 @@ static int mwifiex_pcie_process_cmd_complete(struct mwifiex_adapter *adapter)
+@@ -1729,6 +1729,16 @@ static int mwifiex_pcie_process_cmd_complete(struct mwifiex_adapter *adapter)
}
-
+
rx_len = get_unaligned_le16(skb->data);
+
+
@@ -68,4 +106,168 @@ index ac62bce5..293607e6 100644
+
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;
++ }
++