2021-07-29 05:20:44 +03: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 06:01:45 +03:00
struct mctp_sk_key ;
2021-07-29 05:20:44 +03:00
struct mctp_dev {
struct net_device * dev ;
2021-09-29 10:26:08 +03:00
refcount_t refs ;
2021-07-29 05:20:44 +03:00
unsigned int net ;
2021-10-29 06:01:45 +03:00
const struct mctp_netdev_ops * ops ;
2021-07-29 05:20:44 +03: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 06:01:45 +03:00
struct mctp_netdev_ops {
void ( * release_flow ) ( struct mctp_dev * dev ,
struct mctp_sk_key * key ) ;
} ;
2021-07-29 05:20:44 +03: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 06:01:45 +03: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 10:26:08 +03:00
void mctp_dev_hold ( struct mctp_dev * mdev ) ;
void mctp_dev_put ( struct mctp_dev * mdev ) ;
2021-10-29 06:01:45 +03: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 05:20:44 +03:00
# endif /* __NET_MCTPDEVICE_H */