Home Home > GIT Browse > openSUSE-15.1
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Tesarik <ptesarik@suse.cz>2019-07-12 20:18:46 +0200
committerPetr Tesarik <ptesarik@suse.cz>2019-07-12 20:18:46 +0200
commit9d0e4fc071d2acb10d633d125d84c6258befec19 (patch)
tree18a6499bfd378790021883bbd9b197d0d5a36136
parentf8d2acbc7ccfafd38eb29e95614fc2979340625f (diff)
parentca04cd032390127241fb780c844fdc63576cb2b8 (diff)
Merge branch 'users/lduncan/SLE15-SP1/for-next' into SLE15-SP1
Pull Marvell qedi driver update from Lee Duncan Conflicts: series.conf
-rw-r--r--patches.drivers/qedi-use-hwfns-and-affin_hwfn_idx-to-get-msi-x-vector-index92
-rw-r--r--patches.drivers/scsi-qedi-add-module-param-to-set-ping-packet-size76
-rw-r--r--patches.drivers/scsi-qedi-add-packet-filter-in-light-l2-rx-path60
-rw-r--r--patches.drivers/scsi-qedi-check-for-session-online-before-getting-iscsi-tlv-data64
-rw-r--r--patches.drivers/scsi-qedi-cleanup-redundant-qedi_page_size-macro-definition34
-rw-r--r--patches.drivers/scsi-qedi-fix-spelling-mistake-oustanding-outstanding54
-rw-r--r--patches.drivers/scsi-qedi-move-ll2-producer-index-processing-in-bh96
-rw-r--r--patches.drivers/scsi-qedi-remove-set-but-not-used-variables-cdev-and-udev46
-rw-r--r--patches.drivers/scsi-qedi-replace-page_size-with-qedi_page_size85
-rw-r--r--patches.drivers/scsi-qedi-update-driver-version-to-8-33-0-2130
-rw-r--r--series.conf10
11 files changed, 647 insertions, 0 deletions
diff --git a/patches.drivers/qedi-use-hwfns-and-affin_hwfn_idx-to-get-msi-x-vector-index b/patches.drivers/qedi-use-hwfns-and-affin_hwfn_idx-to-get-msi-x-vector-index
new file mode 100644
index 0000000000..11c697762a
--- /dev/null
+++ b/patches.drivers/qedi-use-hwfns-and-affin_hwfn_idx-to-get-msi-x-vector-index
@@ -0,0 +1,92 @@
+From: Manish Rangankar <mrangankar@marvell.com>
+Date: Sun, 26 May 2019 15:22:29 +0300
+Subject: qedi: Use hwfns and affin_hwfn_idx to get MSI-X vector index
+Git-commit: 2bfbc570586e4045cb09214af477223f732a0523
+Patch-mainline: v5.3-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+MSI-X vector index is determined using qed device information and
+affinity to use.
+
+Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
+Signed-off-by: Ariel Elior <ariel.elior@marvell.com>
+Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_main.c | 32 ++++++++++++++++++++++++++------
+ 1 file changed, 26 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index f07e0814a657..1a62ab0867ef 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -1313,13 +1313,20 @@ static void qedi_simd_int_handler(void *cookie)
+ static void qedi_sync_free_irqs(struct qedi_ctx *qedi)
+ {
+ int i;
++ u16 idx;
+
+ if (qedi->int_info.msix_cnt) {
+ for (i = 0; i < qedi->int_info.used_cnt; i++) {
+- synchronize_irq(qedi->int_info.msix[i].vector);
+- irq_set_affinity_hint(qedi->int_info.msix[i].vector,
++ idx = i * qedi->dev_info.common.num_hwfns +
++ qedi_ops->common->get_affin_hwfn_idx(qedi->cdev);
++
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
++ "Freeing IRQ #%d vector_idx=%d.\n", i, idx);
++
++ synchronize_irq(qedi->int_info.msix[idx].vector);
++ irq_set_affinity_hint(qedi->int_info.msix[idx].vector,
+ NULL);
+- free_irq(qedi->int_info.msix[i].vector,
++ free_irq(qedi->int_info.msix[idx].vector,
+ &qedi->fp_array[i]);
+ }
+ } else {
+@@ -1334,20 +1341,28 @@ static void qedi_sync_free_irqs(struct qedi_ctx *qedi)
+ static int qedi_request_msix_irq(struct qedi_ctx *qedi)
+ {
+ int i, rc, cpu;
++ u16 idx;
+
+ cpu = cpumask_first(cpu_online_mask);
+ for (i = 0; i < MIN_NUM_CPUS_MSIX(qedi); i++) {
+- rc = request_irq(qedi->int_info.msix[i].vector,
++ idx = i * qedi->dev_info.common.num_hwfns +
++ qedi_ops->common->get_affin_hwfn_idx(qedi->cdev);
++
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
++ "dev_info: num_hwfns=%d affin_hwfn_idx=%d.\n",
++ qedi->dev_info.common.num_hwfns,
++ qedi_ops->common->get_affin_hwfn_idx(qedi->cdev));
++
++ rc = request_irq(qedi->int_info.msix[idx].vector,
+ qedi_msix_handler, 0, "qedi",
+ &qedi->fp_array[i]);
+-
+ if (rc) {
+ QEDI_WARN(&qedi->dbg_ctx, "request_irq failed.\n");
+ qedi_sync_free_irqs(qedi);
+ return rc;
+ }
+ qedi->int_info.used_cnt++;
+- rc = irq_set_affinity_hint(qedi->int_info.msix[i].vector,
++ rc = irq_set_affinity_hint(qedi->int_info.msix[idx].vector,
+ get_cpu_mask(cpu));
+ cpu = cpumask_next(cpu, cpu_online_mask);
+ }
+@@ -2415,6 +2430,11 @@ static int __qedi_probe(struct pci_dev *pdev, int mode)
+ if (rc)
+ goto free_host;
+
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
++ "dev_info: num_hwfns=%d affin_hwfn_idx=%d.\n",
++ qedi->dev_info.common.num_hwfns,
++ qedi_ops->common->get_affin_hwfn_idx(qedi->cdev));
++
+ if (mode != QEDI_MODE_RECOVERY) {
+ rc = qedi_set_iscsi_pf_param(qedi);
+ if (rc) {
+
diff --git a/patches.drivers/scsi-qedi-add-module-param-to-set-ping-packet-size b/patches.drivers/scsi-qedi-add-module-param-to-set-ping-packet-size
new file mode 100644
index 0000000000..03c89bdf4b
--- /dev/null
+++ b/patches.drivers/scsi-qedi-add-module-param-to-set-ping-packet-size
@@ -0,0 +1,76 @@
+From: Nilesh Javali <nilesh.javali@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:21 -0800
+Subject: scsi: qedi: add module param to set ping packet size
+Git-commit: dcceeeb71fb7f927e609175dfd76bcdf0f44abc2
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Default packet size is 0x400. For jumbo packets set to 0x2400.
+
+Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi.h | 1 -
+ drivers/scsi/qedi/qedi_main.c | 13 +++++++++----
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h
+index 6fa02c553fd3..a26bb5066b90 100644
+--- a/drivers/scsi/qedi/qedi.h
++++ b/drivers/scsi/qedi/qedi.h
+@@ -63,7 +63,6 @@ struct qedi_endpoint;
+ #define QEDI_LOCAL_PORT_INVALID 0xffff
+ #define TX_RX_RING 16
+ #define RX_RING (TX_RX_RING - 1)
+-#define LL2_SINGLE_BUF_SIZE 0x400
+ #define QEDI_PAGE_ALIGN(addr) ALIGN(addr, QEDI_PAGE_SIZE)
+ #define QEDI_PAGE_MASK (~((QEDI_PAGE_SIZE) - 1))
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 2621deeed0cd..8942f62d66d7 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -44,6 +44,11 @@ module_param(qedi_io_tracing, uint, 0644);
+ MODULE_PARM_DESC(qedi_io_tracing,
+ " Enable logging of SCSI requests/completions into trace buffer. (default off).");
+
++uint qedi_ll2_buf_size = 0x400;
++module_param(qedi_ll2_buf_size, uint, 0644);
++MODULE_PARM_DESC(qedi_ll2_buf_size,
++ "parameter to set ping packet size, default - 0x400, Jumbo packets - 0x2400.");
++
+ const struct qed_iscsi_ops *qedi_ops;
+ static struct scsi_transport_template *qedi_scsi_transport;
+ static struct pci_driver qedi_pci_driver;
+@@ -228,7 +233,7 @@ static int __qedi_alloc_uio_rings(struct qedi_uio_dev *udev)
+ }
+
+ /* Allocating memory for Tx/Rx pkt buffer */
+- udev->ll2_buf_size = TX_RX_RING * LL2_SINGLE_BUF_SIZE;
++ udev->ll2_buf_size = TX_RX_RING * qedi_ll2_buf_size;
+ udev->ll2_buf_size = QEDI_PAGE_ALIGN(udev->ll2_buf_size);
+ udev->ll2_buf = (void *)__get_free_pages(GFP_KERNEL | __GFP_COMP |
+ __GFP_ZERO, 2);
+@@ -283,7 +288,7 @@ static int qedi_alloc_uio_rings(struct qedi_ctx *qedi)
+ qedi->udev = udev;
+
+ udev->tx_pkt = udev->ll2_buf;
+- udev->rx_pkt = udev->ll2_buf + LL2_SINGLE_BUF_SIZE;
++ udev->rx_pkt = udev->ll2_buf + qedi_ll2_buf_size;
+ return 0;
+
+ err_uctrl:
+@@ -752,8 +757,8 @@ static int qedi_ll2_process_skb(struct qedi_ctx *qedi, struct sk_buff *skb,
+
+ udev = qedi->udev;
+ uctrl = udev->uctrl;
+- pkt = udev->rx_pkt + (uctrl->hw_rx_prod * LL2_SINGLE_BUF_SIZE);
+- len = min_t(u32, skb->len, (u32)LL2_SINGLE_BUF_SIZE);
++ pkt = udev->rx_pkt + (uctrl->hw_rx_prod * qedi_ll2_buf_size);
++ len = min_t(u32, skb->len, (u32)qedi_ll2_buf_size);
+ memcpy(pkt, skb->data, len);
+
+ memset(&rxbd, 0, sizeof(rxbd));
+
diff --git a/patches.drivers/scsi-qedi-add-packet-filter-in-light-l2-rx-path b/patches.drivers/scsi-qedi-add-packet-filter-in-light-l2-rx-path
new file mode 100644
index 0000000000..cfdf269f49
--- /dev/null
+++ b/patches.drivers/scsi-qedi-add-packet-filter-in-light-l2-rx-path
@@ -0,0 +1,60 @@
+From: Manish Rangankar <manish.rangankar@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:20 -0800
+Subject: scsi: qedi: Add packet filter in light L2 Rx path.
+Git-commit: cdd3ff87f10813e42ef6573a1c92a91a9fc24709
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Add packet filter to avoid unnecessary packet processing in iscsiuio.
+
+Signed-off-by: Manish Rangankar <manish.rangankar@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_main.c | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 713db9cfae7f..2621deeed0cd 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -659,6 +659,7 @@ static int qedi_ll2_rx(void *cookie, struct sk_buff *skb, u32 arg1, u32 arg2)
+ struct qedi_uio_dev *udev;
+ struct qedi_uio_ctrl *uctrl;
+ struct skb_work_list *work;
++ struct ethhdr *eh;
+ u32 prod;
+
+ if (!qedi) {
+@@ -673,6 +674,29 @@ static int qedi_ll2_rx(void *cookie, struct sk_buff *skb, u32 arg1, u32 arg2)
+ return 0;
+ }
+
++ eh = (struct ethhdr *)skb->data;
++ /* Undo VLAN encapsulation */
++ if (eh->h_proto == htons(ETH_P_8021Q)) {
++ memmove((u8 *)eh + VLAN_HLEN, eh, ETH_ALEN * 2);
++ eh = (struct ethhdr *)skb_pull(skb, VLAN_HLEN);
++ skb_reset_mac_header(skb);
++ }
++
++ /* Filter out non FIP/FCoE frames here to free them faster */
++ if (eh->h_proto != htons(ETH_P_ARP) &&
++ eh->h_proto != htons(ETH_P_IP) &&
++ eh->h_proto != htons(ETH_P_IPV6)) {
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_LL2,
++ "Dropping frame ethertype [0x%x] len [0x%x].\n",
++ eh->h_proto, skb->len);
++ kfree_skb(skb);
++ return 0;
++ }
++
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_LL2,
++ "Allowed frame ethertype [0x%x] len [0x%x].\n",
++ eh->h_proto, skb->len);
++
+ udev = qedi->udev;
+ uctrl = udev->uctrl;
+
+
diff --git a/patches.drivers/scsi-qedi-check-for-session-online-before-getting-iscsi-tlv-data b/patches.drivers/scsi-qedi-check-for-session-online-before-getting-iscsi-tlv-data
new file mode 100644
index 0000000000..a52ec69e8e
--- /dev/null
+++ b/patches.drivers/scsi-qedi-check-for-session-online-before-getting-iscsi-tlv-data
@@ -0,0 +1,64 @@
+From: Manish Rangankar <manish.rangankar@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:19 -0800
+Subject: scsi: qedi: Check for session online before getting iSCSI TLV data.
+Git-commit: d5632b11f0a17efa6356311e535ae135d178438d
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+The kernel panic was observed after switch side perturbation,
+
+BUG: unable to handle kernel NULL pointer dereference at (null)
+ IP: [<ffffffff8132b5a0>] strcmp+0x20/0x40
+ PGD 0 Oops: 0000 [#1] SMP
+CPU: 8 PID: 647 Comm: kworker/8:1 Tainted: G W OE ------------ 3.10.0-693.el7.x86_64 #1
+Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 06/20/2018
+Workqueue: slowpath-13:00. qed_slowpath_task [qed]
+task: ffff880429eb8fd0 ti: ffff880429190000 task.ti: ffff880429190000
+RIP: 0010:[<ffffffff8132b5a0>] [<ffffffff8132b5a0>] strcmp+0x20/0x40
+RSP: 0018:ffff880429193c68 EFLAGS: 00010202
+RAX: 000000000000000a RBX: 0000000000000002 RCX: 0000000000000000
+RDX: 0000000000000001 RSI: 0000000000000001 RDI: ffff88042bda7a41
+RBP: ffff880429193c68 R08: 000000000000ffff R09: 000000000000ffff
+R10: 0000000000000007 R11: ffff88042b3af338 R12: ffff880420b007a0
+R13: ffff88081aa56af8 R14: 0000000000000001 R15: ffff88081aa50410
+FS: 0000000000000000(0000) GS:ffff88042fe00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 0000000000000000 CR3: 00000000019f2000 CR4: 00000000003407e0
+DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+Stack:
+ffff880429193d20 ffffffffc02a0c90 ffffc90004b32000 ffff8803fd3ec600
+ffff88042bda7800 ffff88042bda7a00 ffff88042bda7840 ffff88042bda7a40
+0000000129193d10 2e3836312e323931 ff000a342e363232 ffffffffc01ad99d
+Call Trace:
+[<ffffffffc02a0c90>] qedi_get_protocol_tlv_data+0x270/0x470 [qedi]
+[<ffffffffc01ad99d>] ? qed_mfw_process_tlv_req+0x24d/0xbf0 [qed]
+[<ffffffffc01653ae>] qed_mfw_fill_tlv_data+0x5e/0xd0 [qed]
+[<ffffffffc01ad9b9>] qed_mfw_process_tlv_req+0x269/0xbf0 [qed]
+
+Fix kernel NULL pointer deref by checking for session is online before
+getting iSCSI TLV data.
+
+Signed-off-by: Manish Rangankar <manish.rangankar@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_main.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 5308e6b3a574..713db9cfae7f 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -952,6 +952,9 @@ static int qedi_find_boot_info(struct qedi_ctx *qedi,
+ cls_sess = iscsi_conn_to_session(cls_conn);
+ sess = cls_sess->dd_data;
+
++ if (!iscsi_is_session_online(cls_sess))
++ continue;
++
+ if (pri_ctrl_flags) {
+ if (!strcmp(pri_tgt->iscsi_name, sess->targetname) &&
+ !strcmp(pri_tgt->ip_addr, ep_ip_addr)) {
+
diff --git a/patches.drivers/scsi-qedi-cleanup-redundant-qedi_page_size-macro-definition b/patches.drivers/scsi-qedi-cleanup-redundant-qedi_page_size-macro-definition
new file mode 100644
index 0000000000..0d94f1f712
--- /dev/null
+++ b/patches.drivers/scsi-qedi-cleanup-redundant-qedi_page_size-macro-definition
@@ -0,0 +1,34 @@
+From: Nilesh Javali <nilesh.javali@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:15 -0800
+Subject: scsi: qedi: Cleanup redundant QEDI_PAGE_SIZE macro definition
+Git-commit: 3fb5a21fd008a9f4e7f172f062fa04b35e16b9d4
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Remove redundant macro definition.
+
+Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h
+index a6f96b35e971..e966855b96e7 100644
+--- a/drivers/scsi/qedi/qedi.h
++++ b/drivers/scsi/qedi/qedi.h
+@@ -64,11 +64,9 @@ struct qedi_endpoint;
+ #define TX_RX_RING 16
+ #define RX_RING (TX_RX_RING - 1)
+ #define LL2_SINGLE_BUF_SIZE 0x400
+-#define QEDI_PAGE_SIZE 4096
+ #define QEDI_PAGE_ALIGN(addr) ALIGN(addr, QEDI_PAGE_SIZE)
+ #define QEDI_PAGE_MASK (~((QEDI_PAGE_SIZE) - 1))
+
+-#define QEDI_PAGE_SIZE 4096
+ #define QEDI_HW_DMA_BOUNDARY 0xfff
+ #define QEDI_PATH_HANDLE 0xFE0000000UL
+
+
diff --git a/patches.drivers/scsi-qedi-fix-spelling-mistake-oustanding-outstanding b/patches.drivers/scsi-qedi-fix-spelling-mistake-oustanding-outstanding
new file mode 100644
index 0000000000..7fed5f4024
--- /dev/null
+++ b/patches.drivers/scsi-qedi-fix-spelling-mistake-oustanding-outstanding
@@ -0,0 +1,54 @@
+From: Nilesh Javali <nilesh.javali@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:16 -0800
+Subject: scsi: qedi: Fix spelling mistake "OUSTANDING" -> "OUTSTANDING"
+Git-commit: f853053da9754d488c43ede24485881ac929c8d9
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Fix trivial spelling mistake within macro definition.
+
+Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi.h | 4 ++--
+ drivers/scsi/qedi/qedi_main.c | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h
+index e966855b96e7..6fa02c553fd3 100644
+--- a/drivers/scsi/qedi/qedi.h
++++ b/drivers/scsi/qedi/qedi.h
+@@ -45,7 +45,7 @@ struct qedi_endpoint;
+ #define QEDI_MAX_TASK_NUM 0x0FFF
+ #define QEDI_MAX_ISCSI_CONNS_PER_HBA 1024
+ #define QEDI_ISCSI_MAX_BDS_PER_CMD 255 /* Firmware max BDs is 255 */
+-#define MAX_OUSTANDING_TASKS_PER_CON 1024
++#define MAX_OUTSTANDING_TASKS_PER_CON 1024
+
+ #define QEDI_MAX_BD_LEN 0xffff
+ #define QEDI_BD_SPLIT_SZ 0x1000
+@@ -144,7 +144,7 @@ struct skb_work_list {
+ };
+
+ /* Queue sizes in number of elements */
+-#define QEDI_SQ_SIZE MAX_OUSTANDING_TASKS_PER_CON
++#define QEDI_SQ_SIZE MAX_OUTSTANDING_TASKS_PER_CON
+ #define QEDI_CQ_SIZE 2048
+ #define QEDI_CMDQ_SIZE QEDI_MAX_ISCSI_TASK
+ #define QEDI_PROTO_CQ_PROD_IDX 0
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 105b0e4d7818..0f8eb5f63716 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -796,7 +796,7 @@ static int qedi_set_iscsi_pf_param(struct qedi_ctx *qedi)
+ int rval = 0;
+
+
+- num_sq_pages = (MAX_OUSTANDING_TASKS_PER_CON * 8) / PAGE_SIZE;
++ num_sq_pages = (MAX_OUTSTANDING_TASKS_PER_CON * 8) / PAGE_SIZE;
+
+ qedi->num_queues = MIN_NUM_CPUS_MSIX(qedi);
+
+
diff --git a/patches.drivers/scsi-qedi-move-ll2-producer-index-processing-in-bh b/patches.drivers/scsi-qedi-move-ll2-producer-index-processing-in-bh
new file mode 100644
index 0000000000..c04aadefc6
--- /dev/null
+++ b/patches.drivers/scsi-qedi-move-ll2-producer-index-processing-in-bh
@@ -0,0 +1,96 @@
+From: Manish Rangankar <manish.rangankar@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:22 -0800
+Subject: scsi: qedi: Move LL2 producer index processing in BH.
+Git-commit: 9632a6b4b747ae6550f0877bfc7db7fec45bbee4
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+1. Removed logic to update HW producer index in interrupt context.
+
+2. Update HW producer index after UIO ring and buffer gets initialized.
+
+Signed-off-by: Manish Rangankar <manish.rangankar@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_main.c | 31 +++++++++++++++++++------------
+ 1 file changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 8942f62d66d7..053a94771a91 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -665,7 +665,6 @@ static int qedi_ll2_rx(void *cookie, struct sk_buff *skb, u32 arg1, u32 arg2)
+ struct qedi_uio_ctrl *uctrl;
+ struct skb_work_list *work;
+ struct ethhdr *eh;
+- u32 prod;
+
+ if (!qedi) {
+ QEDI_ERR(NULL, "qedi is NULL\n");
+@@ -724,17 +723,10 @@ static int qedi_ll2_rx(void *cookie, struct sk_buff *skb, u32 arg1, u32 arg2)
+
+ spin_lock_bh(&qedi->ll2_lock);
+ list_add_tail(&work->list, &qedi->ll2_skb_list);
++ spin_unlock_bh(&qedi->ll2_lock);
+
+- ++uctrl->hw_rx_prod_cnt;
+- prod = (uctrl->hw_rx_prod + 1) % RX_RING;
+- if (prod != uctrl->host_rx_cons) {
+- uctrl->hw_rx_prod = prod;
+- spin_unlock_bh(&qedi->ll2_lock);
+- wake_up_process(qedi->ll2_recv_thread);
+- return 0;
+- }
++ wake_up_process(qedi->ll2_recv_thread);
+
+- spin_unlock_bh(&qedi->ll2_lock);
+ return 0;
+ }
+
+@@ -749,6 +741,7 @@ static int qedi_ll2_process_skb(struct qedi_ctx *qedi, struct sk_buff *skb,
+ u32 rx_bd_prod;
+ void *pkt;
+ int len = 0;
++ u32 prod;
+
+ if (!qedi) {
+ QEDI_ERR(NULL, "qedi is NULL\n");
+@@ -757,12 +750,16 @@ static int qedi_ll2_process_skb(struct qedi_ctx *qedi, struct sk_buff *skb,
+
+ udev = qedi->udev;
+ uctrl = udev->uctrl;
+- pkt = udev->rx_pkt + (uctrl->hw_rx_prod * qedi_ll2_buf_size);
++
++ ++uctrl->hw_rx_prod_cnt;
++ prod = (uctrl->hw_rx_prod + 1) % RX_RING;
++
++ pkt = udev->rx_pkt + (prod * qedi_ll2_buf_size);
+ len = min_t(u32, skb->len, (u32)qedi_ll2_buf_size);
+ memcpy(pkt, skb->data, len);
+
+ memset(&rxbd, 0, sizeof(rxbd));
+- rxbd.rx_pkt_index = uctrl->hw_rx_prod;
++ rxbd.rx_pkt_index = prod;
+ rxbd.rx_pkt_len = len;
+ rxbd.vlan_id = vlan_id;
+
+@@ -773,6 +770,16 @@ static int qedi_ll2_process_skb(struct qedi_ctx *qedi, struct sk_buff *skb,
+
+ memcpy(p_rxbd, &rxbd, sizeof(rxbd));
+
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_LL2,
++ "hw_rx_prod [%d] prod [%d] hw_rx_bd_prod [%d] rx_pkt_idx [%d] rx_len [%d].\n",
++ uctrl->hw_rx_prod, prod, uctrl->hw_rx_bd_prod,
++ rxbd.rx_pkt_index, rxbd.rx_pkt_len);
++ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_LL2,
++ "host_rx_cons [%d] hw_rx_bd_cons [%d].\n",
++ uctrl->host_rx_cons, uctrl->host_rx_bd_cons);
++
++ uctrl->hw_rx_prod = prod;
++
+ /* notify the iscsiuio about new packet */
+ uio_event_notify(&udev->qedi_uinfo);
+
+
diff --git a/patches.drivers/scsi-qedi-remove-set-but-not-used-variables-cdev-and-udev b/patches.drivers/scsi-qedi-remove-set-but-not-used-variables-cdev-and-udev
new file mode 100644
index 0000000000..0fe2080ed0
--- /dev/null
+++ b/patches.drivers/scsi-qedi-remove-set-but-not-used-variables-cdev-and-udev
@@ -0,0 +1,46 @@
+From: YueHaibing <yuehaibing@huawei.com>
+Date: Wed, 24 Apr 2019 16:02:56 +0800
+Subject: scsi: qedi: remove set but not used variables 'cdev' and 'udev'
+Git-commit: d0adee5d12752256ff0c87ad7f002f21fe49d618
+Patch-mainline: v5.2-rc2
+References: jsc#SLE-4693 bsc#1136462
+
+Fixes gcc '-Wunused-but-set-variable' warning:
+
+drivers/scsi/qedi/qedi_iscsi.c: In function 'qedi_ep_connect':
+drivers/scsi/qedi/qedi_iscsi.c:813:23: warning: variable 'udev' set but not used [-Wunused-but-set-variable]
+drivers/scsi/qedi/qedi_iscsi.c:812:18: warning: variable 'cdev' set but not used [-Wunused-but-set-variable]
+
+These have never been used since introduction.
+
+Signed-off-by: YueHaibing <yuehaibing@huawei.com>
+Acked-by: Manish Rangankar <mrangankar@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_iscsi.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c
+index 615cea4fad56..82153c808b40 100644
+--- a/drivers/scsi/qedi/qedi_iscsi.c
++++ b/drivers/scsi/qedi/qedi_iscsi.c
+@@ -809,8 +809,6 @@ qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
+ struct qedi_endpoint *qedi_ep;
+ struct sockaddr_in *addr;
+ struct sockaddr_in6 *addr6;
+- struct qed_dev *cdev = NULL;
+- struct qedi_uio_dev *udev = NULL;
+ struct iscsi_path path_req;
+ u32 msg_type = ISCSI_KEVENT_IF_DOWN;
+ u32 iscsi_cid = QEDI_CID_RESERVED;
+@@ -830,8 +828,6 @@ qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
+ }
+
+ qedi = iscsi_host_priv(shost);
+- cdev = qedi->cdev;
+- udev = qedi->udev;
+
+ if (test_bit(QEDI_IN_OFFLINE, &qedi->flags) ||
+ test_bit(QEDI_IN_RECOVERY, &qedi->flags)) {
+
diff --git a/patches.drivers/scsi-qedi-replace-page_size-with-qedi_page_size b/patches.drivers/scsi-qedi-replace-page_size-with-qedi_page_size
new file mode 100644
index 0000000000..915668b592
--- /dev/null
+++ b/patches.drivers/scsi-qedi-replace-page_size-with-qedi_page_size
@@ -0,0 +1,85 @@
+From: Nilesh Javali <nilesh.javali@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:17 -0800
+Subject: scsi: qedi: Replace PAGE_SIZE with QEDI_PAGE_SIZE
+Git-commit: fa97c51109867c17b91ff01bc21f99d20e446968
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Use QEDI_PAGE_SIZE for enablement of module on systems with 64K page size.
+
+Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
+Reviewed-by: Lee Duncan <lduncan@suse.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_main.c | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
+index 0f8eb5f63716..a1225aeac6fa 100644
+--- a/drivers/scsi/qedi/qedi_main.c
++++ b/drivers/scsi/qedi/qedi_main.c
+@@ -796,7 +796,7 @@ static int qedi_set_iscsi_pf_param(struct qedi_ctx *qedi)
+ int rval = 0;
+
+
+- num_sq_pages = (MAX_OUTSTANDING_TASKS_PER_CON * 8) / PAGE_SIZE;
++ num_sq_pages = (MAX_OUTSTANDING_TASKS_PER_CON * 8) / QEDI_PAGE_SIZE;
+
+ qedi->num_queues = MIN_NUM_CPUS_MSIX(qedi);
+
+@@ -834,7 +834,7 @@ static int qedi_set_iscsi_pf_param(struct qedi_ctx *qedi)
+ qedi->pf_params.iscsi_pf_params.max_fin_rt = 2;
+
+ for (log_page_size = 0 ; log_page_size < 32 ; log_page_size++) {
+- if ((1 << log_page_size) == PAGE_SIZE)
++ if ((1 << log_page_size) == QEDI_PAGE_SIZE)
+ break;
+ }
+ qedi->pf_params.iscsi_pf_params.log_page_size = log_page_size;
+@@ -1376,7 +1376,7 @@ static void qedi_free_bdq(struct qedi_ctx *qedi)
+ int i;
+
+ if (qedi->bdq_pbl_list)
+- dma_free_coherent(&qedi->pdev->dev, PAGE_SIZE,
++ dma_free_coherent(&qedi->pdev->dev, QEDI_PAGE_SIZE,
+ qedi->bdq_pbl_list, qedi->bdq_pbl_list_dma);
+
+ if (qedi->bdq_pbl)
+@@ -1437,7 +1437,7 @@ static int qedi_alloc_bdq(struct qedi_ctx *qedi)
+
+ /* Alloc dma memory for BDQ page buffer list */
+ qedi->bdq_pbl_mem_size = QEDI_BDQ_NUM * sizeof(struct scsi_bd);
+- qedi->bdq_pbl_mem_size = ALIGN(qedi->bdq_pbl_mem_size, PAGE_SIZE);
++ qedi->bdq_pbl_mem_size = ALIGN(qedi->bdq_pbl_mem_size, QEDI_PAGE_SIZE);
+ qedi->rq_num_entries = qedi->bdq_pbl_mem_size / sizeof(struct scsi_bd);
+
+ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN, "rq_num_entries = %d.\n",
+@@ -1472,7 +1472,8 @@ static int qedi_alloc_bdq(struct qedi_ctx *qedi)
+ }
+
+ /* Allocate list of PBL pages */
+- qedi->bdq_pbl_list = dma_zalloc_coherent(&qedi->pdev->dev, PAGE_SIZE,
++ qedi->bdq_pbl_list = dma_zalloc_coherent(&qedi->pdev->dev,
++ QEDI_PAGE_SIZE,
+ &qedi->bdq_pbl_list_dma,
+ GFP_KERNEL);
+ if (!qedi->bdq_pbl_list) {
+@@ -1485,13 +1486,14 @@ static int qedi_alloc_bdq(struct qedi_ctx *qedi)
+ * Now populate PBL list with pages that contain pointers to the
+ * individual buffers.
+ */
+- qedi->bdq_pbl_list_num_entries = qedi->bdq_pbl_mem_size / PAGE_SIZE;
++ qedi->bdq_pbl_list_num_entries = qedi->bdq_pbl_mem_size /
++ QEDI_PAGE_SIZE;
+ list = (u64 *)qedi->bdq_pbl_list;
+ page = qedi->bdq_pbl_list_dma;
+ for (i = 0; i < qedi->bdq_pbl_list_num_entries; i++) {
+ *list = qedi->bdq_pbl_dma;
+ list++;
+- page += PAGE_SIZE;
++ page += QEDI_PAGE_SIZE;
+ }
+
+ return 0;
+
diff --git a/patches.drivers/scsi-qedi-update-driver-version-to-8-33-0-21 b/patches.drivers/scsi-qedi-update-driver-version-to-8-33-0-21
new file mode 100644
index 0000000000..f29dcf569a
--- /dev/null
+++ b/patches.drivers/scsi-qedi-update-driver-version-to-8-33-0-21
@@ -0,0 +1,30 @@
+From: Nilesh Javali <nilesh.javali@cavium.com>
+Date: Wed, 21 Nov 2018 01:25:23 -0800
+Subject: scsi: qedi: Update driver version to 8.33.0.21
+Git-commit: 037bc0d43447336cc6e4a531f8a6519d2b206f80
+Patch-mainline: v5.0-rc1
+References: jsc#SLE-4693 bsc#1136462
+
+Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Lee Duncan <lduncan@suse.com>
+---
+ drivers/scsi/qedi/qedi_version.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/qedi/qedi_version.h b/drivers/scsi/qedi/qedi_version.h
+index 8a0e523fc089..41bcbbafebd4 100644
+--- a/drivers/scsi/qedi/qedi_version.h
++++ b/drivers/scsi/qedi/qedi_version.h
+@@ -7,8 +7,8 @@
+ * this source tree.
+ */
+
+-#define QEDI_MODULE_VERSION "8.33.0.20"
++#define QEDI_MODULE_VERSION "8.33.0.21"
+ #define QEDI_DRIVER_MAJOR_VER 8
+ #define QEDI_DRIVER_MINOR_VER 33
+ #define QEDI_DRIVER_REV_VER 0
+-#define QEDI_DRIVER_ENG_VER 20
++#define QEDI_DRIVER_ENG_VER 21
+
diff --git a/series.conf b/series.conf
index 72d6715cd1..ce84402787 100644
--- a/series.conf
+++ b/series.conf
@@ -44115,6 +44115,14 @@
patches.drivers/scsi-mpt3sas-Display-message-on-Configurable-secure-.patch
patches.drivers/scsi-megaraid_sas-Add-support-for-MegaRAID-Aero-cont.patch
patches.fixes/scsi-target-drop-unused-pi_prot_format-attribute-sto.patch
+ patches.drivers/scsi-qedi-cleanup-redundant-qedi_page_size-macro-definition
+ patches.drivers/scsi-qedi-fix-spelling-mistake-oustanding-outstanding
+ patches.drivers/scsi-qedi-replace-page_size-with-qedi_page_size
+ patches.drivers/scsi-qedi-check-for-session-online-before-getting-iscsi-tlv-data
+ patches.drivers/scsi-qedi-add-packet-filter-in-light-l2-rx-path
+ patches.drivers/scsi-qedi-add-module-param-to-set-ping-packet-size
+ patches.drivers/scsi-qedi-move-ll2-producer-index-processing-in-bh
+ patches.drivers/scsi-qedi-update-driver-version-to-8-33-0-21
patches.drivers/scsi-mpt3sas-fix-spelling-mistake-manufaucturing-man.patch
patches.drivers/scsi-qla2xxx-Introduce-a-switch-case-statement-in-ql.patch
patches.drivers/scsi-aacraid-mark-expected-switch-fall-throughs
@@ -47307,6 +47315,7 @@
patches.fixes/sbitmap-fix-improper-use-of-smp_mb__before_atomic.patch
patches.fixes/blk-mq-fix-hang-caused-by-freeze-unfreeze-sequence.patch
patches.fixes/nvme-copy-mtfa-field-from-identify-controller.patch
+ patches.drivers/scsi-qedi-remove-set-but-not-used-variables-cdev-and-udev
patches.fixes/ext4-wait-for-outstanding-dio-during-truncate-in-noj.patch
patches.fixes/ext4-do-not-delete-unlinked-inode-from-orphan-list-o.patch
patches.arch/kvm-x86-include-multiple-indices-with-cpuid-leaf-0x8000001d.patch
@@ -47547,6 +47556,7 @@
patches.fixes/PM-ACPI-PCI-Resume-all-devices-during-hibernation.patch
patches.drivers/ACPICA-Clear-status-of-GPEs-on-first-direct-enable.patch
patches.drivers/documentation-dma-api-fix-a-function-name-of-max_mapping_size
+ patches.drivers/qedi-use-hwfns-and-affin_hwfn_idx-to-get-msi-x-vector-index
# davem/net-next
patches.drivers/cxgb4-Enable-hash-filter-with-offload.patch