On 10.04.2019 17:10, David Marchand wrote:
> On Wed, Apr 10, 2019 at 9:32 AM David Marchand <david.march...@redhat.com 
> <mailto:david.march...@redhat.com>> wrote:
> 
>     On Tue, Apr 9, 2019 at 1:42 PM Ilya Maximets <i.maxim...@samsung.com 
> <mailto:i.maxim...@samsung.com>> wrote:
> 
> 
>         What do you think about something like this (not even compile tested):
>         ---
>         diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
>         index bd9718824..0cf492a3b 100644
>         --- a/lib/dpif-netdev.c
>         +++ b/lib/dpif-netdev.c
>         @@ -591,6 +591,8 @@ struct polled_queue {
>              struct dp_netdev_rxq *rxq;
>              odp_port_t port_no;
>              bool emc_enabled;
>         +    bool enabled;
>         +    uint64_t change_seq;
>          };
> 
>          /* Contained by struct dp_netdev_pmd_thread's 'poll_list' member. */
>         @@ -5375,6 +5377,9 @@ pmd_load_queues_and_ports(struct 
> dp_netdev_pmd_thread *pmd,
>                  poll_list[i].rxq = poll->rxq;
>                  poll_list[i].port_no = poll->rxq->port->port_no;
>                  poll_list[i].emc_enabled = poll->rxq->port->emc_enabled;
>         +        poll_list[i].enabled = netdev_rxq_enabled(poll->rxq);
>         +        poll_list[i].change_seq =
>         +                     netdev_get_change_seq(poll->rxq->port->netdev);
>                  i++;
>              }
> 
>         @@ -5440,6 +5445,10 @@ reload:
> 
>                  for (i = 0; i < poll_cnt; i++) {
> 
>         +            if (!poll_list[i].enabled) {
>         +                continue;
>         +            }
>         +
>                      if (poll_list[i].emc_enabled) {
>                          atomic_read_relaxed(&pmd->dp->emc_insert_min,
>                                              &pmd->ctx.emc_insert_min);
>         @@ -5476,6 +5485,15 @@ reload:
>                      if (reload) {
>                          break;
>                      }
>         +
>         +            for (i = 0; i < poll_cnt; i++) {
>         +                uint64_t current_seq =
>         +                         
> netdev_get_change_seq(poll_list[i].rxq->port->netdev);
>         +                if (poll_list[i].change_seq != current_seq) {
>         +                    poll_list[i].change_seq = current_seq;
>         +                    poll_list[i].enabled = 
> netdev_rxq_enabled(poll_list[i].rxq);
>         +                }
>         +            }
>                  }
>                  pmd_perf_end_iteration(s, rx_packets, tx_packets,
>                                         pmd_perf_metrics_enabled(pmd));
>         ---
>         + replacing of your 'netdev_request_reconfigure(&dev->up)' inside 
> 'vring_state_changed'
>         with 'netdev_change_seq_changed(&dev->up)'?
> 
> 
>     Interesting, I would prefer to have a bitmap of rxq rather than looping 
> on all and checking the state.
>     But let me try your approach first.
> 
> 
> Incorporated this change, and it works fine, I get similar numbers 
> with/without a bitmap, so I dropped the bitmap.
> I would say we are only missing some information in dpif-netdev/pmd-rxq-show 
> to get a per rxq status.
> 
> I will submit this with the fix on F_MQ if this is okay for you.

Sure.
I'll make a more detailed review and, probably, some tests after that.

> 
> Thanks!
> 
> -- 
> David Marchand
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to