2017-12-23 09:22:07

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 0/5] iwlwifi: updates intended for v4.16 2017-12-23

From: Luca Coelho <[email protected]>

Hi,

Here's the fourth and probably last batch of patches intended for
4.16. Nothing major, just continued development, some cleanups and
small fixes here and there.

* Fix a UBSAN warning;
* Improvement in the net-stack/driver log syncing
* An RCU lock fix in the new rate-scaling code;
* Small cleanups;

As usual, I'm pushing this to a pending branch, for kbuild bot, and
will send a pull-request later.

FYI, I'll be on holidays/vacations for the next few weeks, so there
will probably not be much activity in the iwlwifi driver code.

Please review.

Cheers,
Luca.


Luca Coelho (1):
iwlwifi: mvm: check if mac80211_queue is valid in iwl_mvm_disable_txq

Mordechay Goodstein (1):
iwlwifi: set default timstamp marker cmd

Sara Sharon (3):
iwlwifi: mvm: flip AMSDU addresses only for 9000 family
iwlwifi: mvm: take RCU lock before dereferencing
iwlwifi: mvm: move TSO segment to a separate function

drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 +
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c | 24 ++--
drivers/net/wireless/intel/iwlwifi/fw/debugfs.h | 5 +
drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c | 6 +-
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 25 ++--
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 158 +++++++++++++-----------
drivers/net/wireless/intel/iwlwifi/mvm/utils.c | 11 +-
7 files changed, 136 insertions(+), 97 deletions(-)

--
2.15.1


2017-12-23 09:22:11

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 5/5] iwlwifi: mvm: check if mac80211_queue is valid in iwl_mvm_disable_txq

From: Luca Coelho <[email protected]>

Sometimes iwl_mvm_disable_txq() may be called with mac80211_queue ==
IEEE80211_INVAL_HW_QUEUE, and this would cause us to use BIT(0xFF)
which is way too large for the u16 we used to store it in
hw_queue_to_mac820211. If this happens the following UBSAN warning
will be generated:

[ 167.185167] UBSAN: Undefined behaviour in drivers/net/wireless/intel/iwlwifi/mvm/utils.c:838:5
[ 167.185171] shift exponent 255 is too large for 64-bit type 'long unsigned int'

Fix that by checking that it is not IEEE80211_INVAL_HW_QUEUE and,
while at it, add a warning if the queue number is larger than
IEEE80211_MAX_QUEUES.

Fixes: 34e10860ae8d ("iwlwifi: mvm: remove references to queue_info in new TX path")
Reported-by: Paul Menzel <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/utils.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
index d65e1db7c097..70f8b8eb6117 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
@@ -800,12 +800,19 @@ int iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue, int mac80211_queue,
.scd_queue = queue,
.action = SCD_CFG_DISABLE_QUEUE,
};
- bool remove_mac_queue = true;
+ bool remove_mac_queue = mac80211_queue != IEEE80211_INVAL_HW_QUEUE;
int ret;

+ if (WARN_ON(remove_mac_queue && mac80211_queue >= IEEE80211_MAX_QUEUES))
+ return -EINVAL;
+
if (iwl_mvm_has_new_tx_api(mvm)) {
spin_lock_bh(&mvm->queue_info_lock);
- mvm->hw_queue_to_mac80211[queue] &= ~BIT(mac80211_queue);
+
+ if (remove_mac_queue)
+ mvm->hw_queue_to_mac80211[queue] &=
+ ~BIT(mac80211_queue);
+
spin_unlock_bh(&mvm->queue_info_lock);

iwl_trans_txq_free(mvm->trans, queue);
--
2.15.1

2017-12-23 09:22:08

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 1/5] iwlwifi: mvm: flip AMSDU addresses only for 9000 family

From: Sara Sharon <[email protected]>

Hardware bug was fixed in later generation.

Signed-off-by: Sara Sharon <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index a3f7c1bf3cc8..71d6660c48e1 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -830,6 +830,16 @@ static void iwl_mvm_agg_rx_received(struct iwl_mvm *mvm,
rcu_read_unlock();
}

