Commit 639ac8ce authored by Michal Swiatkowski's avatar Michal Swiatkowski Committed by Tony Nguyen
Browse files

ice: store representor ID in bridge port



It is used to get representor structure during cleaning.

Reviewed-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Tested-by: default avatarSujai Buvaneswaran <sujai.buvaneswaran@intel.com>
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent 32266073
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -896,7 +896,8 @@ ice_eswitch_br_port_deinit(struct ice_esw_br *bridge,
	if (br_port->type == ICE_ESWITCH_BR_UPLINK_PORT && vsi->back) {
		vsi->back->br_port = NULL;
	} else {
		struct ice_repr *repr = ice_repr_get_by_vsi(vsi);
		struct ice_repr *repr =
			ice_repr_get(vsi->back, br_port->repr_id);

		if (repr)
			repr->br_port = NULL;
@@ -937,6 +938,7 @@ ice_eswitch_br_vf_repr_port_init(struct ice_esw_br *bridge,
	br_port->vsi = repr->src_vsi;
	br_port->vsi_idx = br_port->vsi->idx;
	br_port->type = ICE_ESWITCH_BR_VF_REPR_PORT;
	br_port->repr_id = repr->id;
	repr->br_port = br_port;

	err = xa_insert(&bridge->ports, br_port->vsi_idx, br_port, GFP_KERNEL);
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ struct ice_esw_br_port {
	enum ice_esw_br_port_type type;
	u16 vsi_idx;
	u16 pvid;
	u32 repr_id;
	struct xarray vlans;
};

+2 −5
Original line number Diff line number Diff line
@@ -415,12 +415,9 @@ struct ice_repr *ice_repr_add_vf(struct ice_vf *vf)
	return ERR_PTR(err);
}

struct ice_repr *ice_repr_get_by_vsi(struct ice_vsi *vsi)
struct ice_repr *ice_repr_get(struct ice_pf *pf, u32 id)
{
	if (!vsi->vf)
		return NULL;

	return xa_load(&vsi->back->eswitch.reprs, vsi->vf->repr_id);
	return xa_load(&pf->eswitch.reprs, id);
}

/**
+1 −2
Original line number Diff line number Diff line
@@ -35,9 +35,8 @@ void ice_repr_stop_tx_queues(struct ice_repr *repr);
struct ice_repr *ice_netdev_to_repr(const struct net_device *netdev);
bool ice_is_port_repr_netdev(const struct net_device *netdev);

struct ice_repr *ice_repr_get_by_vsi(struct ice_vsi *vsi);

void ice_repr_inc_tx_stats(struct ice_repr *repr, unsigned int len,
			   int xmit_status);
void ice_repr_inc_rx_stats(struct net_device *netdev, unsigned int len);
struct ice_repr *ice_repr_get(struct ice_pf *pf, u32 id);
#endif