summaryrefslogtreecommitdiff
path: root/iscsiuio/src
diff options
context:
space:
mode:
authorLee Duncan <leeman.duncan@gmail.com>2018-11-26 16:41:51 -0800
committerGitHub <noreply@github.com>2018-11-26 16:41:51 -0800
commit7365218437ecf8c03860e34c002c76871abf9943 (patch)
tree2da28d4f4cc6f01324d174391d0dfb86ea025907 /iscsiuio/src
parent0ec3a81158ef32da0a2866f8e2cc2ab02f2e3662 (diff)
parentde6e8918c6c195360d87a96c196cccef2c082527 (diff)
downloadopen-iscsi-7365218437ecf8c03860e34c002c76871abf9943.tar.gz
Merge pull request #148 from njavali/iscsiuio-bug-fixes
iscsiuio bug fixes
Diffstat (limited to 'iscsiuio/src')
-rw-r--r--iscsiuio/src/unix/libs/qedi.c12
-rw-r--r--iscsiuio/src/unix/nic.c2
2 files changed, 11 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;
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);