> 
> Sorry to self-reply.
> 
> I think it's better the 'struct rte_eth_dev *dev' hold a pointer to the
> 'struct rte_eth_fp_ops', e.g.
> 
>       struct rte_eth_dev {
>               struct rte_eth_fp_ops *fp_ops;
>               ...  // other field
>       }
> 
> The eth framework set the pointer in the rte_eth_dev_pci_allocate(), and 
> driver fill
> corresponding callback:
>       dev->fp_ops->rx_pkt_burst = xxx_recv_pkts;
>       dev->fp_ops->tx_pkt_burst = xxx_xmit_pkts;
>       ...
> 
> In this way, the behavior of the primary and secondary processes can be 
> unified, which
> is basically the same as that of the original process.

I don't think it is a good thing to do, as it nullifies one of the main thing 
of this approach:
fp_ops[] points to actual rx/tx functions and data only when PMD is really 
ready to do rx/tx
(device is properly configured and started), in other cases it points to dummy 
stubs.
As another drawback it will mean code changes in aach and every driver.

Reply via email to