2021-07-29 02:20:44 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/*
|
|
|
|
* Management Component Transport Protocol (MCTP) - device
|
|
|
|
* definitions.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2021 Code Construct
|
|
|
|
* Copyright (c) 2021 Google
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __NET_MCTPDEVICE_H
|
|
|
|
#define __NET_MCTPDEVICE_H
|
|
|
|
|
|
|
|
#include <linux/list.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include <linux/refcount.h>
|
|
|
|
|
2021-10-29 03:01:45 +00:00
|
|
|
struct mctp_sk_key;
|
|
|
|
|
2021-07-29 02:20:44 +00:00
|
|
|
struct mctp_dev {
|
|
|
|
struct net_device *dev;
|
|
|
|
|
2021-09-29 07:26:08 +00:00
|
|
|
refcount_t refs;
|
|
|
|
|
2021-07-29 02:20:44 +00:00
|
|
|
unsigned int net;
|
|
|
|
|
2021-10-29 03:01:45 +00:00
|
|
|
const struct mctp_netdev_ops *ops;
|
|
|
|
|
2021-07-29 02:20:44 +00:00
|
|
|
/* Only modified under RTNL. Reads have addrs_lock held */
|
|
|
|
u8 *addrs;
|
|
|
|
size_t num_addrs;
|
|
|
|
spinlock_t addrs_lock;
|
|
|
|
|
|
|
|
struct rcu_head rcu;
|
|
|
|
};
|
|
|
|
|
2021-10-29 03:01:45 +00:00
|
|
|
struct mctp_netdev_ops {
|
|
|
|
void (*release_flow)(struct mctp_dev *dev,
|
|
|
|
struct mctp_sk_key *key);
|
|
|
|
};
|
|
|
|
|
2021-07-29 02:20:44 +00:00
|
|
|
#define MCTP_INITIAL_DEFAULT_NET 1
|
|
|
|
|
|
|
|
struct mctp_dev *mctp_dev_get_rtnl(const struct net_device *dev);
|
|
|
|
struct mctp_dev *__mctp_dev_get(const struct net_device *dev);
|
|
|
|
|
2021-10-29 03:01:45 +00:00
|
|
|
int mctp_register_netdev(struct net_device *dev,
|
|
|
|
const struct mctp_netdev_ops *ops);
|
|
|
|
void mctp_unregister_netdev(struct net_device *dev);
|
|
|
|
|
2021-09-29 07:26:08 +00:00
|
|
|
void mctp_dev_hold(struct mctp_dev *mdev);
|
|
|
|
void mctp_dev_put(struct mctp_dev *mdev);
|
|
|
|
|
2021-10-29 03:01:45 +00:00
|
|
|
void mctp_dev_set_key(struct mctp_dev *dev, struct mctp_sk_key *key);
|
|
|
|
void mctp_dev_release_key(struct mctp_dev *dev, struct mctp_sk_key *key);
|
|
|
|
|
2021-07-29 02:20:44 +00:00
|
|
|
#endif /* __NET_MCTPDEVICE_H */
|