Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM openvswitch
0004 
0005 #if !defined(_TRACE_OPENVSWITCH_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_OPENVSWITCH_H
0007 
0008 #include <linux/tracepoint.h>
0009 
0010 #include "datapath.h"
0011 
0012 TRACE_EVENT(ovs_do_execute_action,
0013 
0014     TP_PROTO(struct datapath *dp, struct sk_buff *skb,
0015          struct sw_flow_key *key, const struct nlattr *a, int rem),
0016 
0017     TP_ARGS(dp, skb, key, a, rem),
0018 
0019     TP_STRUCT__entry(
0020         __field(    void *,     dpaddr          )
0021         __string(   dp_name,    ovs_dp_name(dp)     )
0022         __string(   dev_name,   skb->dev->name      )
0023         __field(    void *,     skbaddr         )
0024         __field(    unsigned int,   len         )
0025         __field(    unsigned int,   data_len        )
0026         __field(    unsigned int,   truesize        )
0027         __field(    u8,     nr_frags        )
0028         __field(    u16,        gso_size        )
0029         __field(    u16,        gso_type        )
0030         __field(    u32,        ovs_flow_hash       )
0031         __field(    u32,        recirc_id       )
0032         __field(    void *,     keyaddr         )
0033         __field(    u16,        key_eth_type        )
0034         __field(    u8,     key_ct_state        )
0035         __field(    u8,     key_ct_orig_proto   )
0036         __field(    u16,        key_ct_zone     )
0037         __field(    unsigned int,   flow_key_valid      )
0038         __field(    u8,     action_type     )
0039         __field(    unsigned int,   action_len      )
0040         __field(    void *,     action_data     )
0041         __field(    u8,     is_last         )
0042     ),
0043 
0044     TP_fast_assign(
0045         __entry->dpaddr = dp;
0046         __assign_str(dp_name, ovs_dp_name(dp));
0047         __assign_str(dev_name, skb->dev->name);
0048         __entry->skbaddr = skb;
0049         __entry->len = skb->len;
0050         __entry->data_len = skb->data_len;
0051         __entry->truesize = skb->truesize;
0052         __entry->nr_frags = skb_shinfo(skb)->nr_frags;
0053         __entry->gso_size = skb_shinfo(skb)->gso_size;
0054         __entry->gso_type = skb_shinfo(skb)->gso_type;
0055         __entry->ovs_flow_hash = key->ovs_flow_hash;
0056         __entry->recirc_id = key->recirc_id;
0057         __entry->keyaddr = key;
0058         __entry->key_eth_type = key->eth.type;
0059         __entry->key_ct_state = key->ct_state;
0060         __entry->key_ct_orig_proto = key->ct_orig_proto;
0061         __entry->key_ct_zone = key->ct_zone;
0062         __entry->flow_key_valid = !(key->mac_proto & SW_FLOW_KEY_INVALID);
0063         __entry->action_type = nla_type(a);
0064         __entry->action_len = nla_len(a);
0065         __entry->action_data = nla_data(a);
0066         __entry->is_last = nla_is_last(a, rem);
0067     ),
0068 
0069     TP_printk("dpaddr=%p dp_name=%s dev=%s skbaddr=%p len=%u data_len=%u truesize=%u nr_frags=%d gso_size=%d gso_type=%#x ovs_flow_hash=0x%08x recirc_id=0x%08x keyaddr=%p eth_type=0x%04x ct_state=%02x ct_orig_proto=%02x ct_Zone=%04x flow_key_valid=%d action_type=%u action_len=%u action_data=%p is_last=%d",
0070           __entry->dpaddr, __get_str(dp_name), __get_str(dev_name),
0071           __entry->skbaddr, __entry->len, __entry->data_len,
0072           __entry->truesize, __entry->nr_frags, __entry->gso_size,
0073           __entry->gso_type, __entry->ovs_flow_hash,
0074           __entry->recirc_id, __entry->keyaddr, __entry->key_eth_type,
0075           __entry->key_ct_state, __entry->key_ct_orig_proto,
0076           __entry->key_ct_zone,
0077           __entry->flow_key_valid,
0078           __entry->action_type, __entry->action_len,
0079           __entry->action_data, __entry->is_last)
0080 );
0081 
0082 TRACE_EVENT(ovs_dp_upcall,
0083 
0084     TP_PROTO(struct datapath *dp, struct sk_buff *skb,
0085          const struct sw_flow_key *key,
0086          const struct dp_upcall_info *upcall_info),
0087 
0088     TP_ARGS(dp, skb, key, upcall_info),
0089 
0090     TP_STRUCT__entry(
0091         __field(    void *,     dpaddr          )
0092         __string(   dp_name,    ovs_dp_name(dp)     )
0093         __string(   dev_name,   skb->dev->name      )
0094         __field(    void *,     skbaddr         )
0095         __field(    unsigned int,   len         )
0096         __field(    unsigned int,   data_len        )
0097         __field(    unsigned int,   truesize        )
0098         __field(    u8,     nr_frags        )
0099         __field(    u16,        gso_size        )
0100         __field(    u16,        gso_type        )
0101         __field(    u32,        ovs_flow_hash       )
0102         __field(    u32,        recirc_id       )
0103         __field(    const void *,   keyaddr         )
0104         __field(    u16,        key_eth_type        )
0105         __field(    u8,     key_ct_state        )
0106         __field(    u8,     key_ct_orig_proto   )
0107         __field(    u16,        key_ct_zone     )
0108         __field(    unsigned int,   flow_key_valid      )
0109         __field(    u8,     upcall_cmd      )
0110         __field(    u32,        upcall_port     )
0111         __field(    u16,        upcall_mru      )
0112     ),
0113 
0114     TP_fast_assign(
0115         __entry->dpaddr = dp;
0116         __assign_str(dp_name, ovs_dp_name(dp));
0117         __assign_str(dev_name, skb->dev->name);
0118         __entry->skbaddr = skb;
0119         __entry->len = skb->len;
0120         __entry->data_len = skb->data_len;
0121         __entry->truesize = skb->truesize;
0122         __entry->nr_frags = skb_shinfo(skb)->nr_frags;
0123         __entry->gso_size = skb_shinfo(skb)->gso_size;
0124         __entry->gso_type = skb_shinfo(skb)->gso_type;
0125         __entry->ovs_flow_hash = key->ovs_flow_hash;
0126         __entry->recirc_id = key->recirc_id;
0127         __entry->keyaddr = key;
0128         __entry->key_eth_type = key->eth.type;
0129         __entry->key_ct_state = key->ct_state;
0130         __entry->key_ct_orig_proto = key->ct_orig_proto;
0131         __entry->key_ct_zone = key->ct_zone;
0132         __entry->flow_key_valid =  !(key->mac_proto & SW_FLOW_KEY_INVALID);
0133         __entry->upcall_cmd = upcall_info->cmd;
0134         __entry->upcall_port = upcall_info->portid;
0135         __entry->upcall_mru = upcall_info->mru;
0136     ),
0137 
0138     TP_printk("dpaddr=%p dp_name=%s dev=%s skbaddr=%p len=%u data_len=%u truesize=%u nr_frags=%d gso_size=%d gso_type=%#x ovs_flow_hash=0x%08x recirc_id=0x%08x keyaddr=%p eth_type=0x%04x ct_state=%02x ct_orig_proto=%02x ct_zone=%04x flow_key_valid=%d upcall_cmd=%u upcall_port=%u upcall_mru=%u",
0139           __entry->dpaddr, __get_str(dp_name), __get_str(dev_name),
0140           __entry->skbaddr, __entry->len, __entry->data_len,
0141           __entry->truesize, __entry->nr_frags, __entry->gso_size,
0142           __entry->gso_type, __entry->ovs_flow_hash,
0143           __entry->recirc_id, __entry->keyaddr, __entry->key_eth_type,
0144           __entry->key_ct_state, __entry->key_ct_orig_proto,
0145           __entry->key_ct_zone,
0146           __entry->flow_key_valid,
0147           __entry->upcall_cmd, __entry->upcall_port,
0148           __entry->upcall_mru)
0149 );
0150 
0151 #endif /* _TRACE_OPENVSWITCH_H */
0152 
0153 /* This part must be outside protection */
0154 #undef TRACE_INCLUDE_PATH
0155 #define TRACE_INCLUDE_PATH .
0156 #undef TRACE_INCLUDE_FILE
0157 #define TRACE_INCLUDE_FILE openvswitch_trace
0158 #include <trace/define_trace.h>