mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 19:18:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * include/uapi/linux/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 _LINUX_DEVLINK_H_
 | |
| #define _LINUX_DEVLINK_H_
 | |
| 
 | |
| #define DEVLINK_GENL_NAME "devlink"
 | |
| #define DEVLINK_GENL_VERSION 0x1
 | |
| #define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
 | |
| 
 | |
| enum devlink_command {
 | |
| 	/* don't change the order or add anything between, this is ABI! */
 | |
| 	DEVLINK_CMD_UNSPEC,
 | |
| 
 | |
| 	DEVLINK_CMD_GET,		/* can dump */
 | |
| 	DEVLINK_CMD_SET,
 | |
| 	DEVLINK_CMD_NEW,
 | |
| 	DEVLINK_CMD_DEL,
 | |
| 
 | |
| 	DEVLINK_CMD_PORT_GET,		/* can dump */
 | |
| 	DEVLINK_CMD_PORT_SET,
 | |
| 	DEVLINK_CMD_PORT_NEW,
 | |
| 	DEVLINK_CMD_PORT_DEL,
 | |
| 
 | |
| 	DEVLINK_CMD_PORT_SPLIT,
 | |
| 	DEVLINK_CMD_PORT_UNSPLIT,
 | |
| 
 | |
| 	DEVLINK_CMD_SB_GET,		/* can dump */
 | |
| 	DEVLINK_CMD_SB_SET,
 | |
| 	DEVLINK_CMD_SB_NEW,
 | |
| 	DEVLINK_CMD_SB_DEL,
 | |
| 
 | |
| 	DEVLINK_CMD_SB_POOL_GET,	/* can dump */
 | |
| 	DEVLINK_CMD_SB_POOL_SET,
 | |
| 	DEVLINK_CMD_SB_POOL_NEW,
 | |
| 	DEVLINK_CMD_SB_POOL_DEL,
 | |
| 
 | |
| 	DEVLINK_CMD_SB_PORT_POOL_GET,	/* can dump */
 | |
| 	DEVLINK_CMD_SB_PORT_POOL_SET,
 | |
| 	DEVLINK_CMD_SB_PORT_POOL_NEW,
 | |
| 	DEVLINK_CMD_SB_PORT_POOL_DEL,
 | |
| 
 | |
| 	DEVLINK_CMD_SB_TC_POOL_BIND_GET,	/* can dump */
 | |
| 	DEVLINK_CMD_SB_TC_POOL_BIND_SET,
 | |
| 	DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
 | |
| 	DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
 | |
| 
 | |
| 	/* Shared buffer occupancy monitoring commands */
 | |
| 	DEVLINK_CMD_SB_OCC_SNAPSHOT,
 | |
| 	DEVLINK_CMD_SB_OCC_MAX_CLEAR,
 | |
| 
 | |
| 	DEVLINK_CMD_ESWITCH_GET,
 | |
| #define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
 | |
| 	DEVLINK_CMD_ESWITCH_GET
 | |
| 
 | |
| 	DEVLINK_CMD_ESWITCH_SET,
 | |
| #define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
 | |
| 	DEVLINK_CMD_ESWITCH_SET
 | |
| 
 | |
| 	/* add new commands above here */
 | |
| 
 | |
| 	__DEVLINK_CMD_MAX,
 | |
| 	DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 | |
| };
 | |
| 
 | |
| enum devlink_port_type {
 | |
| 	DEVLINK_PORT_TYPE_NOTSET,
 | |
| 	DEVLINK_PORT_TYPE_AUTO,
 | |
| 	DEVLINK_PORT_TYPE_ETH,
 | |
| 	DEVLINK_PORT_TYPE_IB,
 | |
| };
 | |
| 
 | |
| enum devlink_sb_pool_type {
 | |
| 	DEVLINK_SB_POOL_TYPE_INGRESS,
 | |
| 	DEVLINK_SB_POOL_TYPE_EGRESS,
 | |
| };
 | |
| 
 | |
