From: Maor Gottlieb <maorg@mellanox.com>
To: davem@davemloft.net, jgg@mellanox.com, dledford@redhat.com,
j.vosburgh@gmail.com, vfalico@gmail.com, andy@greyhouse.net,
kuba@kernel.org, jiri@mellanox.com, dsahern@kernel.org
Cc: leonro@mellanox.com, saeedm@mellanox.com,
linux-rdma@vger.kernel.org, netdev@vger.kernel.org,
alexr@mellanox.com, Maor Gottlieb <maorg@mellanox.com>
Subject: [PATCH V6 mlx5-next 03/16] bonding: Rename slave_arr to usable_slaves
Date: Sun, 26 Apr 2020 10:17:04 +0300 [thread overview]
Message-ID: <20200426071717.17088-4-maorg@mellanox.com> (raw)
In-Reply-To: <20200426071717.17088-1-maorg@mellanox.com>
Rename slave_arr to usable_slaves, since we will have two arrays,
one for the usable slaves and the other to all slaves.
Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Jay Vosburgh <jay.vosburgh@canonical.com>
---
drivers/net/bonding/bond_alb.c | 4 ++--
drivers/net/bonding/bond_main.c | 40 ++++++++++++++++-----------------
include/net/bonding.h | 2 +-
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index c81698550e5a..7bb49b049dcc 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1360,7 +1360,7 @@ netdev_tx_t bond_tlb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
struct bond_up_slave *slaves;
unsigned int count;
- slaves = rcu_dereference(bond->slave_arr);
+ slaves = rcu_dereference(bond->usable_slaves);
count = slaves ? READ_ONCE(slaves->count) : 0;
if (likely(count))
tx_slave = slaves->arr[hash_index %
@@ -1494,7 +1494,7 @@ netdev_tx_t bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
struct bond_up_slave *slaves;
unsigned int count;
- slaves = rcu_dereference(bond->slave_arr);
+ slaves = rcu_dereference(bond->usable_slaves);
count = slaves ? READ_ONCE(slaves->count) : 0;
if (likely(count))
tx_slave = slaves->arr[bond_xmit_hash(bond, skb) %
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index f7aded014f08..2cb41d480ae2 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4120,9 +4120,9 @@ static void bond_skip_slave(struct bond_up_slave *slaves,
*/
int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
{
+ struct bond_up_slave *usable_slaves, *old_usable_slaves;
struct slave *slave;
struct list_head *iter;
- struct bond_up_slave *new_arr, *old_arr;
int agg_id = 0;
int ret = 0;
@@ -4130,11 +4130,10 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
WARN_ON(lockdep_is_held(&bond->mode_lock));
#endif
- new_arr = kzalloc(offsetof(struct bond_up_slave, arr[bond->slave_cnt]),
- GFP_KERNEL);
- if (!new_arr) {
+ usable_slaves = kzalloc(struct_size(usable_slaves, arr,
+ bond->slave_cnt), GFP_KERNEL);
+ if (!usable_slaves) {
ret = -ENOMEM;
- pr_err("Failed to build slave-array.\n");
goto out;
}
if (BOND_MODE(bond) == BOND_MODE_8023AD) {
@@ -4142,14 +4141,14 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
if (bond_3ad_get_active_agg_info(bond, &ad_info)) {
pr_debug("bond_3ad_get_active_agg_info failed\n");
- kfree_rcu(new_arr, rcu);
+ kfree_rcu(usable_slaves, rcu);
/* No active aggragator means it's not safe to use
* the previous array.
*/
- old_arr = rtnl_dereference(bond->slave_arr);
- if (old_arr) {
- RCU_INIT_POINTER(bond->slave_arr, NULL);
- kfree_rcu(old_arr, rcu);
+ old_usable_slaves = rtnl_dereference(bond->usable_slaves);
+ if (old_usable_slaves) {
+ RCU_INIT_POINTER(bond->usable_slaves, NULL);
+ kfree_rcu(old_usable_slaves, rcu);
}
goto out;
}
@@ -4169,18 +4168,19 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
continue;
slave_dbg(bond->dev, slave->dev, "Adding slave to tx hash array[%d]\n",
- new_arr->count);
+ usable_slaves->count);
- new_arr->arr[new_arr->count++] = slave;
+ usable_slaves->arr[usable_slaves->count++] = slave;
}
- old_arr = rtnl_dereference(bond->slave_arr);
- rcu_assign_pointer(bond->slave_arr, new_arr);
- if (old_arr)
- kfree_rcu(old_arr, rcu);
+ old_usable_slaves = rtnl_dereference(bond->usable_slaves);
+ rcu_assign_pointer(bond->usable_slaves, usable_slaves);
+ if (old_usable_slaves)
+ kfree_rcu(old_usable_slaves, rcu);
out:
if (ret != 0 && skipslave)
- bond_skip_slave(rtnl_dereference(bond->slave_arr), skipslave);
+ bond_skip_slave(rtnl_dereference(bond->usable_slaves),
+ skipslave);
return ret;
}
@@ -4197,7 +4197,7 @@ static netdev_tx_t bond_3ad_xor_xmit(struct sk_buff *skb,
struct bond_up_slave *slaves;
unsigned int count;
- slaves = rcu_dereference(bond->slave_arr);
+ slaves = rcu_dereference(bond->usable_slaves);
count = slaves ? READ_ONCE(slaves->count) : 0;
if (likely(count)) {
slave = slaves->arr[bond_xmit_hash(bond, skb) % count];
@@ -4488,9 +4488,9 @@ static void bond_uninit(struct net_device *bond_dev)
__bond_release_one(bond_dev, slave->dev, true, true);
netdev_info(bond_dev, "Released all slaves\n");
- arr = rtnl_dereference(bond->slave_arr);
+ arr = rtnl_dereference(bond->usable_slaves);
if (arr) {
- RCU_INIT_POINTER(bond->slave_arr, NULL);
+ RCU_INIT_POINTER(bond->usable_slaves, NULL);
kfree_rcu(arr, rcu);
}
diff --git a/include/net/bonding.h b/include/net/bonding.h
index dc2ce31a1f52..33bdb6d5182d 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -200,7 +200,7 @@ struct bonding {
struct slave __rcu *curr_active_slave;
struct slave __rcu *current_arp_slave;
struct slave __rcu *primary_slave;
- struct bond_up_slave __rcu *slave_arr; /* Array of usable slaves */
+ struct bond_up_slave __rcu *usable_slaves; /* Array of usable slaves */
bool force_primary;
s32 slave_cnt; /* never change this value outside the attach/detach wrappers */
int (*recv_probe)(const struct sk_buff *, struct bonding *,
--
2.17.2
next prev parent reply other threads:[~2020-04-26 7:18 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-26 7:17 [PATCH 00/16] Add support to get xmit slave Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 01/16] net/core: Introduce netdev_get_xmit_slave Maor Gottlieb
2020-04-26 16:03 ` David Ahern
2020-04-26 7:17 ` [PATCH V6 mlx5-next 02/16] bonding: Export skip slave logic to function Maor Gottlieb
2020-04-26 7:17 ` Maor Gottlieb [this message]
2020-04-26 7:17 ` [PATCH V6 mlx5-next 04/16] bonding/alb: Add helper functions to get the xmit slave Maor Gottlieb
2020-04-26 7:17 ` [PATCH 05/16] bonding: Add helper function to get the xmit slave based on hash Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 06/16] bonding: Add helper function to get the xmit slave in rr mode Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 07/16] bonding: Add function to get the xmit slave in active-backup mode Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 08/16] bonding: Add array of all slaves Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 09/16] bonding: Implement ndo_get_xmit_slave Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 10/16] RDMA: Group create AH arguments in struct Maor Gottlieb
2020-04-28 8:39 ` Devesh Sharma
2020-04-28 10:17 ` Gal Pressman
2020-04-28 10:51 ` liweihang
2020-04-28 23:15 ` Jason Gunthorpe
2020-04-26 7:17 ` [PATCH V6 mlx5-next 11/16] RDMA/core: Add LAG functionality Maor Gottlieb
2020-04-28 23:15 ` Jason Gunthorpe
2020-04-28 23:30 ` Jason Gunthorpe
2020-04-29 9:01 ` Maor Gottlieb
2020-04-29 15:01 ` Jason Gunthorpe
2020-04-26 7:17 ` [PATCH V6 mlx5-next 12/16] RDMA/core: Get xmit slave for LAG Maor Gottlieb
2020-04-28 23:33 ` Jason Gunthorpe
2020-04-26 7:17 ` [PATCH V6 mlx5-next 13/16] net/mlx5: Change lag mutex lock to spin lock Maor Gottlieb
2020-04-28 23:23 ` Jason Gunthorpe
2020-04-26 7:17 ` [PATCH V6 mlx5-next 14/16] net/mlx5: Add support to get lag physical port Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 15/16] RDMA/mlx5: Refactor affinity related code Maor Gottlieb
2020-04-26 7:17 ` [PATCH V6 mlx5-next 16/16] RDMA/mlx5: Set lag tx affinity according to slave Maor Gottlieb
2020-04-26 7:37 ` [PATCH 00/16] Add support to get xmit slave Maor Gottlieb
2020-04-28 20:04 ` Saeed Mahameed
2020-04-28 21:37 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200426071717.17088-4-maorg@mellanox.com \
--to=maorg@mellanox.com \
--cc=alexr@mellanox.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=dledford@redhat.com \
--cc=dsahern@kernel.org \
--cc=j.vosburgh@gmail.com \
--cc=jgg@mellanox.com \
--cc=jiri@mellanox.com \
--cc=kuba@kernel.org \
--cc=leonro@mellanox.com \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=saeedm@mellanox.com \
--cc=vfalico@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).