Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51b5bd19 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'bridge-fdb-dump-filter'



Jamal Hadi Salim says:

====================
bridge: fdb dumping takes a filter device

v7:
Vxlan driver was not updated with new API. Found by DaveM

v6:
Missed checkpatch > 80 chars lines found by Varka Bhadram

v5:
 Embarassing qlnic compile failure found by DaveM

v4:
 Request from DaveM to use proper comment tagging and remove if-stmnt braces

V3:
 Suggestion from Eric D. to use for_each_netdev
 Suggestion from Stephen H. to reduce level of indentation

V2:
Suggestions from Vlad
 Get rid of rcu read lock since rtnl_lock is being held
 simplify for readability
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 69b4b7a4 5e6d2435
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -7095,13 +7095,14 @@ static int i40e_ndo_fdb_del(struct ndmsg *ndm,
static int i40e_ndo_fdb_dump(struct sk_buff *skb,
static int i40e_ndo_fdb_dump(struct sk_buff *skb,
			     struct netlink_callback *cb,
			     struct netlink_callback *cb,
			     struct net_device *dev,
			     struct net_device *dev,
			     struct net_device *filter_dev,
			     int idx)
			     int idx)
{
{
	struct i40e_netdev_priv *np = netdev_priv(dev);
	struct i40e_netdev_priv *np = netdev_priv(dev);
	struct i40e_pf *pf = np->vsi->back;
	struct i40e_pf *pf = np->vsi->back;


	if (pf->flags & I40E_FLAG_SRIOV_ENABLED)
	if (pf->flags & I40E_FLAG_SRIOV_ENABLED)
		idx = ndo_dflt_fdb_dump(skb, cb, dev, idx);
		idx = ndo_dflt_fdb_dump(skb, cb, dev, filter_dev, idx);


	return idx;
	return idx;
}
}
+4 −3
Original line number Original line Diff line number Diff line
@@ -427,16 +427,17 @@ static int qlcnic_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
}
}


static int qlcnic_fdb_dump(struct sk_buff *skb, struct netlink_callback *ncb,
static int qlcnic_fdb_dump(struct sk_buff *skb, struct netlink_callback *ncb,
			struct net_device *netdev, int idx)
			struct net_device *netdev,
			struct net_device *filter_dev, int idx)
{
{
	struct qlcnic_adapter *adapter = netdev_priv(netdev);
	struct qlcnic_adapter *adapter = netdev_priv(netdev);


	if (!adapter->fdb_mac_learn)
	if (!adapter->fdb_mac_learn)
		return ndo_dflt_fdb_dump(skb, ncb, netdev, idx);
		return ndo_dflt_fdb_dump(skb, ncb, netdev, filter_dev, idx);


	if ((adapter->flags & QLCNIC_ESWITCH_ENABLED) ||
	if ((adapter->flags & QLCNIC_ESWITCH_ENABLED) ||
	    qlcnic_sriov_check(adapter))
	    qlcnic_sriov_check(adapter))
		idx = ndo_dflt_fdb_dump(skb, ncb, netdev, idx);
		idx = ndo_dflt_fdb_dump(skb, ncb, netdev, filter_dev, idx);


	return idx;
	return idx;
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -933,7 +933,8 @@ static int vxlan_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],


/* Dump forwarding table */
/* Dump forwarding table */
static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
			  struct net_device *dev, int idx)
			  struct net_device *dev,
			  struct net_device *filter_dev, int idx)
{
{
	struct vxlan_dev *vxlan = netdev_priv(dev);
	struct vxlan_dev *vxlan = netdev_priv(dev);
	unsigned int h;
	unsigned int h;
+3 −1
Original line number Original line Diff line number Diff line
@@ -943,7 +943,8 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
 *		      const unsigned char *addr)
 *		      const unsigned char *addr)
 *	Deletes the FDB entry from dev coresponding to addr.
 *	Deletes the FDB entry from dev coresponding to addr.
 * int (*ndo_fdb_dump)(struct sk_buff *skb, struct netlink_callback *cb,
 * int (*ndo_fdb_dump)(struct sk_buff *skb, struct netlink_callback *cb,
 *		       struct net_device *dev, int idx)
 *		       struct net_device *dev, struct net_device *filter_dev,
 *		       int idx)
 *	Used to add FDB entries to dump requests. Implementers should add
 *	Used to add FDB entries to dump requests. Implementers should add
 *	entries to skb and update idx with the number of entries.
 *	entries to skb and update idx with the number of entries.
 *
 *
@@ -1114,6 +1115,7 @@ struct net_device_ops {
	int			(*ndo_fdb_dump)(struct sk_buff *skb,
	int			(*ndo_fdb_dump)(struct sk_buff *skb,
						struct netlink_callback *cb,
						struct netlink_callback *cb,
						struct net_device *dev,
						struct net_device *dev,
						struct net_device *filter_dev,
						int idx);
						int idx);


	int			(*ndo_bridge_setlink)(struct net_device *dev,
	int			(*ndo_bridge_setlink)(struct net_device *dev,
+1 −0
Original line number Original line Diff line number Diff line
@@ -78,6 +78,7 @@ extern void __rtnl_unlock(void);
extern int ndo_dflt_fdb_dump(struct sk_buff *skb,
extern int ndo_dflt_fdb_dump(struct sk_buff *skb,
			     struct netlink_callback *cb,
			     struct netlink_callback *cb,
			     struct net_device *dev,
			     struct net_device *dev,
			     struct net_device *filter_dev,
			     int idx);
			     int idx);
extern int ndo_dflt_fdb_add(struct ndmsg *ndm,
extern int ndo_dflt_fdb_add(struct ndmsg *ndm,
			    struct nlattr *tb[],
			    struct nlattr *tb[],
Loading