mctp: Add device handling and netlink interface
This change adds the infrastructure for managing MCTP netdevices; we add a pointer to the AF_MCTP-specific data to struct netdevice, and hook up the rtnetlink operations for adding and removing addresses. Includes changes from Matt Johnston <matt@codeconstruct.com.au>. Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
4b2e69305c
commit
583be982d9
@@ -10,6 +10,7 @@
|
||||
#define __NET_MCTP_H
|
||||
|
||||
#include <linux/bits.h>
|
||||
#include <linux/mctp.h>
|
||||
|
||||
/* MCTP packet definitions */
|
||||
struct mctp_hdr {
|
||||
@@ -32,4 +33,17 @@ struct mctp_hdr {
|
||||
#define MCTP_HDR_TAG_SHIFT 0
|
||||
#define MCTP_HDR_TAG_MASK GENMASK(2, 0)
|
||||
|
||||
static inline bool mctp_address_ok(mctp_eid_t eid)
|
||||
{
|
||||
return eid >= 8 && eid < 255;
|
||||
}
|
||||
|
||||
static inline struct mctp_hdr *mctp_hdr(struct sk_buff *skb)
|
||||
{
|
||||
return (struct mctp_hdr *)skb_network_header(skb);
|
||||
}
|
||||
|
||||
void mctp_device_init(void);
|
||||
void mctp_device_exit(void);
|
||||
|
||||
#endif /* __NET_MCTP_H */
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/* 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>
|
||||
|
||||
struct mctp_dev {
|
||||
struct net_device *dev;
|
||||
|
||||
unsigned int net;
|
||||
|
||||
/* Only modified under RTNL. Reads have addrs_lock held */
|
||||
u8 *addrs;
|
||||
size_t num_addrs;
|
||||
spinlock_t addrs_lock;
|
||||
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
#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);
|
||||
|
||||
#endif /* __NET_MCTPDEVICE_H */
|
||||
Reference in New Issue
Block a user