| 1 |
|
| 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 |
|
| 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
|