+static void iwl_mvm_flip_address(u8 *addr)
+{
+ int i;
+ u8 mac_addr[ETH_ALEN];
+
+ for (i = 0; i < ETH_ALEN; i++)
+ mac_addr[i] = addr[ETH_ALEN - i - 1];
+ ether_addr_copy(addr, mac_addr);
+}
+
void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_rx_cmd_buffer *rxb, int queue)
{
@@ -984,21 +994,16 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
*/
if ((desc->mac_flags2 & IWL_RX_MPDU_MFLG2_AMSDU) &&
!WARN_ON(!ieee80211_is_data_qos(hdr->frame_control))) {
- int i;
u8 *qc = ieee80211_get_qos_ctl(hdr);
- u8 mac_addr[ETH_ALEN];

*qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;

- for (i = 0; i < ETH_ALEN; i++)
- mac_addr[i] = hdr->addr3[ETH_ALEN - i - 1];
- ether_addr_copy(hdr->addr3, mac_addr);
+ if (mvm->trans->cfg->device_family ==
+ IWL_DEVICE_FAMILY_9000) {
+ iwl_mvm_flip_address(hdr->addr3);

- if (ieee80211_has_a4(hdr->frame_control)) {
- for (i = 0; i < ETH_ALEN; i++)
- mac_addr[i] =
- hdr->addr4[ETH_ALEN - i - 1];
- ether_addr_copy(hdr->addr4, mac_addr);
+ if (ieee80211_has_a4(hdr->frame_control))
+ iwl_mvm_flip_address(hdr->addr4);
}
}
if (baid != IWL_RX_REORDER_DATA_INVALID_BAID) {
--
2.15.1

2017-12-23 09:22:10

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 3/5] iwlwifi: mvm: move TSO segment to a separate function

From: Sara Sharon <[email protected]>

This makes future bail-outs from transmitting an AMSDU more
readable.

Signed-off-by: Sara Sharon <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 158 +++++++++++++++-------------
1 file changed, 83 insertions(+), 75 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index dda77b327c98..641f42cabfff 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -680,6 +680,74 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
}

#ifdef CONFIG_INET
+
+static int
+iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes,
+ netdev_features_t netdev_flags,
+ struct sk_buff_head *mpdus_skb)
+{
+ struct sk_buff *tmp, *next;
+ struct ieee80211_hdr *hdr = (void *)skb->data;
+ char cb[sizeof(skb->cb)];
+ u16 i = 0;
+ unsigned int tcp_payload_len;
+ unsigned int mss = skb_shinfo(skb)->gso_size;
+ bool ipv4 = (skb->protocol == htons(ETH_P_IP));
+ u16 ip_base_id = ipv4 ? ntohs(ip_hdr(skb)->id) : 0;
+
+ skb_shinfo(skb)->gso_size = num_subframes * mss;
+ memcpy(cb, skb->cb, sizeof(cb));
+
+ next = skb_gso_segment(skb, netdev_flags);
+ skb_shinfo(skb)->gso_size = mss;
+ if (WARN_ON_ONCE(IS_ERR(next)))
+ return -EINVAL;
+ else if (next)
+ consume_skb(skb);
+
+ while (next) {
+ tmp = next;
+ next = tmp->next;
+
+ memcpy(tmp->cb, cb, sizeof(tmp->cb));
+ /*
+ * Compute the length of all the data added for the A-MSDU.
+ * This will be used to compute the length to write in the TX
+ * command. We have: SNAP + IP + TCP for n -1 subframes and
+ * ETH header for n subframes.
+ */
+ tcp_payload_len = skb_tail_pointer(tmp) -
+ skb_transport_header(tmp) -
+ tcp_hdrlen(tmp) + tmp->data_len;
+
+ if (ipv4)
+ ip_hdr(tmp)->id = htons(ip_base_id + i * num_subframes);
+
+ if (tcp_payload_len > mss) {
+ skb_shinfo(tmp)->gso_size = mss;
+ } else {
+ if (ieee80211_is_data_qos(hdr->frame_control)) {
+ u8 *qc;
+
+ if (ipv4)
+ ip_send_check(ip_hdr(tmp));
+
+ qc = ieee80211_get_qos_ctl((void *)tmp->data);
+ *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
+ }
+ skb_shinfo(tmp)->gso_size = 0;
+ }
+
+ tmp->prev = NULL;
+ tmp->next = NULL;
+
+ __skb_queue_tail(mpdus_skb, tmp);
+ i++;
+ }
+
+ return 0;
+}
+
static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
struct ieee80211_tx_info *info,
struct ieee80211_sta *sta,
@@ -688,14 +756,10 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
struct ieee80211_hdr *hdr = (void *)skb->data;
unsigned int mss = skb_shinfo(skb)->gso_size;
- struct sk_buff *tmp, *next;
- char cb[sizeof(skb->cb)];
unsigned int num_subframes, tcp_payload_len, subf_len, max_amsdu_len;
- bool ipv4 = (skb->protocol == htons(ETH_P_IP));
- u16 ip_base_id = ipv4 ? ntohs(ip_hdr(skb)->id) : 0;
- u16 snap_ip_tcp, pad, i = 0;
+ u16 snap_ip_tcp, pad;
unsigned int dbg_max_amsdu_len;
- netdev_features_t netdev_features = NETIF_F_CSUM_MASK | NETIF_F_SG;
+ netdev_features_t netdev_flags = NETIF_F_CSUM_MASK | NETIF_F_SG;
u8 *qc, tid, txf;

