Messages in this thread Patch in this message | | | From | Kalesh Anakkur Purayil <> | Date | Wed, 7 Feb 2024 13:39:51 +0530 | Subject | Re: [PATCH net-next v6 5/8] octeon_ep_vf: add support for ndo ops |
| |
<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 7, 2024 at 12:23 PM Shinas Rasheed <<a href="mailto:srasheed@marvell.com">srasheed@marvell.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Add support for ndo ops to set MAC address, change MTU, get stats.<br> Add control path support to set MAC address, change MTU, get stats,<br> set speed, get and set link mode.<br></blockquote><div>[Kalesh]: You are adding support for only one ndo hook ".ndo_get_stats64" in this patch. Am I missing something?</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> Signed-off-by: Shinas Rasheed <<a href="mailto:srasheed@marvell.com" target="_blank">srasheed@marvell.com</a>><br> ---<br> V6:<br> - No changes<br> <br> V5: <a href="https://lore.kernel.org/all/20240129050254.3047778-6-srasheed@marvell.com/" rel="noreferrer" target="_blank">https://lore.kernel.org/all/20240129050254.3047778-6-srasheed@marvell.com/</a><br> - No changes<br> <br> V4: <a href="https://lore.kernel.org/all/20240108124213.2966536-6-srasheed@marvell.com/" rel="noreferrer" target="_blank">https://lore.kernel.org/all/20240108124213.2966536-6-srasheed@marvell.com/</a><br> - Provide more stats in ndo_get_stats64 such as tx_dropped, rx_dropped<br> etc.<br> <br> V3: <a href="https://lore.kernel.org/all/20240105203823.2953604-6-srasheed@marvell.com/" rel="noreferrer" target="_blank">https://lore.kernel.org/all/20240105203823.2953604-6-srasheed@marvell.com/</a><br> - No changes<br> <br> V2: <a href="https://lore.kernel.org/all/20231223134000.2906144-6-srasheed@marvell.com/" rel="noreferrer" target="_blank">https://lore.kernel.org/all/20231223134000.2906144-6-srasheed@marvell.com/</a><br> - No changes<br> <br> V1: <a href="https://lore.kernel.org/all/20231221092844.2885872-6-srasheed@marvell.com/" rel="noreferrer" target="_blank">https://lore.kernel.org/all/20231221092844.2885872-6-srasheed@marvell.com/</a><br> <br> .../marvell/octeon_ep_vf/octep_vf_main.c | 58 +++++++++++++++++++<br> 1 file changed, 58 insertions(+)<br> <br> diff --git a/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c b/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c<br> index 562beed9af6a..ff879b1e846e 100644<br> --- a/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c<br> +++ b/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c<br> @@ -186,6 +186,23 @@ static netdev_tx_t octep_vf_start_xmit(struct sk_buff *skb,<br> return NETDEV_TX_OK;<br> }<br> <br> +int octep_vf_get_if_stats(struct octep_vf_device *oct)<br></blockquote><div>[Kalesh]: You may want to make this function static. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> +{<br> + struct octep_vf_iface_rxtx_stats vf_stats;<br> + int ret, size;<br> +<br> + memset(&vf_stats, 0, sizeof(struct octep_vf_iface_rxtx_stats));<br></blockquote><div>[Kalesh]: You can avoid memset by initializing vf_stats = {}; </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> + ret = octep_vf_mbox_bulk_read(oct, OCTEP_PFVF_MBOX_CMD_GET_STATS,<br> + (u8 *)&vf_stats, &size);<br> + if (!ret) {<br></blockquote><div>[Kalesh] For better alignment:</div><div>if (ret)</div><div> return ret; </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> + memcpy(&oct->iface_rx_stats, &vf_stats.iface_rx_stats,<br> + sizeof(struct octep_vf_iface_rx_stats));<br> + memcpy(&oct->iface_tx_stats, &vf_stats.iface_tx_stats,<br> + sizeof(struct octep_vf_iface_tx_stats));<br> + }<br> + return ret;<br> +}<br> +<br> int octep_vf_get_link_info(struct octep_vf_device *oct)<br> {<br> int ret, size;<br> @@ -199,6 +216,46 @@ int octep_vf_get_link_info(struct octep_vf_device *oct)<br> return 0;<br> }<br> <br> +/**<br> + * octep_vf_get_stats64() - Get Octeon network device statistics.<br> + *<br> + * @netdev: kernel network device.<br> + * @stats: pointer to stats structure to be filled in.<br> + */<br> +static void octep_vf_get_stats64(struct net_device *netdev,<br> + struct rtnl_link_stats64 *stats)<br> +{<br> + struct octep_vf_device *oct = netdev_priv(netdev);<br> + u64 tx_packets, tx_bytes, rx_packets, rx_bytes;<br> + int q;<br> +<br> + tx_packets = 0;<br> + tx_bytes = 0;<br> + rx_packets = 0;<br> + rx_bytes = 0;<br> + for (q = 0; q < oct->num_oqs; q++) {<br> + struct octep_vf_iq *iq = oct->iq[q];<br> + struct octep_vf_oq *oq = oct->oq[q];<br> +<br> + tx_packets += iq->stats.instr_completed;<br> + tx_bytes += iq->stats.bytes_sent;<br> + rx_packets += oq->stats.packets;<br> + rx_bytes += oq->stats.bytes;<br> + }<br> + stats->tx_packets = tx_packets;<br> + stats->tx_bytes = tx_bytes;<br> + stats->rx_packets = rx_packets;<br> + stats->rx_bytes = rx_bytes;<br> + if (!octep_vf_get_if_stats(oct)) {<br> + stats->multicast = oct->iface_rx_stats.mcast_pkts;<br> + stats->rx_errors = oct->iface_rx_stats.err_pkts;<br> + stats->rx_dropped = oct->iface_rx_stats.dropped_pkts_fifo_full +<br> + oct->iface_rx_stats.err_pkts;<br> + stats->rx_missed_errors = oct->iface_rx_stats.dropped_pkts_fifo_full;<br> + stats->tx_dropped = oct->iface_tx_stats.dropped;<br> + }<br> +}<br> +<br> /**<br> * octep_vf_tx_timeout_task - work queue task to Handle Tx queue timeout.<br> *<br> @@ -313,6 +370,7 @@ static const struct net_device_ops octep_vf_netdev_ops = {<br> .ndo_open = octep_vf_open,<br> .ndo_stop = octep_vf_stop,<br> .ndo_start_xmit = octep_vf_start_xmit,<br> + .ndo_get_stats64 = octep_vf_get_stats64,<br> .ndo_tx_timeout = octep_vf_tx_timeout,<br> .ndo_set_mac_address = octep_vf_set_mac,<br> .ndo_change_mtu = octep_vf_change_mtu,<br> -- <br> 2.25.1<br> <br> <br> </blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Regards,<div>Kalesh A P</div></div></div></div> [unhandled content-type:application/pkcs7-signature] | |