Server IP : 103.169.32.36 / Your IP : 216.73.217.13 Web Server : Apache System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : apache ( 48) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/build/include/net/ |
Upload File : |
| Current File : /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/build/include/net/devlink.h |
/*
* include/net/devlink.h - Network physical device Netlink interface
* Copyright (c) 2016 Mellanox Technologies. All rights reserved.
* Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#ifndef _NET_DEVLINK_H_
#define _NET_DEVLINK_H_
#include <linux/device.h>
#include <linux/slab.h>
#include <linux/gfp.h>
#include <linux/list.h>
#include <linux/netdevice.h>
#include <net/net_namespace.h>
#include <uapi/linux/devlink.h>
struct devlink_ops;
struct devlink {
struct list_head list;
struct list_head port_list;
struct list_head sb_list;
struct list_head dpipe_table_list;
struct list_head resource_list;
struct list_head param_list;
struct list_head region_list;
u32 snapshot_id;
struct devlink_dpipe_headers *dpipe_headers;
const struct devlink_ops *ops;
struct device *dev;
possible_net_t _net;
struct mutex lock;
char priv[0] __aligned(NETDEV_ALIGN);
};
struct devlink_port_attrs {
bool set;
enum devlink_port_flavour flavour;
u32 port_number; /* same value as "split group" */
bool split;
u32 split_subport_number;
};
struct devlink_port {
struct list_head list;
struct devlink *devlink;
unsigned index;
bool registered;
enum devlink_port_type type;
enum devlink_port_type desired_type;
void *type_dev;
struct devlink_port_attrs attrs;
};
struct devlink_sb_pool_info {
enum devlink_sb_pool_type pool_type;
u32 size;
enum devlink_sb_threshold_type threshold_type;
};
/**
* struct devlink_dpipe_field - dpipe field object
* @name: field name
* @id: index inside the headers field array
* @bitwidth: bitwidth
* @mapping_type: mapping type
*/
struct devlink_dpipe_field {
const char *name;
unsigned int id;
unsigned int bitwidth;
enum devlink_dpipe_field_mapping_type mapping_type;
};
/**
* struct devlink_dpipe_header - dpipe header object
* @name: header name
* @id: index, global/local detrmined by global bit
* @fields: fields
* @fields_count: number of fields
* @global: indicates if header is shared like most protocol header
* or driver specific
*/
struct devlink_dpipe_header {
const char *name;
unsigned int id;
struct devlink_dpipe_field *fields;
unsigned int fields_count;
bool global;
};
/**
* struct devlink_dpipe_match - represents match operation
* @type: type of match
* @header_index: header index (packets can have several headers of same
* type like in case of tunnels)
* @header: header
* @fieled_id: field index
*/
struct devlink_dpipe_match {
enum devlink_dpipe_match_type type;
unsigned int header_index;
struct devlink_dpipe_header *header;
unsigned int field_id;
};
/**
* struct devlink_dpipe_action - represents action operation
* @type: type of action
* @header_index: header index (packets can have several headers of same
* type like in case of tunnels)
* @header: header
* @fieled_id: field index
*/
struct devlink_dpipe_action {
enum devlink_dpipe_action_type type;
unsigned int header_index;
struct devlink_dpipe_header *header;
unsigned int field_id;
};
/**
* struct devlink_dpipe_value - represents value of match/action
* @action: action
* @match: match
* @mapping_value: in case the field has some mapping this value
* specified the mapping value
* @mapping_valid: specify if mapping value is valid
* @value_size: value size
* @value: value
* @mask: bit mask
*/
struct devlink_dpipe_value {
union {
struct devlink_dpipe_action *action;
struct devlink_dpipe_match *match;
};
unsigned int mapping_value;
bool mapping_valid;
unsigned int value_size;
void *value;
void *mask;
};
/**
* struct devlink_dpipe_entry - table entry object
* @index: index of the entry in the table
* @match_values: match values
* @matche_values_count: count of matches tuples
* @action_values: actions values
* @action_values_count: count of actions values
* @counter: value of counter
* @counter_valid: Specify if value is valid from hardware
*/
struct devlink_dpipe_entry {
u64 index;
struct devlink_dpipe_value *match_values;
unsigned int match_values_count;
struct devlink_dpipe_value *action_values;
unsigned int action_values_count;
u64 counter;
bool counter_valid;
};
/**
* struct devlink_dpipe_dump_ctx - context provided to driver in order
* to dump
* @info: info
* @cmd: devlink command
* @skb: skb
* @nest: top attribute
* @hdr: hdr
*/
struct devlink_dpipe_dump_ctx {
struct genl_info *info;
enum devlink_command cmd;
struct sk_buff *skb;
struct nlattr *nest;
void *hdr;
};
struct devlink_dpipe_table_ops;
/**
* struct devlink_dpipe_table - table object
* @priv: private
* @name: table name
* @counters_enabled: indicates if counters are active
* @counter_control_extern: indicates if counter control is in dpipe or
* external tool
* @resource_valid: Indicate that the resource id is valid
* @resource_id: relative resource this table is related to
* @resource_units: number of resource's unit consumed per table's entry
* @table_ops: table operations
* @rcu: rcu
*/
struct devlink_dpipe_table {
void *priv;
struct list_head list;
const char *name;
bool counters_enabled;
bool counter_control_extern;
bool resource_valid;
u64 resource_id;
u64 resource_units;
struct devlink_dpipe_table_ops *table_ops;
struct rcu_head rcu;
};
/**
* struct devlink_dpipe_table_ops - dpipe_table ops
* @actions_dump - dumps all tables actions
* @matches_dump - dumps all tables matches
* @entries_dump - dumps all active entries in the table
* @counters_set_update - when changing the counter status hardware sync
* maybe needed to allocate/free counter related
* resources
* @size_get - get size
*/
struct devlink_dpipe_table_ops {
int (*actions_dump)(void *priv, struct sk_buff *skb);
int (*matches_dump)(void *priv, struct sk_buff *skb);
int (*entries_dump)(void *priv, bool counters_enabled,
struct devlink_dpipe_dump_ctx *dump_ctx);
int (*counters_set_update)(void *priv, bool enable);
u64 (*size_get)(void *priv);
};
/**
* struct devlink_dpipe_headers - dpipe headers
* @headers - header array can be shared (global bit) or driver specific
* @headers_count - count of headers
*/
struct devlink_dpipe_headers {
struct devlink_dpipe_header **headers;
unsigned int headers_count;
};
/**
* struct devlink_resource_size_params - resource's size parameters
* @size_min: minimum size which can be set
* @size_max: maximum size which can be set
* @size_granularity: size granularity
* @size_unit: resource's basic unit
*/
struct devlink_resource_size_params {
u64 size_min;
u64 size_max;
u64 size_granularity;
enum devlink_resource_unit unit;
};
static inline void
devlink_resource_size_params_init(struct devlink_resource_size_params *size_params,
u64 size_min, u64 size_max,
u64 size_granularity,
enum devlink_resource_unit unit)
{
size_params->size_min = size_min;
size_params->size_max = size_max;
size_params->size_granularity = size_granularity;
size_params->unit = unit;
}
typedef u64 devlink_resource_occ_get_t(void *priv);
/**
* struct devlink_resource - devlink resource
* @name: name of the resource
* @id: id, per devlink instance
* @size: size of the resource
* @size_new: updated size of the resource, reload is needed
* @size_valid: valid in case the total size of the resource is valid
* including its children
* @parent: parent resource
* @size_params: size parameters
* @list: parent list
* @resource_list: list of child resources
*/
struct devlink_resource {
const char *name;
u64 id;
u64 size;
u64 size_new;
bool size_valid;
struct devlink_resource *parent;
struct devlink_resource_size_params size_params;
struct list_head list;
struct list_head resource_list;
devlink_resource_occ_get_t *occ_get;
void *occ_get_priv;
};
#define DEVLINK_RESOURCE_ID_PARENT_TOP 0
#define __DEVLINK_PARAM_MAX_STRING_VALUE 32
enum devlink_param_type {
DEVLINK_PARAM_TYPE_U8,
DEVLINK_PARAM_TYPE_U16,
DEVLINK_PARAM_TYPE_U32,
DEVLINK_PARAM_TYPE_STRING,
DEVLINK_PARAM_TYPE_BOOL,
};
union devlink_param_value {
u8 vu8;
u16 vu16;
u32 vu32;
char vstr[__DEVLINK_PARAM_MAX_STRING_VALUE];
bool vbool;
};
struct devlink_param_gset_ctx {
union devlink_param_value val;
enum devlink_param_cmode cmode;
};
/**
* struct devlink_param - devlink configuration parameter data
* @name: name of the parameter
* @generic: indicates if the parameter is generic or driver specific
* @type: parameter type
* @supported_cmodes: bitmap of supported configuration modes
* @get: get parameter value, used for runtime and permanent
* configuration modes
* @set: set parameter value, used for runtime and permanent
* configuration modes
* @validate: validate input value is applicable (within value range, etc.)
*
* This struct should be used by the driver to fill the data for
* a parameter it registers.
*/
struct devlink_param {
u32 id;
const char *name;
bool generic;
enum devlink_param_type type;
unsigned long supported_cmodes;
int (*get)(struct devlink *devlink, u32 id,
struct devlink_param_gset_ctx *ctx);
int (*set)(struct devlink *devlink, u32 id,
struct devlink_param_gset_ctx *ctx);
int (*validate)(struct devlink *devlink, u32 id,
union devlink_param_value val);
};
struct devlink_param_item {
struct list_head list;
const struct devlink_param *param;
union devlink_param_value driverinit_value;
bool driverinit_value_valid;
};
enum devlink_param_generic_id {
DEVLINK_PARAM_GENERIC_ID_INT_ERR_RESET,
DEVLINK_PARAM_GENERIC_ID_MAX_MACS,
DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV,
DEVLINK_PARAM_GENERIC_ID_REGION_SNAPSHOT,
DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI,
DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX,
DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN,
/* add new param generic ids above here*/
__DEVLINK_PARAM_GENERIC_ID_MAX,
DEVLINK_PARAM_GENERIC_ID_MAX = __DEVLINK_PARAM_GENERIC_ID_MAX - 1,
};
#define DEVLINK_PARAM_GENERIC_INT_ERR_RESET_NAME "internal_error_reset"
#define DEVLINK_PARAM_GENERIC_INT_ERR_RESET_TYPE DEVLINK_PARAM_TYPE_BOOL
#define DEVLINK_PARAM_GENERIC_MAX_MACS_NAME "max_macs"
#define DEVLINK_PARAM_GENERIC_MAX_MACS_TYPE DEVLINK_PARAM_TYPE_U32
#define DEVLINK_PARAM_GENERIC_ENABLE_SRIOV_NAME "enable_sriov"
#define DEVLINK_PARAM_GENERIC_ENABLE_SRIOV_TYPE DEVLINK_PARAM_TYPE_BOOL
#define DEVLINK_PARAM_GENERIC_REGION_SNAPSHOT_NAME "region_snapshot_enable"
#define DEVLINK_PARAM_GENERIC_REGION_SNAPSHOT_TYPE DEVLINK_PARAM_TYPE_BOOL
#define DEVLINK_PARAM_GENERIC_IGNORE_ARI_NAME "ignore_ari"
#define DEVLINK_PARAM_GENERIC_IGNORE_ARI_TYPE DEVLINK_PARAM_TYPE_BOOL
#define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MAX_NAME "msix_vec_per_pf_max"
#define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MAX_TYPE DEVLINK_PARAM_TYPE_U32
#define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_NAME "msix_vec_per_pf_min"
#define DEVLINK_PARAM_GENERIC_MSIX_VEC_PER_PF_MIN_TYPE DEVLINK_PARAM_TYPE_U32
#define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate) \
{ \
.id = DEVLINK_PARAM_GENERIC_ID_##_id, \
.name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \
.type = DEVLINK_PARAM_GENERIC_##_id##_TYPE, \
.generic = true, \
.supported_cmodes = _cmodes, \
.get = _get, \
.set = _set, \
.validate = _validate, \
}
#define DEVLINK_PARAM_DRIVER(_id, _name, _type, _cmodes, _get, _set, _validate) \
{ \
.id = _id, \
.name = _name, \
.type = _type, \
.supported_cmodes = _cmodes, \
.get = _get, \
.set = _set, \
.validate = _validate, \
}
struct devlink_region;
typedef void devlink_snapshot_data_dest_t(const void *data);
struct devlink_ops {
int (*reload)(struct devlink *devlink);
int (*port_type_set)(struct devlink_port *devlink_port,
enum devlink_port_type port_type);
int (*port_split)(struct devlink *devlink, unsigned int port_index,
unsigned int count);
int (*port_unsplit)(struct devlink *devlink, unsigned int port_index);
int (*sb_pool_get)(struct devlink *devlink, unsigned int sb_index,
u16 pool_index,
struct devlink_sb_pool_info *pool_info);
int (*sb_pool_set)(struct devlink *devlink, unsigned int sb_index,
u16 pool_index, u32 size,
enum devlink_sb_threshold_type threshold_type);
int (*sb_port_pool_get)(struct devlink_port *devlink_port,
unsigned int sb_index, u16 pool_index,
u32 *p_threshold);
int (*sb_port_pool_set)(struct devlink_port *devlink_port,
unsigned int sb_index, u16 pool_index,
u32 threshold);
int (*sb_tc_pool_bind_get)(struct devlink_port *devlink_port,
unsigned int sb_index,
u16 tc_index,
enum devlink_sb_pool_type pool_type,
u16 *p_pool_index, u32 *p_threshold);
int (*sb_tc_pool_bind_set)(struct devlink_port *devlink_port,
unsigned int sb_index,
u16 tc_index,
enum devlink_sb_pool_type pool_type,
u16 pool_index, u32 threshold);
int (*sb_occ_snapshot)(struct devlink *devlink,
unsigned int sb_index);
int (*sb_occ_max_clear)(struct devlink *devlink,
unsigned int sb_index);
int (*sb_occ_port_pool_get)(struct devlink_port *devlink_port,
unsigned int sb_index, u16 pool_index,
u32 *p_cur, u32 *p_max);
int (*sb_occ_tc_port_bind_get)(struct devlink_port *devlink_port,
unsigned int sb_index,
u16 tc_index,
enum devlink_sb_pool_type pool_type,
u32 *p_cur, u32 *p_max);
int (*eswitch_mode_get)(struct devlink *devlink, u16 *p_mode);
int (*eswitch_mode_set)(struct devlink *devlink, u16 mode);
int (*eswitch_inline_mode_get)(struct devlink *devlink, u8 *p_inline_mode);
int (*eswitch_inline_mode_set)(struct devlink *devlink, u8 inline_mode);
int (*eswitch_encap_mode_get)(struct devlink *devlink, u8 *p_encap_mode);
int (*eswitch_encap_mode_set)(struct devlink *devlink, u8 encap_mode);
};
static inline void *devlink_priv(struct devlink *devlink)
{
BUG_ON(!devlink);
return &devlink->priv;
}
static inline struct devlink *priv_to_devlink(void *priv)
{
BUG_ON(!priv);
return container_of(priv, struct devlink, priv);
}
struct ib_device;
#if IS_ENABLED(CONFIG_NET_DEVLINK)
struct devlink *devlink_alloc(const struct devlink_ops *ops, size_t priv_size);
int devlink_register(struct devlink *devlink, struct device *dev);
void devlink_unregister(struct devlink *devlink);
void devlink_free(struct devlink *devlink);
int devlink_port_register(struct devlink *devlink,
struct devlink_port *devlink_port,
unsigned int port_index);
void devlink_port_unregister(struct devlink_port *devlink_port);
void devlink_port_type_eth_set(struct devlink_port *devlink_port,
struct net_device *netdev);
void devlink_port_type_ib_set(struct devlink_port *devlink_port,
struct ib_device *ibdev);
void devlink_port_type_clear(struct devlink_port *devlink_port);
void devlink_port_attrs_set(struct devlink_port *devlink_port,
enum devlink_port_flavour flavour,
u32 port_number, bool split,
u32 split_subport_number);
int devlink_port_get_phys_port_name(struct devlink_port *devlink_port,
char *name, size_t len);
int devlink_sb_register(struct devlink *devlink, unsigned int sb_index,
u32 size, u16 ingress_pools_count,
u16 egress_pools_count, u16 ingress_tc_count,
u16 egress_tc_count);
void devlink_sb_unregister(struct devlink *devlink, unsigned int sb_index);
int devlink_dpipe_table_register(struct devlink *devlink,
const char *table_name,
struct devlink_dpipe_table_ops *table_ops,
void *priv, bool counter_control_extern);
void devlink_dpipe_table_unregister(struct devlink *devlink,
const char *table_name);
int devlink_dpipe_headers_register(struct devlink *devlink,
struct devlink_dpipe_headers *dpipe_headers);
void devlink_dpipe_headers_unregister(struct devlink *devlink);
bool devlink_dpipe_table_counter_enabled(struct devlink *devlink,
const char *table_name);
int devlink_dpipe_entry_ctx_prepare(struct devlink_dpipe_dump_ctx *dump_ctx);
int devlink_dpipe_entry_ctx_append(struct devlink_dpipe_dump_ctx *dump_ctx,
struct devlink_dpipe_entry *entry);
int devlink_dpipe_entry_ctx_close(struct devlink_dpipe_dump_ctx *dump_ctx);
void devlink_dpipe_entry_clear(struct devlink_dpipe_entry *entry);
int devlink_dpipe_action_put(struct sk_buff *skb,
struct devlink_dpipe_action *action);
int devlink_dpipe_match_put(struct sk_buff *skb,
struct devlink_dpipe_match *match);
extern struct devlink_dpipe_header devlink_dpipe_header_ethernet;
extern struct devlink_dpipe_header devlink_dpipe_header_ipv4;
extern struct devlink_dpipe_header devlink_dpipe_header_ipv6;
int devlink_resource_register(struct devlink *devlink,
const char *resource_name,
u64 resource_size,
u64 resource_id,
u64 parent_resource_id,
const struct devlink_resource_size_params *size_params);
void devlink_resources_unregister(struct devlink *devlink,
struct devlink_resource *resource);
int devlink_resource_size_get(struct devlink *devlink,
u64 resource_id,
u64 *p_resource_size);
int devlink_dpipe_table_resource_set(struct devlink *devlink,
const char *table_name, u64 resource_id,
u64 resource_units);
void devlink_resource_occ_get_register(struct devlink *devlink,
u64 resource_id,
devlink_resource_occ_get_t *occ_get,
void *occ_get_priv);
void devlink_resource_occ_get_unregister(struct devlink *devlink,
u64 resource_id);
int devlink_params_register(struct devlink *devlink,
const struct devlink_param *params,
size_t params_count);
void devlink_params_unregister(struct devlink *devlink,
const struct devlink_param *params,
size_t params_count);
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
union devlink_param_value *init_val);
int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
union devlink_param_value init_val);
void devlink_param_value_changed(struct devlink *devlink, u32 param_id);
void devlink_param_value_str_fill(union devlink_param_value *dst_val,
const char *src);
struct devlink_region *devlink_region_create(struct devlink *devlink,
const char *region_name,
u32 region_max_snapshots,
u64 region_size);
void devlink_region_destroy(struct devlink_region *region);
u32 devlink_region_shapshot_id_get(struct devlink *devlink);
int devlink_region_snapshot_create(struct devlink_region *region, u64 data_len,
u8 *data, u32 snapshot_id,
devlink_snapshot_data_dest_t *data_destructor);
#else
static inline struct devlink *devlink_alloc(const struct devlink_ops *ops,
size_t priv_size)
{
return kzalloc(sizeof(struct devlink) + priv_size, GFP_KERNEL);
}
static inline int devlink_register(struct devlink *devlink, struct device *dev)
{
return 0;
}
static inline void devlink_unregister(struct devlink *devlink)
{
}
static inline void devlink_free(struct devlink *devlink)
{
kfree(devlink);
}
static inline int devlink_port_register(struct devlink *devlink,
struct devlink_port *devlink_port,
unsigned int port_index)
{
return 0;
}
static inline void devlink_port_unregister(struct devlink_port *devlink_port)
{
}
static inline void devlink_port_type_eth_set(struct devlink_port *devlink_port,
struct net_device *netdev)
{
}
static inline void devlink_port_type_ib_set(struct devlink_port *devlink_port,
struct ib_device *ibdev)
{
}
static inline void devlink_port_type_clear(struct devlink_port *devlink_port)
{
}
static inline void devlink_port_attrs_set(struct devlink_port *devlink_port,
enum devlink_port_flavour flavour,
u32 port_number, bool split,
u32 split_subport_number)
{
}
static inline int
devlink_port_get_phys_port_name(struct devlink_port *devlink_port,
char *name, size_t len)
{
return -EOPNOTSUPP;
}
static inline int devlink_sb_register(struct devlink *devlink,
unsigned int sb_index, u32 size,
u16 ingress_pools_count,
u16 egress_pools_count,
u16 ingress_tc_count,
u16 egress_tc_count)
{
return 0;
}
static inline void devlink_sb_unregister(struct devlink *devlink,
unsigned int sb_index)
{
}
static inline int
devlink_dpipe_table_register(struct devlink *devlink,
const char *table_name,
struct devlink_dpipe_table_ops *table_ops,
void *priv, bool counter_control_extern)
{
return 0;
}
static inline void devlink_dpipe_table_unregister(struct devlink *devlink,
const char *table_name)
{
}
static inline int devlink_dpipe_headers_register(struct devlink *devlink,
struct devlink_dpipe_headers *
dpipe_headers)
{
return 0;
}
static inline void devlink_dpipe_headers_unregister(struct devlink *devlink)
{
}
static inline bool devlink_dpipe_table_counter_enabled(struct devlink *devlink,
const char *table_name)
{
return false;
}
static inline int
devlink_dpipe_entry_ctx_prepare(struct devlink_dpipe_dump_ctx *dump_ctx)
{
return 0;
}
static inline int
devlink_dpipe_entry_ctx_append(struct devlink_dpipe_dump_ctx *dump_ctx,
struct devlink_dpipe_entry *entry)
{
return 0;
}
static inline int
devlink_dpipe_entry_ctx_close(struct devlink_dpipe_dump_ctx *dump_ctx)
{
return 0;
}
static inline void
devlink_dpipe_entry_clear(struct devlink_dpipe_entry *entry)
{
}
static inline int
devlink_dpipe_action_put(struct sk_buff *skb,
struct devlink_dpipe_action *action)
{
return 0;
}
static inline int
devlink_dpipe_match_put(struct sk_buff *skb,
struct devlink_dpipe_match *match)
{
return 0;
}
static inline int
devlink_resource_register(struct devlink *devlink,
const char *resource_name,
u64 resource_size,
u64 resource_id,
u64 parent_resource_id,
const struct devlink_resource_size_params *size_params)
{
return 0;
}
static inline void
devlink_resources_unregister(struct devlink *devlink,
struct devlink_resource *resource)
{
}
static inline int
devlink_resource_size_get(struct devlink *devlink, u64 resource_id,
u64 *p_resource_size)
{
return -EOPNOTSUPP;
}
static inline int
devlink_dpipe_table_resource_set(struct devlink *devlink,
const char *table_name, u64 resource_id,
u64 resource_units)
{
return -EOPNOTSUPP;
}
static inline void
devlink_resource_occ_get_register(struct devlink *devlink,
u64 resource_id,
devlink_resource_occ_get_t *occ_get,
void *occ_get_priv)
{
}
static inline void
devlink_resource_occ_get_unregister(struct devlink *devlink,
u64 resource_id)
{
}
static inline int
devlink_params_register(struct devlink *devlink,
const struct devlink_param *params,
size_t params_count)
{
return 0;
}
static inline void
devlink_params_unregister(struct devlink *devlink,
const struct devlink_param *params,
size_t params_count)
{
}
static inline int
devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
union devlink_param_value *init_val)
{
return -EOPNOTSUPP;
}
static inline int
devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
union devlink_param_value init_val)
{
return -EOPNOTSUPP;
}
static inline void
devlink_param_value_changed(struct devlink *devlink, u32 param_id)
{
}
static inline void
devlink_param_value_str_fill(union devlink_param_value *dst_val,
const char *src)
{
}
static inline struct devlink_region *
devlink_region_create(struct devlink *devlink,
const char *region_name,
u32 region_max_snapshots,
u64 region_size)
{
return NULL;
}
static inline void
devlink_region_destroy(struct devlink_region *region)
{
}
static inline u32
devlink_region_shapshot_id_get(struct devlink *devlink)
{
return 0;
}
static inline int
devlink_region_snapshot_create(struct devlink_region *region, u64 data_len,
u8 *data, u32 snapshot_id,
devlink_snapshot_data_dest_t *data_destructor)
{
return 0;
}
#endif
#endif /* _NET_DEVLINK_H_ */
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
September 29 2025 07:01:09 |
0 / 0 |
0755 |
|
| 9p |
-- |
September 29 2025 07:01:23 |
0 / 0 |
0755 |
|
| bluetooth |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| caif |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| irda |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| iucv |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| netfilter |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| netns |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| nfc |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| phonet |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| sctp |
-- |
September 29 2025 07:01:23 |
0 / 0 |
0755 |
|
| tc_act |
-- |
September 29 2025 07:01:24 |
0 / 0 |
0755 |
|
| | | | | |
| 6lowpan.h |
9.63 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| act_api.h |
5.642 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| addrconf.h |
12.438 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| af_ieee802154.h |
1.554 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| af_rxrpc.h |
1.928 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| af_unix.h |
2.163 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| af_vsock.h |
7.13 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ah.h |
0.425 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| arp.h |
2.117 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| atmclip.h |
1.441 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ax25.h |
15.093 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ax88796.h |
0.975 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| bond_3ad.h |
10.221 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| bond_alb.h |
6.598 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| bond_options.h |
3.916 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| bonding.h |
19.34 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| busy_poll.h |
3.229 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| cfg80211-wext.h |
1.953 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| cfg80211.h |
260.457 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| cfg802154.h |
10.812 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| checksum.h |
4.024 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| cipso_ipv4.h |
7.889 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| cls_cgroup.h |
1.562 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| codel.h |
5.646 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| codel_impl.h |
7.976 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| codel_qdisc.h |
2.903 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| compat.h |
2.079 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| datalink.h |
0.471 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dcbevent.h |
1.263 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dcbnl.h |
4.451 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| devlink.h |
23.734 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn.h |
6.986 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn_dev.h |
5.424 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn_fib.h |
4.033 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn_neigh.h |
0.805 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn_nsp.h |
5.966 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dn_route.h |
4.283 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dsa.h |
4.265 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dsfield.h |
1.074 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dst.h |
14.609 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dst_cache.h |
2.494 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dst_metadata.h |
4.887 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| dst_ops.h |
2.022 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| esp.h |
0.35 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ethoc.h |
0.49 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| failover.h |
1.15 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| fib_notifier.h |
1.286 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| fib_rules.h |
3.646 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| firewire.h |
0.583 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| flow.h |
7.558 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| flow_dissector.h |
7.886 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| flowcache.h |
0.548 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| fou.h |
0.487 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| fq.h |
2.67 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| fq_impl.h |
6.898 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| garp.h |
2.634 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| gen_stats.h |
2.479 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| genetlink.h |
11.257 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| geneve.h |
1.765 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| gre.h |
3.229 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| gro_cells.h |
2.051 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| gue.h |
3.188 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| icmp.h |
1.56 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ieee80211_radiotap.h |
13.038 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ieee802154.h |
5.59 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ieee802154_netdev.h |
9.139 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| if_inet6.h |
6.198 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ife.h |
0.991 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet6_connection_sock.h |
1.403 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet6_hashtables.h |
2.922 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_common.h |
1.544 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_connection_sock.h |
11.056 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_ecn.h |
6.059 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_frag.h |
4.844 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_hashtables.h |
12.311 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_sock.h |
7.381 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inet_timewait_sock.h |
6.357 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| inetpeer.h |
4.229 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip.h |
16.709 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip6_checksum.h |
2.905 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip6_fib.h |
8.613 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip6_route.h |
5.687 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip6_tunnel.h |
3.153 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip_fib.h |
11.092 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip_tunnels.h |
12.486 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ip_vs.h |
45.54 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ipcomp.h |
0.605 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ipconfig.h |
0.754 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ipv6.h |
26.433 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ipx.h |
3.716 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| iw_handler.h |
20.872 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| lapb.h |
4.869 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| lib80211.h |
4.172 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc.h |
4.432 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_c_ac.h |
10.092 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_c_ev.h |
11.579 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_c_st.h |
1.709 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_conn.h |
4.117 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_if.h |
3.034 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_pdu.h |
14.189 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_s_ac.h |
1.631 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_s_ev.h |
2.281 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_s_st.h |
0.919 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| llc_sap.h |
1.175 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| lwtunnel.h |
4.005 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mac80211.h |
248.911 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mac802154.h |
15.267 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mip6.h |
1.579 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mld.h |
2.765 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mpls.h |
0.91 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| mrp.h |
3.011 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ndisc.h |
14.677 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| neighbour.h |
12.923 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| net_failover.h |
0.999 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| net_namespace.h |
11.888 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| net_ratelimit.h |
0.177 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| netevent.h |
0.852 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| netlabel.h |
17.24 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| netlink.h |
39.599 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| netprio_cgroup.h |
1.484 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| netrom.h |
7.916 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| nexthop.h |
0.802 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| nl802154.h |
12.095 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| p8022.h |
0.431 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| page_pool.h |
4.392 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| ping.h |
1.386 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| pkt_cls.h |
19.325 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| pkt_sched.h |
4.008 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| pptp.h |
0.948 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| protocol.h |
3.932 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| psample.h |
0.785 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| psnap.h |
0.318 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| raw.h |
1.864 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| rawv6.h |
0.546 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| red.h |
10.247 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| regulatory.h |
10.886 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| request_sock.h |
7.634 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| rose.h |
7.941 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| route.h |
9.364 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| rtnetlink.h |
6.603 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| sch_generic.h |
24.541 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| sch_generic_kabi.h |
4.322 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| scm.h |
3.479 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| secure_seq.h |
1.037 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| slhc_vj.h |
6.627 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| snmp.h |
5.956 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| sock.h |
67.533 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| sock_reuseport.h |
0.542 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| stp.h |
0.35 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| switchdev.h |
9.045 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| tcp.h |
52.118 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| tcp_memcontrol.h |
0.597 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| tcp_states.h |
1.213 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| timewait_sock.h |
1.199 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| transp_v6.h |
1.757 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| tso.h |
0.436 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| tun_proto.h |
0.965 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| udp.h |
10.956 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| udp_tunnel.h |
5.218 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| udplite.h |
3.808 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| vsock_addr.h |
1.048 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| vxlan.h |
11.302 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| wext.h |
1.474 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| wimax.h |
20.084 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| wpan-phy.h |
2.554 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| x25.h |
9.737 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| x25device.h |
0.34 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| xdp.h |
3.445 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| xdp_sock.h |
4.891 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|
| xfrm.h |
49.833 KB |
November 06 2023 09:15:52 |
0 / 0 |
0644 |
|