snap_ip_tcp = 8 + skb_transport_header(skb) - skb_network_header(skb) +
@@ -705,16 +769,8 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,

if (!sta->max_amsdu_len ||
!ieee80211_is_data_qos(hdr->frame_control) ||
- (!mvmsta->tlc_amsdu && !dbg_max_amsdu_len)) {
- num_subframes = 1;
- pad = 0;
- goto segment;
- }
-
- qc = ieee80211_get_qos_ctl(hdr);
- tid = *qc & IEEE80211_QOS_CTL_TID_MASK;
- if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
- return -EINVAL;
+ (!mvmsta->tlc_amsdu && !dbg_max_amsdu_len))
+ return iwl_mvm_tx_tso_segment(skb, 1, netdev_flags, mpdus_skb);

/*
* Do not build AMSDU for IPv6 with extension headers.
@@ -723,22 +779,22 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
if (skb->protocol == htons(ETH_P_IPV6) &&
((struct ipv6hdr *)skb_network_header(skb))->nexthdr !=
IPPROTO_TCP) {
- num_subframes = 1;
- pad = 0;
- netdev_features &= ~NETIF_F_CSUM_MASK;
- goto segment;
+ netdev_flags &= ~NETIF_F_CSUM_MASK;
+ return iwl_mvm_tx_tso_segment(skb, 1, netdev_flags, mpdus_skb);
}

+ qc = ieee80211_get_qos_ctl(hdr);
+ tid = *qc & IEEE80211_QOS_CTL_TID_MASK;
+ if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
+ return -EINVAL;
+
/*
* No need to lock amsdu_in_ampdu_allowed since it can't be modified
* during an BA session.
*/
if (info->flags & IEEE80211_TX_CTL_AMPDU &&
- !mvmsta->tid_data[tid].amsdu_in_ampdu_allowed) {
- num_subframes = 1;
- pad = 0;
- goto segment;
- }
+ !mvmsta->tid_data[tid].amsdu_in_ampdu_allowed)
+ return iwl_mvm_tx_tso_segment(skb, 1, netdev_flags, mpdus_skb);

max_amsdu_len = sta->max_amsdu_len;

