[dpdk-dev,2/3] kni: minor opto

Message ID 1433358478-12668-2-git-send-email-rolette@infiniteio.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Jay Rolette June 3, 2015, 7:07 p.m. UTC
  No reason to check out many entries are in kni->rx_q prior to
actually pulling them from the fifo. You can't dequeue more than
are there anyway. Max entries to dequeue is either the max batch
size or however much space is available on kni->free_q (lesser of the two)

Signed-off-by: Jay Rolette <rolette@infiniteio.com>
---
 lib/librte_eal/linuxapp/kni/kni_net.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)
  

Comments

Jay Rolette June 3, 2015, 7:18 p.m. UTC | #1
Some sort of hiccup sending. Not sure why 2/3 didn't come out as expected.
I'll try sending again.

Jay

On Wed, Jun 3, 2015 at 2:07 PM, Jay Rolette <rolette@infiniteio.com> wrote:

> No reason to check out many entries are in kni->rx_q prior to
> actually pulling them from the fifo. You can't dequeue more than
> are there anyway. Max entries to dequeue is either the max batch
> size or however much space is available on kni->free_q (lesser of the two)
>
> Signed-off-by: Jay Rolette <rolette@infiniteio.com>
> ---
>  lib/librte_eal/linuxapp/kni/kni_net.c | 21 ++++++++-------------
>  1 file changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c
> b/lib/librte_eal/linuxapp/kni/kni_net.c
> index dd95db5..13ccbb8 100644
> --- a/lib/librte_eal/linuxapp/kni/kni_net.c
> +++ b/lib/librte_eal/linuxapp/kni/kni_net.c
> @@ -131,7 +131,7 @@ kni_net_rx_normal(struct kni_dev *kni)
>  {
>         unsigned ret;
>         uint32_t len;
> -       unsigned i, num, num_rq, num_fq;
> +       unsigned i, num, num_fq;
>         struct rte_kni_mbuf *kva;
>         struct rte_kni_mbuf *va[MBUF_BURST_SZ];
>         void * data_kva;
> @@ -139,24 +139,19 @@ kni_net_rx_normal(struct kni_dev *kni)
>         struct sk_buff *skb;
>         struct net_device *dev = kni->net_dev;
>
> -       /* Get the number of entries in rx_q */
> -       num_rq = kni_fifo_count(kni->rx_q);
> -
>         /* Get the number of free entries in free_q */
> -       num_fq = kni_fifo_free_count(kni->free_q);
> -
> -       /* Calculate the number of entries to dequeue in rx_q */
> -       num = min(num_rq, num_fq);
> -       num = min(num, (unsigned)MBUF_BURST_SZ);
> -
> -       /* Return if no entry in rx_q and no free entry in free_q */
> -       if (num == 0)
> +       if ((num_fq = kni_fifo_free_count(kni->free_q)) == 0) {
> +               /* No room on the free_q, bail out */
>                 return;
> +       }
> +
> +       /* Calculate the number of entries to dequeue from rx_q */
> +       num = min(num_fq, (unsigned)MBUF_BURST_SZ);
>
>         /* Burst dequeue from rx_q */
>         ret = kni_fifo_get(kni->rx_q, (void **)va, num);
>         if (ret == 0)
> -               return; /* Failing should not happen */
> +               return;
>
>         /* Transfer received packets to netif */
>         for (i = 0; i < num; i++) {
> --
> 2.3.2 (Apple Git-55)
>
>
  
Zhang, Helin June 16, 2015, 1:13 a.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jay Rolette
> Sent: Thursday, June 4, 2015 3:08 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH 2/3] kni: minor opto
> 
> No reason to check out many entries are in kni->rx_q prior to actually pulling
> them from the fifo. You can't dequeue more than are there anyway. Max entries
> to dequeue is either the max batch size or however much space is available on
> kni->free_q (lesser of the two)
> 
> Signed-off-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>

> ---
>  lib/librte_eal/linuxapp/kni/kni_net.c | 21 ++++++++-------------
>  1 file changed, 8 insertions(+), 13 deletions(-)
> 
> diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c
> b/lib/librte_eal/linuxapp/kni/kni_net.c
> index dd95db5..13ccbb8 100644
> --- a/lib/librte_eal/linuxapp/kni/kni_net.c
> +++ b/lib/librte_eal/linuxapp/kni/kni_net.c
> @@ -131,7 +131,7 @@ kni_net_rx_normal(struct kni_dev *kni)  {
>  	unsigned ret;
>  	uint32_t len;
> -	unsigned i, num, num_rq, num_fq;
> +	unsigned i, num, num_fq;
>  	struct rte_kni_mbuf *kva;
>  	struct rte_kni_mbuf *va[MBUF_BURST_SZ];
>  	void * data_kva;
> @@ -139,24 +139,19 @@ kni_net_rx_normal(struct kni_dev *kni)
>  	struct sk_buff *skb;
>  	struct net_device *dev = kni->net_dev;
> 
> -	/* Get the number of entries in rx_q */
> -	num_rq = kni_fifo_count(kni->rx_q);
> -
>  	/* Get the number of free entries in free_q */
> -	num_fq = kni_fifo_free_count(kni->free_q);
> -
> -	/* Calculate the number of entries to dequeue in rx_q */
> -	num = min(num_rq, num_fq);
> -	num = min(num, (unsigned)MBUF_BURST_SZ);
> -
> -	/* Return if no entry in rx_q and no free entry in free_q */
> -	if (num == 0)
> +	if ((num_fq = kni_fifo_free_count(kni->free_q)) == 0) {
> +		/* No room on the free_q, bail out */
>  		return;
> +	}
> +
> +	/* Calculate the number of entries to dequeue from rx_q */
> +	num = min(num_fq, (unsigned)MBUF_BURST_SZ);
> 
>  	/* Burst dequeue from rx_q */
>  	ret = kni_fifo_get(kni->rx_q, (void **)va, num);
>  	if (ret == 0)
> -		return; /* Failing should not happen */
> +		return;
> 
>  	/* Transfer received packets to netif */
>  	for (i = 0; i < num; i++) {
> --
> 2.3.2 (Apple Git-55)
  

Patch

diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c b/lib/librte_eal/linuxapp/kni/kni_net.c
index dd95db5..13ccbb8 100644
--- a/lib/librte_eal/linuxapp/kni/kni_net.c
+++ b/lib/librte_eal/linuxapp/kni/kni_net.c
@@ -131,7 +131,7 @@  kni_net_rx_normal(struct kni_dev *kni)
 {
 	unsigned ret;
 	uint32_t len;
-	unsigned i, num, num_rq, num_fq;
+	unsigned i, num, num_fq;
 	struct rte_kni_mbuf *kva;
 	struct rte_kni_mbuf *va[MBUF_BURST_SZ];
 	void * data_kva;
@@ -139,24 +139,19 @@  kni_net_rx_normal(struct kni_dev *kni)
 	struct sk_buff *skb;
 	struct net_device *dev = kni->net_dev;
 
-	/* Get the number of entries in rx_q */
-	num_rq = kni_fifo_count(kni->rx_q);
-
 	/* Get the number of free entries in free_q */
-	num_fq = kni_fifo_free_count(kni->free_q);
-
-	/* Calculate the number of entries to dequeue in rx_q */
-	num = min(num_rq, num_fq);
-	num = min(num, (unsigned)MBUF_BURST_SZ);
-
-	/* Return if no entry in rx_q and no free entry in free_q */
-	if (num == 0)
+	if ((num_fq = kni_fifo_free_count(kni->free_q)) == 0) {
+		/* No room on the free_q, bail out */
 		return;
+	}
+
+	/* Calculate the number of entries to dequeue from rx_q */
+	num = min(num_fq, (unsigned)MBUF_BURST_SZ);
 
 	/* Burst dequeue from rx_q */
 	ret = kni_fifo_get(kni->rx_q, (void **)va, num);
 	if (ret == 0)
-		return; /* Failing should not happen */
+		return;
 
 	/* Transfer received packets to netif */
 	for (i = 0; i < num; i++) {