#undef TRACE_SYSTEM #define TRACE_SYSTEM intel-sst /* * The TRACE_SYSTEM_VAR defaults to TRACE_SYSTEM, but must be a * legitimate C variable. It is not exported to user space. */ #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR intel_sst #if !defined(_TRACE_INTEL_SST_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_INTEL_SST_H #include #include #include DECLARE_EVENT_CLASS(sst_ipc_msg, TP_PROTO(unsigned int val), TP_ARGS(val), TP_STRUCT__entry( __field( unsigned int, val ) ), TP_fast_assign( __entry->val = val; ), TP_printk("0x%8.8x", (unsigned int)__entry->val) ); DEFINE_EVENT(sst_ipc_msg, sst_ipc_msg_tx, TP_PROTO(unsigned int val), TP_ARGS(val) ); DEFINE_EVENT(sst_ipc_msg, sst_ipc_msg_rx, TP_PROTO(unsigned int val), TP_ARGS(val) ); DECLARE_EVENT_CLASS(sst_ipc_mailbox, TP_PROTO(unsigned int offset, unsigned int val), TP_ARGS(offset, val), TP_STRUCT__entry( __field( unsigned int, offset ) __field( unsigned int, val ) ), TP_fast_assign( __entry->offset = offset; __entry->val = val; ), TP_printk(" 0x%4.4x = 0x%8.8x", (unsigned int)__entry->offset, (unsigned int)__entry->val) ); DEFINE_EVENT(sst_ipc_mailbox, sst_ipc_inbox_rdata, TP_PROTO(unsigned int offset, unsigned int val), TP_ARGS(offset, val) ); DEFINE_EVENT(sst_ipc_mailbox, sst_ipc_inbox_wdata, TP_PROTO(unsigned int offset, unsigned int val), TP_ARGS(offset, val) ); DEFINE_EVENT(sst_ipc_mailbox, sst_ipc_outbox_rdata, TP_PROTO(unsigned int offset, unsigned int val), TP_ARGS(offset, val) ); DEFINE_EVENT(sst_ipc_mailbox, sst_ipc_outbox_wdata, TP_PROTO(unsigned int offset, unsigned int val), TP_ARGS(offset, val) ); DECLARE_EVENT_CLASS(sst_ipc_mailbox_info, TP_PROTO(unsigned int size), TP_ARGS(size), TP_STRUCT__entry( __field( unsigned int, size ) ), TP_fast_assign( __entry->size = size; ), TP_printk("Mailbox bytes 0x%8.8x", (unsigned int)__entry->size) ); DEFINE_EVENT(sst_ipc_mailbox_info, sst_ipc_inbox_read, TP_PROTO(unsigned int size), TP_ARGS(size) ); DEFINE_EVENT(sst_ipc_mailbox_info, sst_ipc_inbox_write, TP_PROTO(unsigned int size), TP_ARGS(size) ); DEFINE_EVENT(sst_ipc_mailbox_info, sst_ipc_outbox_read, TP_PROTO(unsigned int size), TP_ARGS(size) ); DEFINE_EVENT(sst_ipc_mailbox_info, sst_ipc_outbox_write, TP_PROTO(unsigned int size), TP_ARGS(size) ); #endif /* _TRACE_SST_H */ /* This part must be outside protection */ #include ''/>
AgeCommit message (Collapse)AuthorFilesLines
2017-02-03vxlan: support fdb and learning in COLLECT_METADATA modeRoopa Prabhu1-71/+125
Vxlan COLLECT_METADATA mode today solves the per-vni netdev scalability problem in l3 networks. It expects all forwarding information to be present in dst_metadata. This patch series enhances collect metadata mode to include the case where only vni is present in dst_metadata, and the vxlan driver can then use the rest of the forwarding information datbase to make forwarding decisions. There is no change to default COLLECT_METADATA behaviour. These changes only apply to COLLECT_METADATA when used with the bridging use-case with a special dst_metadata tunnel info flag (eg: where vxlan device is part of a bridge). For all this to work, the vxlan driver will need to now support a single fdb table hashed by mac + vni. This series essentially makes this happen. use-case and workflow: vxlan collect metadata device participates in bridging vlan to vn-segments. Bridge driver above the vxlan device, sends the vni corresponding to the vlan in the dst_metadata. vxlan driver will lookup forwarding database with (mac + vni) for the required remote destination information to forward the packet. Changes introduced by this patch: - allow learning and forwarding database state in vxlan netdev in COLLECT_METADATA mode. Current behaviour is not changed by default. tunnel info flag IP_TUNNEL_INFO_BRIDGE is used to support the new bridge friendly mode. - A single fdb table hashed by (mac, vni) to allow fdb entries with multiple vnis in the same fdb table - rx path already has the vni - tx path expects a vni in the packet with dst_metadata - prior to this series, fdb remote_dsts carried remote vni and the vxlan device carrying the fdb table represented the source vni. With the vxlan device now representing multiple vnis, this patch adds a src vni attribute to the fdb entry. The remote vni already uses NDA_VNI attribute. This patch introduces NDA_SRC_VNI netlink attribute to represent the src vni in a multi vni fdb table. iproute2 example (patched and pruned iproute2 output to just show relevant fdb entries): example shows same host mac learnt on two vni's. before (netdev per vni): $bridge fdb show | grep "00:02:00:00:00:03" 00:02:00:00:00:03 dev vxlan1001 dst 12.0.0.8 self 00:02:00:00:00:03 dev vxlan1000 dst 12.0.0.8 self after this patch with collect metadata in bridged mode (single netdev): $bridge fdb show | grep "00:02:00:00:00:03" 00:02:00:00:00:03 dev vxlan0 src_vni 1001 dst 12.0.0.8 self 00:02:00:00:00:03 dev vxlan0 src_vni 1000 dst 12.0.0.8 self Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>