stp_proto
struct stp_proto proto;
int stp_proto_register(const struct stp_proto *proto);
void stp_proto_unregister(const struct stp_proto *proto);
void (*rcv)(const struct stp_proto *, struct sk_buff *,
static void garp_pdu_rcv(const struct stp_proto *proto, struct sk_buff *skb,
static const struct stp_proto __rcu *garp_protos[GARP_ADDR_RANGE + 1] __read_mostly;
static const struct stp_proto __rcu *stp_proto __read_mostly;
const struct stp_proto *proto;
proto = rcu_dereference(stp_proto);
int stp_proto_register(const struct stp_proto *proto)
rcu_assign_pointer(stp_proto, proto);
void stp_proto_unregister(const struct stp_proto *proto)
RCU_INIT_POINTER(stp_proto, NULL);
static const struct stp_proto br_stp_proto = {
struct stp_proto;
void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb,
void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb,