From 243332dfaa6ba856f81c8264a3d861fe7a05eb66 Mon Sep 17 00:00:00 2001 From: Manish Rangankar Date: Tue, 20 Nov 2018 00:11:16 -0500 Subject: qedi: Set buf_size in case of ICMP and ARP packet. Invalid ether len was resulting into showing CRC error on wire. Signed-off-by: Manish Rangankar --- iscsiuio/src/unix/nic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iscsiuio/src/unix/nic.c b/iscsiuio/src/unix/nic.c index 29c4332..bd415c2 100644 --- a/iscsiuio/src/unix/nic.c +++ b/iscsiuio/src/unix/nic.c @@ -1122,6 +1122,7 @@ nic_iface_present: * network, the global variable uip_len is * set to a value > 0. */ if (ustack->uip_len > 0) { + pkt->buf_size = ustack->uip_len; prepare_ipv4_packet(nic, nic_iface, ustack, pkt); @@ -1139,6 +1140,7 @@ nic_iface_present: * network, the global variable uip_len * is set to a value > 0. */ if (pkt->buf_size > 0) { + pkt->buf_size = ustack->uip_len; LOG_DEBUG(PFX "%s: write called after arp_arpin, bufsize=%d", nic->log_name, pkt->buf_size); (*nic->ops->write) (nic, nic_iface, pkt); -- cgit v1.2.1 From e34658ca383a0d1d2e455a4c5bb55ce06790ba97 Mon Sep 17 00:00:00 2001 From: Manish Rangankar Date: Tue, 20 Nov 2018 00:15:01 -0500 Subject: qedi: Use uio BD index instead on buffer index. 1. Use HW BD prod index to read packet buffer descriptor. 2. Use BD producer and consumer index to check for new data instead of UIO ring buffer index. NOTE - This patch has dependency on upstream qedi driver v8.33.0.21, commit "qedi: Move LL2 producer index processing in BH.", (https://marc.info/?l=linux-scsi&m=154271028608808) Signed-off-by: Manish Rangankar --- iscsiuio/src/unix/libs/qedi.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c index 3aa2de7..b7595d5 100644 --- a/iscsiuio/src/unix/libs/qedi.c +++ b/iscsiuio/src/unix/libs/qedi.c @@ -994,7 +994,7 @@ static int qedi_read(nic_t *nic, packet_t *pkt) void *rx_pkt; int rc = 0; uint32_t sw_cons, bd_cons; - uint32_t hw_prod; + uint32_t hw_prod, bd_prod; uint32_t rx_pkt_idx; int len; struct qedi_rx_bd *rx_bd; @@ -1013,14 +1013,20 @@ static int qedi_read(nic_t *nic, packet_t *pkt) msync(bp->rx_comp_ring, nic->page_size, MS_SYNC); uctrl = (struct qedi_uio_ctrl *)bp->uctrl_map; hw_prod = uctrl->hw_rx_prod; + bd_prod = uctrl->hw_rx_bd_prod; sw_cons = uctrl->host_rx_cons; bd_cons = uctrl->host_rx_bd_cons; - rx_bd = bp->rx_comp_ring + (bd_cons * sizeof(*rx_bd)); + rx_bd = bp->rx_comp_ring + (bd_prod * sizeof(*rx_bd)); len = rx_bd->rx_pkt_len; rx_pkt_idx = rx_bd->rx_pkt_index; vlan_id = rx_bd->vlan_id; - if (sw_cons != hw_prod) { + LOG_DEBUG(PFX "%s:hw_prod %d bd_prod %d, rx_pkt_idx %d, rxlen %d", + nic->log_name, hw_prod, bd_prod, rx_bd->rx_pkt_index, len); + LOG_DEBUG(PFX "%s: sw_con %d bd_cons %d num BD %d", + nic->log_name, sw_cons, bd_cons, QEDI_NUM_RX_BD); + + if (bd_cons != bd_prod) { LOG_DEBUG(PFX "%s: clearing rx interrupt: %d %d", nic->log_name, sw_cons, hw_prod); rc = 1; -- cgit v1.2.1 From de6e8918c6c195360d87a96c196cccef2c082527 Mon Sep 17 00:00:00 2001 From: Nilesh Javali Date: Tue, 20 Nov 2018 01:10:57 -0500 Subject: iscsiuio: v0.7.8.5 Signed-off-by: Nilesh Javali --- iscsiuio/README | 4 ++-- iscsiuio/RELEASE.TXT | 26 ++++++++++++++++++++++++-- iscsiuio/configure.ac | 4 ++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/iscsiuio/README b/iscsiuio/README index 9cbf7ce..1915005 100644 --- a/iscsiuio/README +++ b/iscsiuio/README @@ -1,6 +1,6 @@ Iscsiuio Userspace Tool -Version 0.7.8.4 -Feb 22, 2018 +Version 0.7.8.5 +Nov 20, 2018 ------------------------------------------------------ This tool is to be used in conjunction with the QLogic NetXtreme II Linux diff --git a/iscsiuio/RELEASE.TXT b/iscsiuio/RELEASE.TXT index ca51b26..0ebf27f 100644 --- a/iscsiuio/RELEASE.TXT +++ b/iscsiuio/RELEASE.TXT @@ -1,7 +1,7 @@ Release Notes QLogic uIP Linux Driver - Version 0.7.8.4 - 2/22/2018 + Version 0.7.8.5 + 11/20/2018 QLogic Corporation 26650 Aliso Viejo Pkwy, @@ -11,7 +11,29 @@ Copyright (c) 2014, QLogic Corporation All rights reserved +uIP v0.7.8.5 (Nov 20, 2018) +======================================================= + Fixes: + ------- + 1. Problem: CQ102578: observing ISCSI initiator IP ping drop + Change: 1. Do not flush tx queue on each uio interrupt + 2. Use UIO BD index instead on buffer index. + 3. Set buf_size in case of ICMP and ARP packet + Impact: QL41xxx adapters + + 2. Problem: CQ103034 - Unable to boot iSCSI BFS in IPv6 DHCP config + Change: Limit retries of performing dhcpv6 before declaring dhcp failure + Impact: All + + 3. Problem: CQ102438: I/O fails to resume on multipath LUN during port toggle. + Change: lib/cnic, lib/qedi, Release xmit_mutex in error code path and + during clear tx queue. + Impact: QL84xx adapters + 4. Problem: Netlink buffer corruption when more than one host + try to xmit packet at the same time + Change: Add inter-host mutex while doing xmit + Impact: All uIP v0.7.8.4 (Feb 22, 2018) ======================================================= diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac index fa67ea7..ae23078 100644 --- a/iscsiuio/configure.ac +++ b/iscsiuio/configure.ac @@ -12,9 +12,9 @@ dnl Benjamin Li (benli@broadcom.com) dnl PACKAGE=iscsiuio -VERSION=0.7.8.4 +VERSION=0.7.8.5 -AC_INIT([iscsiuio], [0.7.8.4], [QLogic-Storage-Upstream@cavium.com]) +AC_INIT([iscsiuio], [0.7.8.5], [QLogic-Storage-Upstream@cavium.com]) AM_INIT_AUTOMAKE AC_CONFIG_HEADER(config.h) -- cgit v1.2.1