@@ -804,56 +860,8 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
* Trick the segmentation function to make it
* create SKBs that can fit into one A-MSDU.
*/
-segment:
- skb_shinfo(skb)->gso_size = num_subframes * mss;
- memcpy(cb, skb->cb, sizeof(cb));
-
- next = skb_gso_segment(skb, netdev_features);
- skb_shinfo(skb)->gso_size = mss;
- if (WARN_ON_ONCE(IS_ERR(next)))
- return -EINVAL;
- else if (next)
- consume_skb(skb);
-
- while (next) {
- tmp = next;
- next = tmp->next;
-
- memcpy(tmp->cb, cb, sizeof(tmp->cb));
- /*
- * Compute the length of all the data added for the A-MSDU.
- * This will be used to compute the length to write in the TX
- * command. We have: SNAP + IP + TCP for n -1 subframes and
- * ETH header for n subframes.
- */
- tcp_payload_len = skb_tail_pointer(tmp) -
- skb_transport_header(tmp) -
- tcp_hdrlen(tmp) + tmp->data_len;
-
- if (ipv4)
- ip_hdr(tmp)->id = htons(ip_base_id + i * num_subframes);
-
- if (tcp_payload_len > mss) {
- skb_shinfo(tmp)->gso_size = mss;
- } else {
- if (ieee80211_is_data_qos(hdr->frame_control)) {
- qc = ieee80211_get_qos_ctl((void *)tmp->data);
-
- if (ipv4)
- ip_send_check(ip_hdr(tmp));
- *qc &= ~IEEE80211_QOS_CTL_A_MSDU_PRESENT;
- }
- skb_shinfo(tmp)->gso_size = 0;
- }
-
- tmp->prev = NULL;
- tmp->next = NULL;
-
- __skb_queue_tail(mpdus_skb, tmp);
- i++;
- }
-
- return 0;
+ return iwl_mvm_tx_tso_segment(skb, num_subframes, netdev_flags,
+ mpdus_skb);
}
#else /* CONFIG_INET */
static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
--
2.15.1

2017-12-23 09:22:11

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 4/5] iwlwifi: set default timstamp marker cmd

From: Mordechay Goodstein <[email protected]>

In case debug configuration is started with LDBG cmd also start timestamp
marker for syncing logs witn the FW.

Signed-off-by: Mordechay Goodstein <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 ++++
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c | 24 +++++++++++++++---------
drivers/net/wireless/intel/iwlwifi/fw/debugfs.h | 5 +++++
3 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index 67aefc8fc9ac..bb286f59a6fd 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -66,6 +66,7 @@
#include "iwl-drv.h"
#include "runtime.h"
#include "dbg.h"
+#include "debugfs.h"
#include "iwl-io.h"
#include "iwl-prph.h"
#include "iwl-csr.h"
@@ -1079,6 +1080,9 @@ int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 conf_id)
IWL_WARN(fwrt, "FW already configured (%d) - re-configuring\n",
fwrt->dump.conf);

+ /* start default config marker cmd for syncing logs */
+ iwl_fw_trigger_timestamp(fwrt, 1);
+
/* Send all HCMDs for configuring the FW debug */
ptr = (void *)&fwrt->fw->dbg_conf_tlv[conf_id]->hcmd;
for (i = 0; i < fwrt->fw->dbg_conf_tlv[conf_id]->num_of_hcmds; i++) {
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
index e2ded29a145d..98a76bf6e71f 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
@@ -157,6 +157,20 @@ static void iwl_fw_timestamp_marker_wk(struct work_struct *work)
ret, jiffies_to_msecs(delay) / 1000);
}

+void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay)
+{
+ IWL_INFO(fwrt,
+ "starting timestamp_marker trigger with delay: %us\n",
+ delay);
+
+ iwl_fw_cancel_timestamp(fwrt);
+
+ fwrt->timestamp.delay = msecs_to_jiffies(delay * 1000);
+
+ schedule_delayed_work(&fwrt->timestamp.wk,
+ round_jiffies_relative(fwrt->timestamp.delay));
+}
+
static ssize_t iwl_dbgfs_timestamp_marker_write(struct iwl_fw_runtime *fwrt,
char *buf, size_t count,
loff_t *ppos)
@@ -168,16 +182,8 @@ static ssize_t iwl_dbgfs_timestamp_marker_write(struct iwl_fw_runtime *fwrt,
if (ret < 0)
return ret;

- IWL_INFO(fwrt,
- "starting timestamp_marker trigger with delay: %us\n",
- delay);
+ iwl_fw_trigger_timestamp(fwrt, delay);

- iwl_fw_cancel_timestamp(fwrt);
-
- fwrt->timestamp.delay = msecs_to_jiffies(delay * 1000);
-
- schedule_delayed_work(&fwrt->timestamp.wk,
- round_jiffies_relative(fwrt->timestamp.delay));
return count;
}

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.h b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.h
index e57ff92a68ae..9fcb2b3a7d67 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.h
@@ -75,6 +75,8 @@ static inline void iwl_fw_cancel_timestamp(struct iwl_fw_runtime *fwrt)
cancel_delayed_work_sync(&fwrt->timestamp.wk);
}

