Re: [dpdk-dev] [PATCH] net/netvsc: disable before changing RSS parameters

2019-12-09 Thread donald_...@trendmicro.com


On 10/12/2019, 5:29 AM, "Dexuan Cui"  wrote:


This message was sent from outside of Trend Micro. Please do not click 
links or open attachments unless you recognise the source of this email and 
know the content is safe.


> From: Dexuan Cui
> Sent: Monday, November 25, 2019 7:29 PM
> To: Stephen Hemminger ; dev@dpdk.org;
> donald_...@trendmicro.com
> Cc: sta...@dpdk.org
> Subject: RE: [PATCH] net/netvsc: disable before changing RSS parameters
>
> > From: Stephen Hemminger 
> > Sent: Monday, November 25, 2019 9:13 AM
> > To: dev@dpdk.org
> > Cc: Stephen Hemminger ;
> sta...@dpdk.org;
> > Dexuan Cui 
> >
> > In order to change RSS parameters, the host requires that RSS
> > is disable first.
> >
> > Fixes: 92d23a57cafe ("net/netvsc: support configuring RSS parameters")
> > Cc: sta...@dpdk.org
> > Signed-off-by: Dexuan Cui 
> > Signed-off-by: Stephen Hemminger 
> > ---
> >  drivers/net/netvsc/hn_ethdev.c | 14 ++
> >  1 file changed, 14 insertions(+)
> >
> > diff --git a/drivers/net/netvsc/hn_ethdev.c
> b/drivers/net/netvsc/hn_ethdev.c
> > index 164e9ad174a7..575780ee5f26 100644
> > --- a/drivers/net/netvsc/hn_ethdev.c
> > +++ b/drivers/net/netvsc/hn_ethdev.c
> > @@ -291,6 +291,13 @@ static int hn_rss_reta_update(struct rte_eth_dev
> > *dev,
> > hv->rss_ind[i] = reta_conf[idx].reta[shift];
> > }
> >
> > +   err = hn_rndis_conf_rss(hv, NDIS_RSS_FLAG_DISABLE);
> > +   if (err) {
> > +   PMD_DRV_LOG(NOTICE,
> > +   "rss disable failed");
> > +   return err;
> > +   }
> > +
> > err = hn_rndis_conf_rss(hv, 0);
> > if (err) {
> > PMD_DRV_LOG(NOTICE,
> > @@ -578,6 +585,13 @@ static int hn_dev_configure(struct rte_eth_dev
> > *dev)
> > return err;
> > }
> >
> > +   err = hn_rndis_conf_rss(hv, NDIS_RSS_FLAG_DISABLE);
> > +   if (err) {
> > +   PMD_DRV_LOG(NOTICE,
> > +   "rss disable failed");
> > +   return err;
> > +   }
> > +
> > err = hn_rndis_conf_rss(hv, 0);
> > if (err) {
> > PMD_DRV_LOG(NOTICE,
> > --
> > 2.20.1
>
> Hi, Stephen,
> I think the patch originally came from Donald Lee (I added him to "To").
>
> IMO Donald's Signed-off-by should be added.
>
> And, can you please change my Signed-off-by to Tested-by?
>
> Thanks,
> -- Dexuan

Hi Donald,
Since you originally made the patch, can you please confirm that your
Signed-off-by
"Signed-off-by: Donald Lee "
can be added into the patch's changelog?

Thanks,
-- Dexuan


Hi Dexuan, 

Yes! Can you please add my signed-off on it? Our mailing system will add extra 
space on the patch last time I did. Thank you.

Regards,
Donald




[dpdk-dev] [PATCH] net/tap: fix Rx miss the packets

2019-07-12 Thread donald_...@trendmicro.com
From: Donald Lee 



After pmd_rx_burst be triggered, it doesn't retrieve all the frames.

It may leave some pending frames there.



Signed-off-by: Donald Lee 

---

drivers/net/tap/rte_eth_tap.c | 7 ++-

drivers/net/tap/rte_eth_tap.h | 1 +

2 files changed, 7 insertions(+), 1 deletion(-)



diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c

index 3841842f0..e2785e011 100644

--- a/drivers/net/tap/rte_eth_tap.c

+++ b/drivers/net/tap/rte_eth_tap.c

@@ -353,10 +353,11 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, 
uint16_t nb_pkts)

   unsigned long num_rx_bytes = 0;

   uint32_t trigger = tap_trigger;



-  if (trigger == rxq->trigger_seen)

+ if (trigger == rxq->trigger_seen && !rxq->keep_trigger)

   return 0;

   if (trigger)

   rxq->trigger_seen = trigger;

+ rxq->keep_trigger = 0;

   process_private = rte_eth_devices[rxq->in_port].process_private;

   rte_compiler_barrier();

   for (num_rx = 0; num_rx < nb_pkts; ) {

@@ -431,6 +432,9 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t 
nb_pkts)

   bufs[num_rx++] = mbuf;

   num_rx_bytes += mbuf->pkt_len;

   }

+ /* may have pending packets, keep trigger */

+ if (num_rx == nb_pkts)

+ rxq->keep_trigger = 1;

end:

   rxq->stats.ipackets += num_rx;

   rxq->stats.ibytes += num_rx_bytes;

@@ -1352,6 +1356,7 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,



rxq->mp = mp;

   rxq->trigger_seen = 1; /* force initial burst */

+ rxq->keep_trigger = 0;

   rxq->in_port = dev->data->port_id;

   rxq->queue_id = rx_queue_id;

   rxq->nb_rx_desc = nb_desc;

diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h

index 8d6d53dc0..842e8c0b7 100644

--- a/drivers/net/tap/rte_eth_tap.h

+++ b/drivers/net/tap/rte_eth_tap.h

@@ -45,6 +45,7 @@ struct pkt_stats {

struct rx_queue {

   struct rte_mempool *mp; /* Mempool for RX packets */

   uint32_t trigger_seen;  /* Last seen Rx trigger value */

+ uint16_t keep_trigger;  /* Keep trigger state */

   uint16_t in_port;   /* Port ID */

   uint16_t queue_id; /* queue ID*/

   struct pkt_stats stats; /* Stats for this RX queue */

--

2.19.1





[dpdk-dev] [PATCH] net/tap: fix Rx miss the packets

2019-07-04 Thread donald_...@trendmicro.com
From: Donald Lee 



After pmd_rx_burst be triggered, it doesn't retrieve all the frames.

It may leave some pending frames there.



Signed-off-by: Donald Lee 

---

drivers/net/tap/rte_eth_tap.c | 7 ++-

drivers/net/tap/rte_eth_tap.h | 1 +

2 files changed, 7 insertions(+), 1 deletion(-)



diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c

index 3841842f0..e2785e011 100644

--- a/drivers/net/tap/rte_eth_tap.c

+++ b/drivers/net/tap/rte_eth_tap.c

@@ -353,10 +353,11 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, 
uint16_t nb_pkts)

   unsigned long num_rx_bytes = 0;

   uint32_t trigger = tap_trigger;

-  if (trigger == rxq->trigger_seen)

+ if (trigger == rxq->trigger_seen && !rxq->keep_trigger)

   return 0;

   if (trigger)

   rxq->trigger_seen = trigger;

+ rxq->keep_trigger = 0;

   process_private = rte_eth_devices[rxq->in_port].process_private;

   rte_compiler_barrier();

   for (num_rx = 0; num_rx < nb_pkts; ) {

@@ -431,6 +432,9 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t 
nb_pkts)

   bufs[num_rx++] = mbuf;

   num_rx_bytes += mbuf->pkt_len;

   }

+ /* may have pending packets, keep trigger */

+ if (num_rx == nb_pkts)

+ rxq->keep_trigger = 1;

end:

   rxq->stats.ipackets += num_rx;

   rxq->stats.ibytes += num_rx_bytes;

@@ -1352,6 +1356,7 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,

rxq->mp = mp;

   rxq->trigger_seen = 1; /* force initial burst */

+ rxq->keep_trigger = 0;

   rxq->in_port = dev->data->port_id;

   rxq->queue_id = rx_queue_id;

   rxq->nb_rx_desc = nb_desc;

diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h

index 8d6d53dc0..842e8c0b7 100644

--- a/drivers/net/tap/rte_eth_tap.h

+++ b/drivers/net/tap/rte_eth_tap.h

@@ -45,6 +45,7 @@ struct pkt_stats {

struct rx_queue {

   struct rte_mempool *mp; /* Mempool for RX packets */

   uint32_t trigger_seen;  /* Last seen Rx trigger value */

+ uint16_t keep_trigger;  /* Keep trigger state */

   uint16_t in_port;   /* Port ID */

   uint16_t queue_id; /* queue ID*/

   struct pkt_stats stats; /* Stats for this RX queue */

--

2.19.1





TREND MICRO EMAIL NOTICE
The information contained in this email and any attachments is confidential 
and may be subject to copyright or other intellectual property protection. 
If you are not the intended recipient, you are not authorized to use or 
disclose this information, and we request that you notify us by reply mail or
telephone and delete the original message from your mail system.