[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAH-L+nN04MuWS-QOxpPfQMD5iAvdZPFCp0nffuhB43+puLgk_Q@mail.gmail.com>
Date: Wed, 7 Feb 2024 13:39:51 +0530
From: Kalesh Anakkur Purayil <kalesh-anakkur.purayil@...adcom.com>
To: Shinas Rasheed <srasheed@...vell.com>
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org, hgani@...vell.com,
vimleshk@...vell.com, sedara@...vell.com, egallen@...hat.com,
mschmidt@...hat.com, pabeni@...hat.com, kuba@...nel.org, horms@...nel.org,
wizhao@...hat.com, kheib@...hat.com, konguyen@...hat.com,
Veerasenareddy Burru <vburru@...vell.com>, Satananda Burla <sburla@...vell.com>,
"David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>
Subject: Re: [PATCH net-next v6 5/8] octeon_ep_vf: add support for ndo ops
On Wed, Feb 7, 2024 at 12:23 PM Shinas Rasheed <srasheed@...vell.com> wrote:
> Add support for ndo ops to set MAC address, change MTU, get stats.
> Add control path support to set MAC address, change MTU, get stats,
> set speed, get and set link mode.
>
[Kalesh]: You are adding support for only one ndo hook ".ndo_get_stats64"
in this patch. Am I missing something?
>
> Signed-off-by: Shinas Rasheed <srasheed@...vell.com>
> ---
> V6:
> - No changes
>
> V5:
> https://lore.kernel.org/all/20240129050254.3047778-6-srasheed@marvell.com/
> - No changes
>
> V4:
> https://lore.kernel.org/all/20240108124213.2966536-6-srasheed@marvell.com/
> - Provide more stats in ndo_get_stats64 such as tx_dropped, rx_dropped
> etc.
>
> V3:
> https://lore.kernel.org/all/20240105203823.2953604-6-srasheed@marvell.com/
> - No changes
>
> V2:
> https://lore.kernel.org/all/20231223134000.2906144-6-srasheed@marvell.com/
> - No changes
>
> V1:
> https://lore.kernel.org/all/20231221092844.2885872-6-srasheed@marvell.com/
>
> .../marvell/octeon_ep_vf/octep_vf_main.c | 58 +++++++++++++++++++
> 1 file changed, 58 insertions(+)
>
> 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
> index 562beed9af6a..ff879b1e846e 100644
> --- a/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c
> +++ b/drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c
> @@ -186,6 +186,23 @@ static netdev_tx_t octep_vf_start_xmit(struct sk_buff
> *skb,
> return NETDEV_TX_OK;
> }
>
> +int octep_vf_get_if_stats(struct octep_vf_device *oct)
>
[Kalesh]: You may want to make this function static.
> +{
> + struct octep_vf_iface_rxtx_stats vf_stats;
> + int ret, size;
> +
> + memset(&vf_stats, 0, sizeof(struct octep_vf_iface_rxtx_stats));
>
[Kalesh]: You can avoid memset by initializing vf_stats = {};
> + ret = octep_vf_mbox_bulk_read(oct, OCTEP_PFVF_MBOX_CMD_GET_STATS,
> + (u8 *)&vf_stats, &size);
> + if (!ret) {
>
[Kalesh] For better alignment:
if (ret)
return ret;
> + memcpy(&oct->iface_rx_stats, &vf_stats.iface_rx_stats,
> + sizeof(struct octep_vf_iface_rx_stats));
> + memcpy(&oct->iface_tx_stats, &vf_stats.iface_tx_stats,
> + sizeof(struct octep_vf_iface_tx_stats));
> + }
> + return ret;
> +}
> +
> int octep_vf_get_link_info(struct octep_vf_device *oct)
> {
> int ret, size;
> @@ -199,6 +216,46 @@ int octep_vf_get_link_info(struct octep_vf_device
> *oct)
> return 0;
> }
>
> +/**
> + * octep_vf_get_stats64() - Get Octeon network device statistics.
> + *
> + * @netdev: kernel network device.
> + * @stats: pointer to stats structure to be filled in.
> + */
> +static void octep_vf_get_stats64(struct net_device *netdev,
> + struct rtnl_link_stats64 *stats)
> +{
> + struct octep_vf_device *oct = netdev_priv(netdev);
> + u64 tx_packets, tx_bytes, rx_packets, rx_bytes;
> + int q;
> +
> + tx_packets = 0;
> + tx_bytes = 0;
> + rx_packets = 0;
> + rx_bytes = 0;
> + for (q = 0; q < oct->num_oqs; q++) {
> + struct octep_vf_iq *iq = oct->iq[q];
> + struct octep_vf_oq *oq = oct->oq[q];
> +
> + tx_packets += iq->stats.instr_completed;
> + tx_bytes += iq->stats.bytes_sent;
> + rx_packets += oq->stats.packets;
> + rx_bytes += oq->stats.bytes;
> + }
> + stats->tx_packets = tx_packets;
> + stats->tx_bytes = tx_bytes;
> + stats->rx_packets = rx_packets;
> + stats->rx_bytes = rx_bytes;
> + if (!octep_vf_get_if_stats(oct)) {
> + stats->multicast = oct->iface_rx_stats.mcast_pkts;
> + stats->rx_errors = oct->iface_rx_stats.err_pkts;
> + stats->rx_dropped =
> oct->iface_rx_stats.dropped_pkts_fifo_full +
> + oct->iface_rx_stats.err_pkts;
> + stats->rx_missed_errors =
> oct->iface_rx_stats.dropped_pkts_fifo_full;
> + stats->tx_dropped = oct->iface_tx_stats.dropped;
> + }
> +}
> +
> /**
> * octep_vf_tx_timeout_task - work queue task to Handle Tx queue timeout.
> *
> @@ -313,6 +370,7 @@ static const struct net_device_ops octep_vf_netdev_ops
> = {
> .ndo_open = octep_vf_open,
> .ndo_stop = octep_vf_stop,
> .ndo_start_xmit = octep_vf_start_xmit,
> + .ndo_get_stats64 = octep_vf_get_stats64,
> .ndo_tx_timeout = octep_vf_tx_timeout,
> .ndo_set_mac_address = octep_vf_set_mac,
> .ndo_change_mtu = octep_vf_change_mtu,
> --
> 2.25.1
>
>
>
--
Regards,
Kalesh A P
Content of type "text/html" skipped
Download attachment "smime.p7s" of type "application/pkcs7-signature" (4239 bytes)
Powered by blists - more mailing lists