ice: add tracepoints for the switchdev bridge
Add tracepoints for the following events: - Add FDB entry - Delete FDB entry - Create bridge VLAN - Cleanup bridge VLAN - Link port to the bridge - Unlink port from the bridge Signed-off-by: Pawel Chmielewski <pawel.chmielewski@intel.com> Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com> Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
e42c6e0c90
commit
d129c2a245
@ -7,6 +7,7 @@
|
||||
#include "ice_switch.h"
|
||||
#include "ice_vlan.h"
|
||||
#include "ice_vf_vsi_vlan_ops.h"
|
||||
#include "ice_trace.h"
|
||||
|
||||
#define ICE_ESW_BRIDGE_UPDATE_INTERVAL msecs_to_jiffies(1000)
|
||||
|
||||
@ -353,6 +354,7 @@ ice_eswitch_br_fdb_entry_find_and_delete(struct ice_esw_br *bridge,
|
||||
return;
|
||||
}
|
||||
|
||||
trace_ice_eswitch_br_fdb_entry_find_and_delete(fdb_entry);
|
||||
ice_eswitch_br_fdb_entry_notify_and_cleanup(bridge, fdb_entry);
|
||||
}
|
||||
|
||||
@ -422,6 +424,7 @@ ice_eswitch_br_fdb_entry_create(struct net_device *netdev,
|
||||
goto err_fdb_insert;
|
||||
|
||||
list_add(&fdb_entry->list, &bridge->fdb_list);
|
||||
trace_ice_eswitch_br_fdb_entry_create(fdb_entry);
|
||||
|
||||
ice_eswitch_br_fdb_offload_notify(netdev, mac, vid, event);
|
||||
|
||||
@ -597,6 +600,8 @@ ice_eswitch_br_vlan_cleanup(struct ice_esw_br_port *port,
|
||||
struct ice_esw_br_fdb_entry *fdb_entry, *tmp;
|
||||
struct ice_esw_br *bridge = port->bridge;
|
||||
|
||||
trace_ice_eswitch_br_vlan_cleanup(vlan);
|
||||
|
||||
list_for_each_entry_safe(fdb_entry, tmp, &bridge->fdb_list, list) {
|
||||
if (vlan->vid == fdb_entry->data.vid)
|
||||
ice_eswitch_br_fdb_entry_delete(bridge, fdb_entry);
|
||||
@ -686,6 +691,8 @@ ice_eswitch_br_vlan_create(u16 vid, u16 flags, struct ice_esw_br_port *port)
|
||||
if (err)
|
||||
goto err_insert;
|
||||
|
||||
trace_ice_eswitch_br_vlan_create(vlan);
|
||||
|
||||
return vlan;
|
||||
|
||||
err_insert:
|
||||
@ -1047,6 +1054,7 @@ ice_eswitch_br_port_unlink(struct ice_esw_br_offloads *br_offloads,
|
||||
|
||||
bridge = br_port->bridge;
|
||||
|
||||
trace_ice_eswitch_br_port_unlink(br_port);
|
||||
ice_eswitch_br_port_deinit(br_port->bridge, br_port);
|
||||
ice_eswitch_br_verify_deinit(br_offloads, bridge);
|
||||
|
||||
@ -1075,10 +1083,12 @@ ice_eswitch_br_port_link(struct ice_esw_br_offloads *br_offloads,
|
||||
struct ice_repr *repr = ice_netdev_to_repr(dev);
|
||||
|
||||
err = ice_eswitch_br_vf_repr_port_init(bridge, repr);
|
||||
trace_ice_eswitch_br_port_link(repr->br_port);
|
||||
} else {
|
||||
struct ice_pf *pf = ice_netdev_to_pf(dev);
|
||||
|
||||
err = ice_eswitch_br_uplink_port_init(bridge, pf);
|
||||
trace_ice_eswitch_br_port_link(pf->br_port);
|
||||
}
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Failed to init bridge port");
|
||||
|
@ -21,6 +21,7 @@
|
||||
#define _ICE_TRACE_H_
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
#include "ice_eswitch_br.h"
|
||||
|
||||
/* ice_trace() macro enables shared code to refer to trace points
|
||||
* like:
|
||||
@ -240,6 +241,95 @@ DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_fw_req);
|
||||
DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_fw_done);
|
||||
DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_complete);
|
||||
|
||||
DECLARE_EVENT_CLASS(ice_esw_br_fdb_template,
|
||||
TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
|
||||
TP_ARGS(fdb),
|
||||
TP_STRUCT__entry(__array(char, dev_name, IFNAMSIZ)
|
||||
__array(unsigned char, addr, ETH_ALEN)
|
||||
__field(u16, vid)
|
||||
__field(int, flags)),
|
||||
TP_fast_assign(strscpy(__entry->dev_name,
|
||||
netdev_name(fdb->dev),
|
||||
IFNAMSIZ);
|
||||
memcpy(__entry->addr, fdb->data.addr, ETH_ALEN);
|
||||
__entry->vid = fdb->data.vid;
|
||||
__entry->flags = fdb->flags;),
|
||||
TP_printk("net_device=%s addr=%pM vid=%u flags=%x",
|
||||
__entry->dev_name,
|
||||
__entry->addr,
|
||||
__entry->vid,
|
||||
__entry->flags)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_fdb_template,
|
||||
ice_eswitch_br_fdb_entry_create,
|
||||
TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
|
||||
TP_ARGS(fdb)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_fdb_template,
|
||||
ice_eswitch_br_fdb_entry_find_and_delete,
|
||||
TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
|
||||
TP_ARGS(fdb)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(ice_esw_br_vlan_template,
|
||||
TP_PROTO(struct ice_esw_br_vlan *vlan),
|
||||
TP_ARGS(vlan),
|
||||
TP_STRUCT__entry(__field(u16, vid)
|
||||
__field(u16, flags)),
|
||||
TP_fast_assign(__entry->vid = vlan->vid;
|
||||
__entry->flags = vlan->flags;),
|
||||
TP_printk("vid=%u flags=%x",
|
||||
__entry->vid,
|
||||
__entry->flags)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_vlan_template,
|
||||
ice_eswitch_br_vlan_create,
|
||||
TP_PROTO(struct ice_esw_br_vlan *vlan),
|
||||
TP_ARGS(vlan)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_vlan_template,
|
||||
ice_eswitch_br_vlan_cleanup,
|
||||
TP_PROTO(struct ice_esw_br_vlan *vlan),
|
||||
TP_ARGS(vlan)
|
||||
);
|
||||
|
||||
#define ICE_ESW_BR_PORT_NAME_L 16
|
||||
|
||||
DECLARE_EVENT_CLASS(ice_esw_br_port_template,
|
||||
TP_PROTO(struct ice_esw_br_port *port),
|
||||
TP_ARGS(port),
|
||||
TP_STRUCT__entry(__field(u16, vport_num)
|
||||
__array(char, port_type, ICE_ESW_BR_PORT_NAME_L)),
|
||||
TP_fast_assign(__entry->vport_num = port->vsi_idx;
|
||||
if (port->type == ICE_ESWITCH_BR_UPLINK_PORT)
|
||||
strscpy(__entry->port_type,
|
||||
"Uplink",
|
||||
ICE_ESW_BR_PORT_NAME_L);
|
||||
else
|
||||
strscpy(__entry->port_type,
|
||||
"VF Representor",
|
||||
ICE_ESW_BR_PORT_NAME_L);),
|
||||
TP_printk("vport_num=%u port type=%s",
|
||||
__entry->vport_num,
|
||||
__entry->port_type)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_port_template,
|
||||
ice_eswitch_br_port_link,
|
||||
TP_PROTO(struct ice_esw_br_port *port),
|
||||
TP_ARGS(port)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ice_esw_br_port_template,
|
||||
ice_eswitch_br_port_unlink,
|
||||
TP_PROTO(struct ice_esw_br_port *port),
|
||||
TP_ARGS(port)
|
||||
);
|
||||
|
||||
/* End tracepoints */
|
||||
|
||||
#endif /* _ICE_TRACE_H_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user