]> Git Repo - J-linux.git/blob - include/net/mctpdevice.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / include / net / mctpdevice.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Management Component Transport Protocol (MCTP) - device
4  * definitions.
5  *
6  * Copyright (c) 2021 Code Construct
7  * Copyright (c) 2021 Google
8  */
9
10 #ifndef __NET_MCTPDEVICE_H
11 #define __NET_MCTPDEVICE_H
12
13 #include <linux/list.h>
14 #include <linux/types.h>
15 #include <linux/refcount.h>
16
17 struct mctp_sk_key;
18
19 struct mctp_dev {
20         struct net_device       *dev;
21
22         refcount_t              refs;
23
24         unsigned int            net;
25         enum mctp_phys_binding  binding;
26
27         const struct mctp_netdev_ops *ops;
28
29         /* Only modified under RTNL. Reads have addrs_lock held */
30         u8                      *addrs;
31         size_t                  num_addrs;
32         spinlock_t              addrs_lock;
33
34         struct rcu_head         rcu;
35 };
36
37 struct mctp_netdev_ops {
38         void                    (*release_flow)(struct mctp_dev *dev,
39                                                 struct mctp_sk_key *key);
40 };
41
42 #define MCTP_INITIAL_DEFAULT_NET        1
43
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);
46
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);
51
52 void mctp_dev_hold(struct mctp_dev *mdev);
53 void mctp_dev_put(struct mctp_dev *mdev);
54
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);
57
58 #endif /* __NET_MCTPDEVICE_H */
This page took 0.028024 seconds and 4 git commands to generate.