#ifndef _NET_MRP_H
#define _NET_MRP_H
#define MRP_END_MARK 0x0
struct mrp_pdu_hdr {
u8 version;
};
struct mrp_msg_hdr {
u8 attrtype;
u8 attrlen;
};
struct mrp_vecattr_hdr {
__be16 lenflags;
unsigned char firstattrvalue[];
#define MRP_VECATTR_HDR_LEN_MASK cpu_to_be16(0x1FFF)
#define MRP_VECATTR_HDR_FLAG_LA cpu_to_be16(0x2000)
};
enum mrp_vecattr_event {
MRP_VECATTR_EVENT_NEW,
MRP_VECATTR_EVENT_JOIN_IN,
MRP_VECATTR_EVENT_IN,
MRP_VECATTR_EVENT_JOIN_MT,
MRP_VECATTR_EVENT_MT,
MRP_VECATTR_EVENT_LV,
__MRP_VECATTR_EVENT_MAX
};
struct mrp_skb_cb {
struct mrp_msg_hdr *mh;
struct mrp_vecattr_hdr *vah;
unsigned char attrvalue[];
};
static inline struct mrp_skb_cb *mrp_cb(struct sk_buff *skb)
{
BUILD_BUG_ON(sizeof(struct mrp_skb_cb) >
FIELD_SIZEOF(struct sk_buff, cb));
return (struct mrp_skb_cb *)skb->cb;
}
enum mrp_applicant_state {
MRP_APPLICANT_INVALID,
MRP_APPLICANT_VO,
MRP_APPLICANT_VP,
MRP_APPLICANT_VN,
MRP_APPLICANT_AN,
MRP_APPLICANT_AA,
MRP_APPLICANT_QA,
MRP_APPLICANT_LA,
MRP_APPLICANT_AO,
MRP_APPLICANT_QO,
MRP_APPLICANT_AP,
MRP_APPLICANT_QP,
__MRP_APPLICANT_MAX
};
#define MRP_APPLICANT_MAX (__MRP_APPLICANT_MAX - 1)
enum mrp_event {
MRP_EVENT_NEW,
MRP_EVENT_JOIN,
MRP_EVENT_LV,
MRP_EVENT_TX,
MRP_EVENT_R_NEW,
MRP_EVENT_R_JOIN_IN,
MRP_EVENT_R_IN,
MRP_EVENT_R_JOIN_MT,
MRP_EVENT_R_MT,
MRP_EVENT_R_LV,
MRP_EVENT_R_LA,
MRP_EVENT_REDECLARE,
MRP_EVENT_PERIODIC,
__MRP_EVENT_MAX
};
#define MRP_EVENT_MAX (__MRP_EVENT_MAX - 1)
enum mrp_tx_action {
MRP_TX_ACTION_NONE,
MRP_TX_ACTION_S_NEW,
MRP_TX_ACTION_S_JOIN_IN,
MRP_TX_ACTION_S_JOIN_IN_OPTIONAL,
MRP_TX_ACTION_S_IN_OPTIONAL,
MRP_TX_ACTION_S_LV,
};
struct mrp_attr {
struct rb_node node;
enum mrp_applicant_state state;
u8 type;
u8 len;
unsigned char value[];
};
enum mrp_applications {
MRP_APPLICATION_MVRP,
__MRP_APPLICATION_MAX
};
#define MRP_APPLICATION_MAX (__MRP_APPLICATION_MAX - 1)
struct mrp_application {
enum mrp_applications type;
unsigned int maxattr;
struct packet_type pkttype;
unsigned char group_address[ETH_ALEN];
u8 version;
};
struct mrp_applicant {
struct mrp_application *app;
struct net_device *dev;
struct timer_list join_timer;
struct timer_list periodic_timer;
spinlock_t lock;
struct sk_buff_head queue;
struct sk_buff *pdu;
struct rb_root mad;
struct rcu_head rcu;
};
struct mrp_port {
struct mrp_applicant __rcu *applicants[MRP_APPLICATION_MAX + 1];
struct rcu_head rcu;
};
int mrp_register_application(struct mrp_application *app);
void mrp_unregister_application(struct mrp_application *app);
int mrp_init_applicant(struct net_device *dev, struct mrp_application *app);
void mrp_uninit_applicant(struct net_device *dev, struct mrp_application *app);
int mrp_request_join(const struct net_device *dev,
const struct mrp_application *app,
const void *value, u8 len, u8 type);
void mrp_request_leave(const struct net_device *dev,
const struct mrp_application *app,
const void *value, u8 len, u8 type);
#endif /* _NET_MRP_H */
/net/kcm.h
Merge tag 'docs-4.10' of git://git.lwn.net/linux
HEADmasterPull documentation update from Jonathan Corbet:
"These are the documentation changes for 4.10.
It's another busy cycle for the docs tree, as the sphinx conversion
continues. Highlights include:
- Further work on PDF output, which remains a bit of a pain but
should be more solid now.
- Five more DocBook template files converted to Sphinx. Only 27 to
go... Lots of plain-text files have also been converted and
integrated.
- Images in binary formats have been replaced with more
source-friendly versions.
- Various bits of organizational work, including the renaming of
various files discussed at the kernel summit.
- New documentation for the device_link mechanism.
... and, of course, lots of typo fixes and small updates"
* tag 'docs-4.10' of git://git.lwn.net/linux: (193 commits)
dma-buf: Extract dma-buf.rst
Update Documentation/00-INDEX
docs: 00-INDEX: document directories/files with no docs
docs: 00-INDEX: remove non-existing entries
docs: 00-INDEX: add missing entries for documentation files/dirs
docs: 00-INDEX: consolidate process/ and admin-guide/ description
scripts: add a script to check if Documentation/00-INDEX is sane
Docs: change sh -> awk in REPORTING-BUGS
Documentation/core-api/device_link: Add initial documentation
core-api: remove an unexpected unident
ppc/idle: Add documentation for powersave=off
Doc: Correct typo, "Introdution" => "Introduction"
Documentation/atomic_ops.txt: convert to ReST markup
Documentation/local_ops.txt: convert to ReST markup
Documentation/assoc_array.txt: convert to ReST markup
docs-rst: parse-headers.pl: cleanup the documentation
docs-rst: fix media cleandocs target
docs-rst: media/Makefile: reorganize the rules
docs-rst: media: build SVG from graphviz files
docs-rst: replace bayer.png by a SVG image
...