[dpdk-dev] [PATCH v2] net/kni: set packet input port in Rx

David Marchand david.marchand at redhat.com
Wed Jul 29 19:02:05 CEST 2020


On Fri, Jul 24, 2020 at 5:10 PM Ferruh Yigit <ferruh.yigit at intel.com> wrote:
>
> From: jiancheng pei <jpei at sonicwall.com>
>
> Store port_id in pmd_internals when eth kni device is created.
> Then set packet port of rte_mbuf in function eth_kni_rx.

LGTM.

Is this fix worth a backport?
A net driver is expected to set the port in all mbufs (m->port is
initialised/reset to MBUF_INVALID_PORT).


>
> Signed-off-by: Jecky Pei <jpei at sonicwall.com>
> Reviewed-by: Ferruh Yigit <ferruh.yigit at intel.com>
> ---
>  drivers/net/kni/rte_eth_kni.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
> index cde98f0bb2..831fe96c96 100644
> --- a/drivers/net/kni/rte_eth_kni.c
> +++ b/drivers/net/kni/rte_eth_kni.c
> @@ -47,6 +47,7 @@ struct pmd_queue {
>
>  struct pmd_internals {
>         struct rte_kni *kni;
> +       uint16_t port_id;
>         int is_kni_started;
>
>         pthread_t thread;
> @@ -78,8 +79,11 @@ eth_kni_rx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs)
>         struct pmd_queue *kni_q = q;
>         struct rte_kni *kni = kni_q->internals->kni;
>         uint16_t nb_pkts;
> +       int i;
>
>         nb_pkts = rte_kni_rx_burst(kni, bufs, nb_bufs);
> +       for (i = 0; i < nb_pkts; i++)
> +               bufs[i]->port = kni_q->internals->port_id;
>
>         kni_q->rx.pkts += nb_pkts;
>
> @@ -372,6 +376,7 @@ eth_kni_create(struct rte_vdev_device *vdev,
>                 return NULL;
>
>         internals = eth_dev->data->dev_private;
> +       internals->port_id = eth_dev->data->port_id;
>         data = eth_dev->data;
>         data->nb_rx_queues = 1;
>         data->nb_tx_queues = 1;
> --
> 2.25.4
>



-- 
David Marchand



More information about the dev mailing list