X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fkni%2Frte_kni.c;h=d3e236005ed59b6234bd723143dab37e2ab440d6;hb=28dde5da503ed09f10cdfb295e390b114df7330a;hp=9dae6a8d7c0ce372b17970c1122eb5dbffebda69;hpb=99a2dd955fba6e4cc23b77d590a033650ced9c45;p=dpdk.git diff --git a/lib/kni/rte_kni.c b/lib/kni/rte_kni.c index 9dae6a8d7c..d3e236005e 100644 --- a/lib/kni/rte_kni.c +++ b/lib/kni/rte_kni.c @@ -677,8 +677,9 @@ kni_allocate_mbufs(struct rte_kni *kni) return; } - allocq_free = (kni->alloc_q->read - kni->alloc_q->write - 1) - & (MAX_MBUF_BURST_NUM - 1); + allocq_free = kni_fifo_free_count(kni->alloc_q); + allocq_free = (allocq_free > MAX_MBUF_BURST_NUM) ? + MAX_MBUF_BURST_NUM : allocq_free; for (i = 0; i < allocq_free; i++) { pkts[i] = rte_pktmbuf_alloc(kni->pktmbuf_pool); if (unlikely(pkts[i] == NULL)) { @@ -810,6 +811,9 @@ rte_kni_update_link(struct rte_kni *kni, unsigned int linkup) } old_linkup = (old_carrier[0] == '1'); + if (old_linkup == (int)linkup) + goto out; + new_carrier = linkup ? "1" : "0"; ret = write(fd, new_carrier, 1); if (ret < 1) { @@ -817,7 +821,7 @@ rte_kni_update_link(struct rte_kni *kni, unsigned int linkup) close(fd); return -1; } - +out: close(fd); return old_linkup; }