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/src | |
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/src')
-rw-r--r-- | iscsiuio/src/unix/libs/qedi.c | 12 | ||||
-rw-r--r-- | iscsiuio/src/unix/nic.c | 2 |
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); |