+void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay);
+
#else
static inline int iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt,
struct dentry *dbgfs_dir)
@@ -84,4 +86,7 @@ static inline int iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt,

static inline void iwl_fw_cancel_timestamp(struct iwl_fw_runtime *fwrt) {}

+static inline void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt,
+ u32 delay) {}
+
#endif /* CONFIG_IWLWIFI_DEBUGFS */
--
2.15.1

2017-12-23 09:22:09

by Luca Coelho

[permalink] [raw]
Subject: [PATCH 2/5] iwlwifi: mvm: take RCU lock before dereferencing

From: Sara Sharon <[email protected]>

RCU isn't properly locked.

Fixes: 46d372af9935 ("iwlwifi: mvm: rs: new rate scale API - add FW notifications")
Signed-off-by: Sara Sharon <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c
index 55d1274c6092..fb5745660509 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c
@@ -234,13 +234,15 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, struct iwl_rx_packet *pkt)
struct iwl_mvm_sta *mvmsta;
struct iwl_lq_sta_rs_fw *lq_sta;

+ rcu_read_lock();
+
notif = (void *)pkt->data;
mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, notif->sta_id);

if (!mvmsta) {
IWL_ERR(mvm, "Invalid sta id (%d) in FW TLC notification\n",
notif->sta_id);
- return;
+ goto out;
}

lq_sta = &mvmsta->lq_sta.rs_fw;
@@ -251,6 +253,8 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, struct iwl_rx_packet *pkt)
IWL_DEBUG_RATE(mvm, "new rate_n_flags: 0x%X\n",
lq_sta->last_rate_n_flags);
}
+out:
+ rcu_read_unlock();
}

void rs_fw_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
--
2.15.1

2018-01-14 07:22:32

by Grumbach, Emmanuel

[permalink] [raw]
Subject: Re: [PATCH 0/5] iwlwifi: updates intended for v4.16 2017-12-23