| /* static threshold - limiting the maximum number of bytes.
 | |
|  * dynamic threshold - limiting the maximum number of bytes
 | |
|  *   based on the currently available free space in the shared buffer pool.
 | |
|  *   In this mode, the maximum quota is calculated based
 | |
|  *   on the following formula:
 | |
|  *     max_quota = alpha / (1 + alpha) * Free_Buffer
 | |
|  *   While Free_Buffer is the amount of none-occupied buffer associated to
 | |
|  *   the relevant pool.
 | |
|  *   The value range which can be passed is 0-20 and serves
 | |
|  *   for computation of alpha by following formula:
 | |
|  *     alpha = 2 ^ (passed_value - 10)
 | |
|  */
 | |
| 
 | |
| enum devlink_sb_threshold_type {
 | |
| 	DEVLINK_SB_THRESHOLD_TYPE_STATIC,
 | |
| 	DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
 | |
| };
 | |
| 
 | |
| #define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
 | |
| 
 | |
| enum devlink_eswitch_mode {
 | |
| 	DEVLINK_ESWITCH_MODE_LEGACY,
 | |
| 	DEVLINK_ESWITCH_MODE_SWITCHDEV,
 | |
| };
 | |
| 
 | |
| enum devlink_eswitch_inline_mode {
 | |
| 	DEVLINK_ESWITCH_INLINE_MODE_NONE,
 | |
| 	DEVLINK_ESWITCH_INLINE_MODE_LINK,
 | |
| 	DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
 | |
| 	DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
 | |
| };
 | |
| 
 | |
| enum devlink_attr {
 | |
| 	/* don't change the order or add anything between, this is ABI! */
 | |
| 	DEVLINK_ATTR_UNSPEC,
 | |
| 
 | |
| 	/* bus name + dev name together are a handle for devlink entity */
 | |
| 	DEVLINK_ATTR_BUS_NAME,			/* string */
 | |
| 	DEVLINK_ATTR_DEV_NAME,			/* string */
 | |
| 
 | |
| 	DEVLINK_ATTR_PORT_INDEX,		/* u32 */
 | |
| 	DEVLINK_ATTR_PORT_TYPE,			/* u16 */
 | |
| 	DEVLINK_ATTR_PORT_DESIRED_TYPE,		/* u16 */
 | |
| 	DEVLINK_ATTR_PORT_NETDEV_IFINDEX,	/* u32 */
 | |
| 	DEVLINK_ATTR_PORT_NETDEV_NAME,		/* string */
 | |
| 	DEVLINK_ATTR_PORT_IBDEV_NAME,		/* string */
 | |
| 	DEVLINK_ATTR_PORT_SPLIT_COUNT,		/* u32 */
 | |
| 	DEVLINK_ATTR_PORT_SPLIT_GROUP,		/* u32 */
 | |
| 	DEVLINK_ATTR_SB_INDEX,			/* u32 */
 | |
| 	DEVLINK_ATTR_SB_SIZE,			/* u32 */
 | |
| 	DEVLINK_ATTR_SB_INGRESS_POOL_COUNT,	/* u16 */
 | |
| 	DEVLINK_ATTR_SB_EGRESS_POOL_COUNT,	/* u16 */
 | |
| 	DEVLINK_ATTR_SB_INGRESS_TC_COUNT,	/* u16 */
 | |
| 	DEVLINK_ATTR_SB_EGRESS_TC_COUNT,	/* u16 */
 | |
| 	DEVLINK_ATTR_SB_POOL_INDEX,		/* u16 */
 | |
| 	DEVLINK_ATTR_SB_POOL_TYPE,		/* u8 */
 | |
| 	DEVLINK_ATTR_SB_POOL_SIZE,		/* u32 */
 | |
| 	DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE,	/* u8 */
 | |
| 	DEVLINK_ATTR_SB_THRESHOLD,		/* u32 */
 | |
| 	DEVLINK_ATTR_SB_TC_INDEX,		/* u16 */
 | |
| 	DEVLINK_ATTR_SB_OCC_CUR,		/* u32 */
 | |
| 	DEVLINK_ATTR_SB_OCC_MAX,		/* u32 */
 | |
| 	DEVLINK_ATTR_ESWITCH_MODE,		/* u16 */
 | |
| 	DEVLINK_ATTR_ESWITCH_INLINE_MODE,	/* u8 */
 | |
| 
 | |
| 	/* add new attributes above here, update the policy in devlink.c */
 | |
| 
 | |
| 	__DEVLINK_ATTR_MAX,
 | |
| 	DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 | |
| };
 | |
| 
 | |
| #endif /* _LINUX_DEVLINK_H_ */
 | 
