diff options
author | Lee Duncan <leeman.duncan@gmail.com> | 2018-11-26 16:41:51 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-26 16:41:51 -0800 |
commit | 7365218437ecf8c03860e34c002c76871abf9943 (patch) | |
tree | 2da28d4f4cc6f01324d174391d0dfb86ea025907 /iscsiuio | |
parent | 0ec3a81158ef32da0a2866f8e2cc2ab02f2e3662 (diff) | |
parent | de6e8918c6c195360d87a96c196cccef2c082527 (diff) | |
download | open-iscsi-7365218437ecf8c03860e34c002c76871abf9943.tar.gz |
Merge pull request #148 from njavali/iscsiuio-bug-fixes
iscsiuio bug fixes
Diffstat (limited to 'iscsiuio')
-rw-r--r-- | iscsiuio/README | 4 | ||||
-rw-r--r-- | iscsiuio/RELEASE.TXT | 26 | ||||
-rw-r--r-- | iscsiuio/configure.ac | 4 | ||||
-rw-r--r-- | iscsiuio/src/unix/libs/qedi.c | 12 | ||||
-rw-r--r-- | iscsiuio/src/unix/nic.c | 2 |
5 files changed, 39 insertions, 9 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) 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; 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); |