macvlan: Rename fwd_priv to accel_priv and add accessor function
This change renames the fwd_priv member to accel_priv as this more accurately reflects the actual purpose of this value. In addition I am adding an accessor which will allow us to further abstract this in the future if needed. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
b056b83c06
commit
7d775f6347
|
@ -5398,10 +5398,9 @@ static int ixgbe_fwd_ring_up(struct net_device *vdev,
|
|||
static int ixgbe_upper_dev_walk(struct net_device *upper, void *data)
|
||||
{
|
||||
if (netif_is_macvlan(upper)) {
|
||||
struct macvlan_dev *dfwd = netdev_priv(upper);
|
||||
struct ixgbe_fwd_adapter *vadapter = dfwd->fwd_priv;
|
||||
struct ixgbe_fwd_adapter *vadapter = macvlan_accel_priv(upper);
|
||||
|
||||
if (dfwd->fwd_priv)
|
||||
if (vadapter)
|
||||
ixgbe_fwd_ring_up(upper, vadapter);
|
||||
}
|
||||
|
||||
|
@ -8983,13 +8982,12 @@ struct upper_walk_data {
|
|||
static int get_macvlan_queue(struct net_device *upper, void *_data)
|
||||
{
|
||||
if (netif_is_macvlan(upper)) {
|
||||
struct macvlan_dev *dfwd = netdev_priv(upper);
|
||||
struct ixgbe_fwd_adapter *vadapter = dfwd->fwd_priv;
|
||||
struct ixgbe_fwd_adapter *vadapter = macvlan_accel_priv(upper);
|
||||
struct upper_walk_data *data = _data;
|
||||
struct ixgbe_adapter *adapter = data->adapter;
|
||||
int ifindex = data->ifindex;
|
||||
|
||||
if (vadapter && vadapter->netdev->ifindex == ifindex) {
|
||||
if (vadapter && upper->ifindex == ifindex) {
|
||||
data->queue = adapter->rx_ring[vadapter->rx_base_queue]->reg_idx;
|
||||
data->action = data->queue;
|
||||
return 1;
|
||||
|
|
|
@ -559,9 +559,9 @@ static netdev_tx_t macvlan_start_xmit(struct sk_buff *skb,
|
|||
if (unlikely(netpoll_tx_running(dev)))
|
||||
return macvlan_netpoll_send_skb(vlan, skb);
|
||||
|
||||
if (vlan->fwd_priv) {
|
||||
if (vlan->accel_priv) {
|
||||
skb->dev = vlan->lowerdev;
|
||||
ret = dev_queue_xmit_accel(skb, vlan->fwd_priv);
|
||||
ret = dev_queue_xmit_accel(skb, vlan->accel_priv);
|
||||
} else {
|
||||
ret = macvlan_queue_xmit(skb, dev);
|
||||
}
|
||||
|
@ -613,16 +613,23 @@ static int macvlan_open(struct net_device *dev)
|
|||
goto hash_add;
|
||||
}
|
||||
|
||||
err = -EBUSY;
|
||||
if (macvlan_addr_busy(vlan->port, dev->dev_addr))
|
||||
goto out;
|
||||
|
||||
/* Attempt to populate accel_priv which is used to offload the L2
|
||||
* forwarding requests for unicast packets.
|
||||
*/
|
||||
if (lowerdev->features & NETIF_F_HW_L2FW_DOFFLOAD) {
|
||||
vlan->fwd_priv =
|
||||
vlan->accel_priv =
|
||||
lowerdev->netdev_ops->ndo_dfwd_add_station(lowerdev, dev);
|
||||
|
||||
/* If we get a NULL pointer back, or if we get an error
|
||||
* then we should just fall through to the non accelerated path
|
||||
*/
|
||||
if (IS_ERR_OR_NULL(vlan->fwd_priv)) {
|
||||
vlan->fwd_priv = NULL;
|
||||
} else
|
||||
if (IS_ERR_OR_NULL(vlan->accel_priv))
|
||||
vlan->accel_priv = NULL;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -655,10 +662,10 @@ static int macvlan_open(struct net_device *dev)
|
|||
del_unicast:
|
||||
dev_uc_del(lowerdev, dev->dev_addr);
|
||||
out:
|
||||
if (vlan->fwd_priv) {
|
||||
if (vlan->accel_priv) {
|
||||
lowerdev->netdev_ops->ndo_dfwd_del_station(lowerdev,
|
||||
vlan->fwd_priv);
|
||||
vlan->fwd_priv = NULL;
|
||||
vlan->accel_priv);
|
||||
vlan->accel_priv = NULL;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
@ -668,10 +675,10 @@ static int macvlan_stop(struct net_device *dev)
|
|||
struct macvlan_dev *vlan = netdev_priv(dev);
|
||||
struct net_device *lowerdev = vlan->lowerdev;
|
||||
|
||||
if (vlan->fwd_priv) {
|
||||
if (vlan->accel_priv) {
|
||||
lowerdev->netdev_ops->ndo_dfwd_del_station(lowerdev,
|
||||
vlan->fwd_priv);
|
||||
vlan->fwd_priv = NULL;
|
||||
vlan->accel_priv);
|
||||
vlan->accel_priv = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ struct macvlan_dev {
|
|||
struct hlist_node hlist;
|
||||
struct macvlan_port *port;
|
||||
struct net_device *lowerdev;
|
||||
void *fwd_priv;
|
||||
void *accel_priv;
|
||||
struct vlan_pcpu_stats __percpu *pcpu_stats;
|
||||
|
||||
DECLARE_BITMAP(mc_filter, MACVLAN_MC_FILTER_SZ);
|
||||
|
@ -86,4 +86,10 @@ macvlan_dev_real_dev(const struct net_device *dev)
|
|||
}
|
||||
#endif
|
||||
|
||||
static inline void *macvlan_accel_priv(struct net_device *dev)
|
||||
{
|
||||
struct macvlan_dev *macvlan = netdev_priv(dev);
|
||||
|
||||
return macvlan->accel_priv;
|
||||
}
|
||||
#endif /* _LINUX_IF_MACVLAN_H */
|
||||
|
|
Loading…
Reference in New Issue