Moving VF stats into their own function will facilitate separating
them out later.

No functional change.

Signed-off-by: Edwin Peer <edwin.p...@broadcom.com>
---
 net/core/rtnetlink.c | 66 +++++++++++++++++++++++++-------------------
 1 file changed, 38 insertions(+), 28 deletions(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 466f920ac974..95564fd12f24 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1223,6 +1223,42 @@ static noinline_for_stack int rtnl_fill_stats(struct 
sk_buff *skb,
        return 0;
 }
 
+static noinline_for_stack int rtnl_fill_vfstats(struct sk_buff *skb,
+                                               struct net_device *dev,
+                                               int vf_num)
+{
+       struct ifla_vf_stats vf_stats;
+       struct nlattr *vfstats;
+
+       memset(&vf_stats, 0, sizeof(vf_stats));
+       if (dev->netdev_ops->ndo_get_vf_stats)
+               dev->netdev_ops->ndo_get_vf_stats(dev, vf_num, &vf_stats);
+       vfstats = nla_nest_start_noflag(skb, IFLA_VF_STATS);
+       if (!vfstats)
+               return -EMSGSIZE;
+       if (nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_PACKETS,
+                             vf_stats.rx_packets, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_PACKETS,
+                             vf_stats.tx_packets, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_BYTES,
+                             vf_stats.rx_bytes, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_BYTES,
+                             vf_stats.tx_bytes, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_BROADCAST,
+                             vf_stats.broadcast, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_MULTICAST,
+                             vf_stats.multicast, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_DROPPED,
+                             vf_stats.rx_dropped, IFLA_VF_STATS_PAD) ||
+           nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_DROPPED,
+                             vf_stats.tx_dropped, IFLA_VF_STATS_PAD)) {
+               nla_nest_cancel(skb, vfstats);
+               return -EMSGSIZE;
+       }
+       nla_nest_end(skb, vfstats);
+       return 0;
+}
+
 static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
                                               struct net_device *dev,
                                               int vfs_num,
@@ -1230,12 +1266,11 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct 
sk_buff *skb,
                                               u32 ext_filter_mask)
 {
        struct ifla_vf_rss_query_en vf_rss_query_en;
-       struct nlattr *vf, *vfstats, *vfvlanlist;
+       struct nlattr *vf, *vfvlanlist;
        struct ifla_vf_link_state vf_linkstate;
        struct ifla_vf_vlan_info vf_vlan_info;
        struct ifla_vf_spoofchk vf_spoofchk;
        struct ifla_vf_tx_rate vf_tx_rate;
-       struct ifla_vf_stats vf_stats;
        struct ifla_vf_trust vf_trust;
        struct ifla_vf_vlan vf_vlan;
        struct ifla_vf_rate vf_rate;
@@ -1334,33 +1369,8 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct 
sk_buff *skb,
        }
        nla_nest_end(skb, vfvlanlist);
        if (~ext_filter_mask & RTEXT_FILTER_SKIP_STATS) {
-               memset(&vf_stats, 0, sizeof(vf_stats));
-               if (dev->netdev_ops->ndo_get_vf_stats)
-                       dev->netdev_ops->ndo_get_vf_stats(dev, vfs_num,
-                                                         &vf_stats);
-               vfstats = nla_nest_start_noflag(skb, IFLA_VF_STATS);
-               if (!vfstats)
-                       goto nla_put_vf_failure;
-               if (nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_PACKETS,
-                                     vf_stats.rx_packets, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_PACKETS,
-                                     vf_stats.tx_packets, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_BYTES,
-                                     vf_stats.rx_bytes, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_BYTES,
-                                     vf_stats.tx_bytes, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_BROADCAST,
-                                     vf_stats.broadcast, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_MULTICAST,
-                                     vf_stats.multicast, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_DROPPED,
-                                     vf_stats.rx_dropped, IFLA_VF_STATS_PAD) ||
-                   nla_put_u64_64bit(skb, IFLA_VF_STATS_TX_DROPPED,
-                                     vf_stats.tx_dropped, IFLA_VF_STATS_PAD)) {
-                       nla_nest_cancel(skb, vfstats);
+               if (rtnl_fill_vfstats(skb, dev, vfs_num))
                        goto nla_put_vf_failure;
-               }
-               nla_nest_end(skb, vfstats);
        }
        nla_nest_end(skb, vf);
        return 0;
-- 
2.30.0

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to