1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Management Component Transport Protocol (MCTP) - device
6 * Copyright (c) 2021 Code Construct
7 * Copyright (c) 2021 Google
10 #ifndef __NET_MCTPDEVICE_H
11 #define __NET_MCTPDEVICE_H
13 #include <linux/list.h>
14 #include <linux/types.h>
15 #include <linux/refcount.h>
20 struct net_device
*dev
;
25 enum mctp_phys_binding binding
;
27 const struct mctp_netdev_ops
*ops
;
29 /* Only modified under RTNL. Reads have addrs_lock held */
32 spinlock_t addrs_lock
;
37 struct mctp_netdev_ops
{
38 void (*release_flow
)(struct mctp_dev
*dev
,
39 struct mctp_sk_key
*key
);
42 #define MCTP_INITIAL_DEFAULT_NET 1
44 struct mctp_dev
*mctp_dev_get_rtnl(const struct net_device
*dev
);
45 struct mctp_dev
*__mctp_dev_get(const struct net_device
*dev
);
47 int mctp_register_netdev(struct net_device
*dev
,
48 const struct mctp_netdev_ops
*ops
,
49 enum mctp_phys_binding binding
);
50 void mctp_unregister_netdev(struct net_device
*dev
);
52 void mctp_dev_hold(struct mctp_dev
*mdev
);
53 void mctp_dev_put(struct mctp_dev
*mdev
);
55 void mctp_dev_set_key(struct mctp_dev
*dev
, struct mctp_sk_key
*key
);
56 void mctp_dev_release_key(struct mctp_dev
*dev
, struct mctp_sk_key
*key
);
58 #endif /* __NET_MCTPDEVICE_H */