mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
bonding: remove vlan_list/current_alb_vlan
Currently there are no real users of vlan_list/current_alb_vlan, only the helpers which maintain them, so remove them. CC: Jay Vosburgh <fubar@us.ibm.com> CC: Andy Gospodarek <andy@greyhouse.net> Signed-off-by: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5bf94b839a
commit
e868b0c938
@ -1763,11 +1763,6 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr)
|
|||||||
|
|
||||||
void bond_alb_clear_vlan(struct bonding *bond, unsigned short vlan_id)
|
void bond_alb_clear_vlan(struct bonding *bond, unsigned short vlan_id)
|
||||||
{
|
{
|
||||||
if (bond->alb_info.current_alb_vlan &&
|
|
||||||
(bond->alb_info.current_alb_vlan->vlan_id == vlan_id)) {
|
|
||||||
bond->alb_info.current_alb_vlan = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bond->alb_info.rlb_enabled) {
|
if (bond->alb_info.rlb_enabled) {
|
||||||
rlb_clear_vlan(bond, vlan_id);
|
rlb_clear_vlan(bond, vlan_id);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,6 @@ struct alb_bond_info {
|
|||||||
* rx traffic should be
|
* rx traffic should be
|
||||||
* rebalanced
|
* rebalanced
|
||||||
*/
|
*/
|
||||||
struct vlan_entry *current_alb_vlan;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int bond_alb_initialize(struct bonding *bond, int rlb_enabled);
|
int bond_alb_initialize(struct bonding *bond, int rlb_enabled);
|
||||||
|
@ -282,116 +282,6 @@ const char *bond_mode_name(int mode)
|
|||||||
|
|
||||||
/*---------------------------------- VLAN -----------------------------------*/
|
/*---------------------------------- VLAN -----------------------------------*/
|
||||||
|
|
||||||
/**
|
|
||||||
* bond_add_vlan - add a new vlan id on bond
|
|
||||||
* @bond: bond that got the notification
|
|
||||||
* @vlan_id: the vlan id to add
|
|
||||||
*
|
|
||||||
* Returns -ENOMEM if allocation failed.
|
|
||||||
*/
|
|
||||||
static int bond_add_vlan(struct bonding *bond, unsigned short vlan_id)
|
|
||||||
{
|
|
||||||
struct vlan_entry *vlan;
|
|
||||||
|
|
||||||
pr_debug("bond: %s, vlan id %d\n",
|
|
||||||
(bond ? bond->dev->name : "None"), vlan_id);
|
|
||||||
|
|
||||||
vlan = kzalloc(sizeof(struct vlan_entry), GFP_KERNEL);
|
|
||||||
if (!vlan)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&vlan->vlan_list);
|
|
||||||
vlan->vlan_id = vlan_id;
|
|
||||||
|
|
||||||
write_lock_bh(&bond->lock);
|
|
||||||
|
|
||||||
list_add_tail(&vlan->vlan_list, &bond->vlan_list);
|
|
||||||
|
|
||||||
write_unlock_bh(&bond->lock);
|
|
||||||
|
|
||||||
pr_debug("added VLAN ID %d on bond %s\n", vlan_id, bond->dev->name);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* bond_del_vlan - delete a vlan id from bond
|
|
||||||
* @bond: bond that got the notification
|
|
||||||
* @vlan_id: the vlan id to delete
|
|
||||||
*
|
|
||||||
* returns -ENODEV if @vlan_id was not found in @bond.
|
|
||||||
*/
|
|
||||||
static int bond_del_vlan(struct bonding *bond, unsigned short vlan_id)
|
|
||||||
{
|
|
||||||
struct vlan_entry *vlan;
|
|
||||||
int res = -ENODEV;
|
|
||||||
|
|
||||||
pr_debug("bond: %s, vlan id %d\n", bond->dev->name, vlan_id);
|
|
||||||
|
|
||||||
block_netpoll_tx();
|
|
||||||
write_lock_bh(&bond->lock);
|
|
||||||
|
|
||||||
list_for_each_entry(vlan, &bond->vlan_list, vlan_list) {
|
|
||||||
if (vlan->vlan_id == vlan_id) {
|
|
||||||
list_del(&vlan->vlan_list);
|
|
||||||
|
|
||||||
if (bond_is_lb(bond))
|
|
||||||
bond_alb_clear_vlan(bond, vlan_id);
|
|
||||||
|
|
||||||
pr_debug("removed VLAN ID %d from bond %s\n",
|
|
||||||
vlan_id, bond->dev->name);
|
|
||||||
|
|
||||||
kfree(vlan);
|
|
||||||
|
|
||||||
res = 0;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pr_debug("couldn't find VLAN ID %d in bond %s\n",
|
|
||||||
vlan_id, bond->dev->name);
|
|
||||||
|
|
||||||
out:
|
|
||||||
write_unlock_bh(&bond->lock);
|
|
||||||
unblock_netpoll_tx();
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* bond_next_vlan - safely skip to the next item in the vlans list.
|
|
||||||
* @bond: the bond we're working on
|
|
||||||
* @curr: item we're advancing from
|
|
||||||
*
|
|
||||||
* Returns %NULL if list is empty, bond->next_vlan if @curr is %NULL,
|
|
||||||
* or @curr->next otherwise (even if it is @curr itself again).
|
|
||||||
*
|
|
||||||
* Caller must hold bond->lock
|
|
||||||
*/
|
|
||||||
struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
|
|
||||||
{
|
|
||||||
struct vlan_entry *next, *last;
|
|
||||||
|
|
||||||
if (list_empty(&bond->vlan_list))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (!curr) {
|
|
||||||
next = list_entry(bond->vlan_list.next,
|
|
||||||
struct vlan_entry, vlan_list);
|
|
||||||
} else {
|
|
||||||
last = list_entry(bond->vlan_list.prev,
|
|
||||||
struct vlan_entry, vlan_list);
|
|
||||||
if (last == curr) {
|
|
||||||
next = list_entry(bond->vlan_list.next,
|
|
||||||
struct vlan_entry, vlan_list);
|
|
||||||
} else {
|
|
||||||
next = list_entry(curr->vlan_list.next,
|
|
||||||
struct vlan_entry, vlan_list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bond_dev_queue_xmit - Prepare skb for xmit.
|
* bond_dev_queue_xmit - Prepare skb for xmit.
|
||||||
*
|
*
|
||||||
@ -451,13 +341,6 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
|
|||||||
goto unwind;
|
goto unwind;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = bond_add_vlan(bond, vid);
|
|
||||||
if (res) {
|
|
||||||
pr_err("%s: Error: Failed to add vlan id %d\n",
|
|
||||||
bond_dev->name, vid);
|
|
||||||
goto unwind;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
unwind:
|
unwind:
|
||||||
@ -478,17 +361,12 @@ static int bond_vlan_rx_kill_vid(struct net_device *bond_dev,
|
|||||||
{
|
{
|
||||||
struct bonding *bond = netdev_priv(bond_dev);
|
struct bonding *bond = netdev_priv(bond_dev);
|
||||||
struct slave *slave;
|
struct slave *slave;
|
||||||
int res;
|
|
||||||
|
|
||||||
bond_for_each_slave(bond, slave)
|
bond_for_each_slave(bond, slave)
|
||||||
vlan_vid_del(slave->dev, proto, vid);
|
vlan_vid_del(slave->dev, proto, vid);
|
||||||
|
|
||||||
res = bond_del_vlan(bond, vid);
|
if (bond_is_lb(bond))
|
||||||
if (res) {
|
bond_alb_clear_vlan(bond, vid);
|
||||||
pr_err("%s: Error: Failed to remove vlan id %d\n",
|
|
||||||
bond_dev->name, vid);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -4143,7 +4021,6 @@ static void bond_setup(struct net_device *bond_dev)
|
|||||||
|
|
||||||
/* Initialize pointers */
|
/* Initialize pointers */
|
||||||
bond->dev = bond_dev;
|
bond->dev = bond_dev;
|
||||||
INIT_LIST_HEAD(&bond->vlan_list);
|
|
||||||
|
|
||||||
/* Initialize the device entry points */
|
/* Initialize the device entry points */
|
||||||
ether_setup(bond_dev);
|
ether_setup(bond_dev);
|
||||||
@ -4196,7 +4073,6 @@ static void bond_uninit(struct net_device *bond_dev)
|
|||||||
{
|
{
|
||||||
struct bonding *bond = netdev_priv(bond_dev);
|
struct bonding *bond = netdev_priv(bond_dev);
|
||||||
struct slave *slave, *tmp_slave;
|
struct slave *slave, *tmp_slave;
|
||||||
struct vlan_entry *vlan, *tmp;
|
|
||||||
|
|
||||||
bond_netpoll_cleanup(bond_dev);
|
bond_netpoll_cleanup(bond_dev);
|
||||||
|
|
||||||
@ -4208,11 +4084,6 @@ static void bond_uninit(struct net_device *bond_dev)
|
|||||||
list_del(&bond->bond_list);
|
list_del(&bond->bond_list);
|
||||||
|
|
||||||
bond_debug_unregister(bond);
|
bond_debug_unregister(bond);
|
||||||
|
|
||||||
list_for_each_entry_safe(vlan, tmp, &bond->vlan_list, vlan_list) {
|
|
||||||
list_del(&vlan->vlan_list);
|
|
||||||
kfree(vlan);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------- Module initialization ---------------------------*/
|
/*------------------------- Module initialization ---------------------------*/
|
||||||
|
@ -185,11 +185,6 @@ struct bond_parm_tbl {
|
|||||||
|
|
||||||
#define BOND_MAX_MODENAME_LEN 20
|
#define BOND_MAX_MODENAME_LEN 20
|
||||||
|
|
||||||
struct vlan_entry {
|
|
||||||
struct list_head vlan_list;
|
|
||||||
unsigned short vlan_id;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct slave {
|
struct slave {
|
||||||
struct net_device *dev; /* first - useful for panic debug */
|
struct net_device *dev; /* first - useful for panic debug */
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
@ -254,7 +249,6 @@ struct bonding {
|
|||||||
struct ad_bond_info ad_info;
|
struct ad_bond_info ad_info;
|
||||||
struct alb_bond_info alb_info;
|
struct alb_bond_info alb_info;
|
||||||
struct bond_params params;
|
struct bond_params params;
|
||||||
struct list_head vlan_list;
|
|
||||||
struct workqueue_struct *wq;
|
struct workqueue_struct *wq;
|
||||||
struct delayed_work mii_work;
|
struct delayed_work mii_work;
|
||||||
struct delayed_work arp_work;
|
struct delayed_work arp_work;
|
||||||
|
Loading…
Reference in New Issue
Block a user