SGkgS2FsZSwNCg0KT24gRnJpLCAyMDE4LTAxLTEyIGF0IDEzOjMxICswMjAwLCBLYWxsZSBWYWxv
IHdyb3RlOg0KPiBGcm9tOiBMdWNhIENvZWxobyA8bHVjaWFuby5jb2VsaG9AaW50ZWwuY29tPg0K
PiA+IA0KPiA+IEhpLA0KPiA+IA0KPiA+IEhlcmUncyB0aGUgZm91cnRoIGFuZCBwcm9iYWJseSBs
YXN0IGJhdGNoIG9mIHBhdGNoZXMgaW50ZW5kZWQgZm9yDQo+ID4gNC4xNi4gIE5vdGhpbmcgbWFq
b3IsIGp1c3QgY29udGludWVkIGRldmVsb3BtZW50LCBzb21lIGNsZWFudXBzIGFuZA0KPiA+IHNt
YWxsIGZpeGVzIGhlcmUgYW5kIHRoZXJlLg0KPiA+IA0KPiA+ICogRml4IGEgVUJTQU4gd2Fybmlu
ZzsNCj4gPiAqIEltcHJvdmVtZW50IGluIHRoZSBuZXQtc3RhY2svZHJpdmVyIGxvZyBzeW5jaW5n
DQo+ID4gKiBBbiBSQ1UgbG9jayBmaXggaW4gdGhlIG5ldyByYXRlLXNjYWxpbmcgY29kZTsNCj4g
PiAqIFNtYWxsIGNsZWFudXBzOw0KPiA+IA0KPiA+IEFzIHVzdWFsLCBJJ20gcHVzaGluZyB0aGlz
IHRvIGEgcGVuZGluZyBicmFuY2gsIGZvciBrYnVpbGQgYm90LCBhbmQNCj4gPiB3aWxsIHNlbmQg
YSBwdWxsLXJlcXVlc3QgbGF0ZXIuDQo+ID4gDQo+ID4gRllJLCBJJ2xsIGJlIG9uIGhvbGlkYXlz
L3ZhY2F0aW9ucyBmb3IgdGhlIG5leHQgZmV3IHdlZWtzLCBzbyB0aGVyZQ0KPiA+IHdpbGwgcHJv
YmFibHkgbm90IGJlIG11Y2ggYWN0aXZpdHkgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIGNvZGUuDQo+
ID4gDQo+ID4gUGxlYXNlIHJldmlldy4NCj4gPiANCj4gPiBDaGVlcnMsDQo+ID4gTHVjYS4NCj4g
PiANCj4gPiANCj4gPiBMdWNhIENvZWxobyAoMSk6DQo+ID4gICBpd2x3aWZpOiBtdm06IGNoZWNr
IGlmIG1hYzgwMjExX3F1ZXVlIGlzIHZhbGlkIGluDQo+ID4gaXdsX212bV9kaXNhYmxlX3R4cQ0K
PiA+IA0KPiA+IE1vcmRlY2hheSBHb29kc3RlaW4gKDEpOg0KPiA+ICAgaXdsd2lmaTogc2V0IGRl
ZmF1bHQgdGltc3RhbXAgbWFya2VyIGNtZA0KPiA+IA0KPiA+IFNhcmEgU2hhcm9uICgzKToNCj4g
PiAgIGl3bHdpZmk6IG12bTogZmxpcCBBTVNEVSBhZGRyZXNzZXMgb25seSBmb3IgOTAwMCBmYW1p
bHkNCj4gPiAgIGl3bHdpZmk6IG12bTogdGFrZSBSQ1UgbG9jayBiZWZvcmUgZGVyZWZlcmVuY2lu
Zw0KPiA+ICAgaXdsd2lmaTogbXZtOiBtb3ZlIFRTTyBzZWdtZW50IHRvIGEgc2VwYXJhdGUgZnVu
Y3Rpb24NCj4gDQo+IE1vc3QgbGlrZWx5IHRoZSBtZXJnZSB3aW5kb3cgc3RhcnRzIGluIDkgZGF5
cyBzbyBJIG5lZWQgdG8gc3RhcnQNCj4gZ2V0dGluZw0KPiBwYXRjaGVzIHJlYWR5LiBBcyBMdWNh
IGlzIGF3YXkgc2hvdWxkIEkgYXBwbHkgdGhlc2UgcGF0Y2hlcyBkaXJlY3RseQ0KPiB0bw0KPiB3
aXJlbGVzcy1kcml2ZXJzLW5leHQ/DQo+IA0KDQpGaXJzdCBsZXQgbWUgdGhhbmsgeW91IGZvciB0
cmFja2luZyB0aGlzLg0KSSBkb24ndCBzZWUgYW55dGhpbmcgdGhhdCB3ZSByZWFsbHkgbmVlZCBp
biA0LjE2IGhlcmUuDQpCZXNpZGVzIEx1Y2EncyBVQlNBTiB3YXJuaW5nLCBhbGwgdGhlIHJlc3Qg
aXMgZm9yIGEgbmV3IGRldmljZQ0KZmFtaWx5IHdoaWNoIHdvbid0IGJlIHN1cHBvcnRlZCBpbiA0
LjE2IGFueXdheS4NCg0KU28gSSBvcHQgdG8gd2FpdCBmb3IgTHVjYSBoZXJlLg==

2018-01-12 11:31:27

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 0/5] iwlwifi: updates intended for v4.16 2017-12-23

+ emmanuel

Luca Coelho <[email protected]> writes:

> From: Luca Coelho <[email protected]>
>
> Hi,
>
> Here's the fourth and probably last batch of patches intended for
> 4.16. Nothing major, just continued development, some cleanups and
> small fixes here and there.
>
> * Fix a UBSAN warning;
> * Improvement in the net-stack/driver log syncing
> * An RCU lock fix in the new rate-scaling code;
> * Small cleanups;
>
> As usual, I'm pushing this to a pending branch, for kbuild bot, and
> will send a pull-request later.
>
> FYI, I'll be on holidays/vacations for the next few weeks, so there
> will probably not be much activity in the iwlwifi driver code.
>
> Please review.
>
> Cheers,
> Luca.
>
>
> Luca Coelho (1):
> iwlwifi: mvm: check if mac80211_queue is valid in iwl_mvm_disable_txq
>
> Mordechay Goodstein (1):
> iwlwifi: set default timstamp marker cmd
>
> Sara Sharon (3):
> iwlwifi: mvm: flip AMSDU addresses only for 9000 family
> iwlwifi: mvm: take RCU lock before dereferencing
> iwlwifi: mvm: move TSO segment to a separate function

Most likely the merge window starts in 9 days so I need to start getting
patches ready. As Luca is away should I apply these patches directly to
wireless-drivers-next?

--
Kalle Valo

2018-01-14 10:26:40

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 0/5] iwlwifi: updates intended for v4.16 2017-12-23

"Grumbach, Emmanuel" <[email protected]> writes:

> On Fri, 2018-01-12 at 13:31 +0200, Kalle Valo wrote:
>> From: Luca Coelho <[email protected]>
>>
>> > Luca Coelho (1):
>> > iwlwifi: mvm: check if mac80211_queue is valid in
>> > iwl_mvm_disable_txq
>> >
>> > Mordechay Goodstein (1):
>> > iwlwifi: set default timstamp marker cmd
>> >
>> > Sara Sharon (3):
>> > iwlwifi: mvm: flip AMSDU addresses only for 9000 family
>> > iwlwifi: mvm: take RCU lock before dereferencing
>> > iwlwifi: mvm: move TSO segment to a separate function
>>
>> Most likely the merge window starts in 9 days so I need to start
>> getting patches ready. As Luca is away should I apply these patches
>> directly to wireless-drivers-next?
>>
>
> First let me thank you for tracking this. I don't see anything that we
> really need in 4.16 here. Besides Luca's UBSAN warning, all the rest
> is for a new device family which won't be supported in 4.16 anyway.
>
> So I opt to wait for Luca here.

Ok, I'll wait for him then.

--
Kalle Valo

2018-02-03 07:25:42

by Luca Coelho

[permalink] [raw]
Subject: Re: [PATCH 0/5] iwlwifi: updates intended for v4.16 2017-12-23

Hi,

On Sun, 2018-01-14 at 12:26 +0200, Kalle Valo wrote:
> "Grumbach, Emmanuel" <[email protected]> writes:
>
> > On Fri, 2018-01-12 at 13:31 +0200, Kalle Valo wrote:
> > > From: Luca Coelho <[email protected]>
> > >
> > > > Luca Coelho (1):
> > > > iwlwifi: mvm: check if mac80211_queue is valid in
> > > > iwl_mvm_disable_txq
> > > >
> > > > Mordechay Goodstein (1):
> > > > iwlwifi: set default timstamp marker cmd
> > > >
> > > > Sara Sharon (3):
> > > > iwlwifi: mvm: flip AMSDU addresses only for 9000 family
> > > > iwlwifi: mvm: take RCU lock before dereferencing
> > > > iwlwifi: mvm: move TSO segment to a separate function
> > >
> > > Most likely the merge window starts in 9 days so I need to start
> > > getting patches ready. As Luca is away should I apply these
> > > patches
> > > directly to wireless-drivers-next?
> > >
> >
> > First let me thank you for tracking this. I don't see anything that
> > we
> > really need in 4.16 here. Besides Luca's UBSAN warning, all the
> > rest
> > is for a new device family which won't be supported in 4.16 anyway.
> >
> > So I opt to wait for Luca here.
>
> Ok, I'll wait for him then.

Sorry for coming back to this just now, but yeah, Emmanuel is right
because of the holidays and my vacations, this got delayed, so it can
go to 4.17. I'll include this as part of my next -next pull request.

--
Cheers,
Luca.