mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	netlink: specs: devlink: add commands that do per-instance dump
Add the definitions for the commands that do per-instance dump and re-generate the related code. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Acked-by: Jakub Kicinski <kuba@kernel.org> Link: https://lore.kernel.org/r/20230811155714.1736405-8-jiri@resnulli.us Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									7d3c6fec61
								
							
						
					
					
						commit
						7199c86247
					
				
					 5 changed files with 4177 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -6,6 +6,16 @@ protocol: genetlink-legacy
 | 
			
		|||
 | 
			
		||||
doc: Partial family for Devlink.
 | 
			
		||||
 | 
			
		||||
definitions:
 | 
			
		||||
  -
 | 
			
		||||
    type: enum
 | 
			
		||||
    name: sb-pool-type
 | 
			
		||||
    entries:
 | 
			
		||||
      -
 | 
			
		||||
        name: ingress
 | 
			
		||||
      -
 | 
			
		||||
        name: egress
 | 
			
		||||
 | 
			
		||||
attribute-sets:
 | 
			
		||||
  -
 | 
			
		||||
    name: devlink
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +34,46 @@ attribute-sets:
 | 
			
		|||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: sb-index
 | 
			
		||||
        type: u32
 | 
			
		||||
        value: 11
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: sb-pool-index
 | 
			
		||||
        type: u16
 | 
			
		||||
        value: 17
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: sb-pool-type
 | 
			
		||||
        type: u8
 | 
			
		||||
        enum: sb-pool-type
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: sb-tc-index
 | 
			
		||||
        type: u16
 | 
			
		||||
        value: 22
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: param-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 81
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: region-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 88
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: info-driver-name
 | 
			
		||||
        type: string
 | 
			
		||||
| 
						 | 
				
			
			@ -55,10 +105,35 @@ attribute-sets:
 | 
			
		|||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: health-reporter-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 115
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: trap-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 130
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: trap-group-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 135
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: reload-failed
 | 
			
		||||
        type: u8
 | 
			
		||||
        value: 136
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: trap-policer-id
 | 
			
		||||
        type: u32
 | 
			
		||||
        value: 142
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -103,6 +178,21 @@ attribute-sets:
 | 
			
		|||
        type: nest
 | 
			
		||||
        multi-attr: true
 | 
			
		||||
        nested-attributes: dl-reload-act-stats
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: rate-node-name
 | 
			
		||||
        type: string
 | 
			
		||||
        value: 168
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the attributes in between
 | 
			
		||||
 | 
			
		||||
      -
 | 
			
		||||
        name: linecard-index
 | 
			
		||||
        type: u32
 | 
			
		||||
        value: 171
 | 
			
		||||
 | 
			
		||||
  -
 | 
			
		||||
    name: dl-dev-stats
 | 
			
		||||
    subset-of: devlink
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +278,188 @@ operations:
 | 
			
		|||
      dump:
 | 
			
		||||
        reply: *get-reply
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: port-get
 | 
			
		||||
      doc: Get devlink port instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit-port
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 5
 | 
			
		||||
          attributes: &port-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
        reply:
 | 
			
		||||
          value: 7
 | 
			
		||||
          attributes: *port-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply:
 | 
			
		||||
          value: 3  # due to a bug, port dump returns DEVLINK_CMD_NEW
 | 
			
		||||
          attributes: *port-id-attrs
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: sb-get
 | 
			
		||||
      doc: Get shared buffer instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 11
 | 
			
		||||
          attributes: &sb-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - sb-index
 | 
			
		||||
        reply: &sb-get-reply
 | 
			
		||||
          value: 11
 | 
			
		||||
          attributes: *sb-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *sb-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: sb-pool-get
 | 
			
		||||
      doc: Get shared buffer pool instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 15
 | 
			
		||||
          attributes: &sb-pool-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - sb-index
 | 
			
		||||
            - sb-pool-index
 | 
			
		||||
        reply: &sb-pool-get-reply
 | 
			
		||||
          value: 15
 | 
			
		||||
          attributes: *sb-pool-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *sb-pool-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: sb-port-pool-get
 | 
			
		||||
      doc: Get shared buffer port-pool combinations and threshold.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit-port
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 19
 | 
			
		||||
          attributes: &sb-port-pool-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
            - sb-index
 | 
			
		||||
            - sb-pool-index
 | 
			
		||||
        reply: &sb-port-pool-get-reply
 | 
			
		||||
          value: 19
 | 
			
		||||
          attributes: *sb-port-pool-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *sb-port-pool-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: sb-tc-pool-bind-get
 | 
			
		||||
      doc: Get shared buffer port-TC to pool bindings and threshold.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit-port
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 23
 | 
			
		||||
          attributes: &sb-tc-pool-bind-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
            - sb-index
 | 
			
		||||
            - sb-pool-type
 | 
			
		||||
            - sb-tc-index
 | 
			
		||||
        reply: &sb-tc-pool-bind-get-reply
 | 
			
		||||
          value: 23
 | 
			
		||||
          attributes: *sb-tc-pool-bind-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *sb-tc-pool-bind-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: param-get
 | 
			
		||||
      doc: Get param instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 38
 | 
			
		||||
          attributes: ¶m-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - param-name
 | 
			
		||||
        reply: ¶m-get-reply
 | 
			
		||||
          value: 38
 | 
			
		||||
          attributes: *param-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *param-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: region-get
 | 
			
		||||
      doc: Get region instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit-port-optional
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 42
 | 
			
		||||
          attributes: ®ion-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
            - region-name
 | 
			
		||||
        reply: ®ion-get-reply
 | 
			
		||||
          value: 42
 | 
			
		||||
          attributes: *region-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *region-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
| 
						 | 
				
			
			@ -216,3 +488,173 @@ operations:
 | 
			
		|||
            - info-version-stored
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *info-get-reply
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: health-reporter-get
 | 
			
		||||
      doc: Get health reporter instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit-port-optional
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          attributes: &health-reporter-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
            - health-reporter-name
 | 
			
		||||
        reply: &health-reporter-get-reply
 | 
			
		||||
          attributes: *health-reporter-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *health-reporter-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: trap-get
 | 
			
		||||
      doc: Get trap instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 61
 | 
			
		||||
          attributes: &trap-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - trap-name
 | 
			
		||||
        reply: &trap-get-reply
 | 
			
		||||
          value: 61
 | 
			
		||||
          attributes: *trap-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *trap-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: trap-group-get
 | 
			
		||||
      doc: Get trap group instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 65
 | 
			
		||||
          attributes: &trap-group-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - trap-group-name
 | 
			
		||||
        reply: &trap-group-get-reply
 | 
			
		||||
          value: 65
 | 
			
		||||
          attributes: *trap-group-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *trap-group-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: trap-policer-get
 | 
			
		||||
      doc: Get trap policer instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 69
 | 
			
		||||
          attributes: &trap-policer-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - trap-policer-id
 | 
			
		||||
        reply: &trap-policer-get-reply
 | 
			
		||||
          value: 69
 | 
			
		||||
          attributes: *trap-policer-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *trap-policer-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: rate-get
 | 
			
		||||
      doc: Get rate instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 74
 | 
			
		||||
          attributes: &rate-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - port-index
 | 
			
		||||
            - rate-node-name
 | 
			
		||||
        reply: &rate-get-reply
 | 
			
		||||
          value: 74
 | 
			
		||||
          attributes: *rate-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *rate-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: linecard-get
 | 
			
		||||
      doc: Get line card instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 78
 | 
			
		||||
          attributes: &linecard-id-attrs
 | 
			
		||||
            - bus-name
 | 
			
		||||
            - dev-name
 | 
			
		||||
            - linecard-index
 | 
			
		||||
        reply: &linecard-get-reply
 | 
			
		||||
          value: 78
 | 
			
		||||
          attributes: *linecard-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *linecard-get-reply
 | 
			
		||||
 | 
			
		||||
      # TODO: fill in the operations in between
 | 
			
		||||
 | 
			
		||||
    -
 | 
			
		||||
      name: selftests-get
 | 
			
		||||
      doc: Get device selftest instances.
 | 
			
		||||
      attribute-set: devlink
 | 
			
		||||
      dont-validate:
 | 
			
		||||
        - strict
 | 
			
		||||
        - dump
 | 
			
		||||
 | 
			
		||||
      do:
 | 
			
		||||
        pre: devlink-nl-pre-doit
 | 
			
		||||
        post: devlink-nl-post-doit
 | 
			
		||||
        request:
 | 
			
		||||
          value: 82
 | 
			
		||||
          attributes: *dev-id-attrs
 | 
			
		||||
        reply: &selftests-get-reply
 | 
			
		||||
          value: 82
 | 
			
		||||
          attributes: *dev-id-attrs
 | 
			
		||||
      dump:
 | 
			
		||||
        reply: *selftests-get-reply
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,14 +16,120 @@ static const struct nla_policy devlink_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1]
 | 
			
		|||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_PORT_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_port_get_nl_policy[DEVLINK_ATTR_PORT_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_SB_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_sb_get_nl_policy[DEVLINK_ATTR_SB_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_SB_POOL_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_sb_pool_get_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_SB_PORT_POOL_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_sb_port_pool_get_nl_policy[DEVLINK_ATTR_SB_POOL_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_sb_tc_pool_bind_get_nl_policy[DEVLINK_ATTR_SB_TC_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_SB_POOL_TYPE] = NLA_POLICY_MAX(NLA_U8, 1),
 | 
			
		||||
	[DEVLINK_ATTR_SB_TC_INDEX] = { .type = NLA_U16, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_PARAM_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_param_get_nl_policy[DEVLINK_ATTR_PARAM_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PARAM_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_REGION_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_region_get_nl_policy[DEVLINK_ATTR_REGION_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_INFO_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_info_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_health_reporter_get_nl_policy[DEVLINK_ATTR_HEALTH_REPORTER_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_HEALTH_REPORTER_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_TRAP_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_trap_get_nl_policy[DEVLINK_ATTR_TRAP_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_TRAP_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_TRAP_GROUP_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_trap_group_get_nl_policy[DEVLINK_ATTR_TRAP_GROUP_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_TRAP_GROUP_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_TRAP_POLICER_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_trap_policer_get_nl_policy[DEVLINK_ATTR_TRAP_POLICER_ID + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_TRAP_POLICER_ID] = { .type = NLA_U32, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_RATE_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_rate_get_nl_policy[DEVLINK_ATTR_RATE_NODE_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
	[DEVLINK_ATTR_RATE_NODE_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_LINECARD_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_linecard_get_nl_policy[DEVLINK_ATTR_LINECARD_INDEX + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_LINECARD_INDEX] = { .type = NLA_U32, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* DEVLINK_CMD_SELFTESTS_GET - do */
 | 
			
		||||
static const struct nla_policy devlink_selftests_get_nl_policy[DEVLINK_ATTR_DEV_NAME + 1] = {
 | 
			
		||||
	[DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
	[DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Ops table for devlink */
 | 
			
		||||
const struct genl_split_ops devlink_nl_ops[4] = {
 | 
			
		||||
const struct genl_split_ops devlink_nl_ops[32] = {
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +146,118 @@ const struct genl_split_ops devlink_nl_ops[4] = {
 | 
			
		|||
		.dumpit		= devlink_nl_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_PORT_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit_port,
 | 
			
		||||
		.doit		= devlink_nl_port_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_port_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_PORT_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_PORT_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_port_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_sb_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_sb_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_SB_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_sb_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_POOL_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_sb_pool_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_sb_pool_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_SB_POOL_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_POOL_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_sb_pool_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_PORT_POOL_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit_port,
 | 
			
		||||
		.doit		= devlink_nl_sb_port_pool_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_sb_port_pool_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_SB_POOL_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_PORT_POOL_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_sb_port_pool_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_TC_POOL_BIND_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit_port,
 | 
			
		||||
		.doit		= devlink_nl_sb_tc_pool_bind_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_sb_tc_pool_bind_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_SB_TC_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SB_TC_POOL_BIND_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_sb_tc_pool_bind_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_PARAM_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_param_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_param_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_PARAM_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_PARAM_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_param_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_REGION_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit_port_optional,
 | 
			
		||||
		.doit		= devlink_nl_region_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_region_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_REGION_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_REGION_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_region_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_INFO_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
| 
						 | 
				
			
			@ -56,4 +274,116 @@ const struct genl_split_ops devlink_nl_ops[4] = {
 | 
			
		|||
		.dumpit		= devlink_nl_info_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_HEALTH_REPORTER_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit_port_optional,
 | 
			
		||||
		.doit		= devlink_nl_health_reporter_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_health_reporter_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_HEALTH_REPORTER_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_HEALTH_REPORTER_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_health_reporter_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_trap_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_trap_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_TRAP_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_trap_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_GROUP_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_trap_group_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_trap_group_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_TRAP_GROUP_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_GROUP_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_trap_group_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_POLICER_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_trap_policer_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_trap_policer_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_TRAP_POLICER_ID,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_TRAP_POLICER_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_trap_policer_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_RATE_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_rate_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_rate_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_RATE_NODE_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_RATE_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_rate_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_LINECARD_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_linecard_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_linecard_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_LINECARD_INDEX,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_LINECARD_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_linecard_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SELFTESTS_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_STRICT,
 | 
			
		||||
		.pre_doit	= devlink_nl_pre_doit,
 | 
			
		||||
		.doit		= devlink_nl_selftests_get_doit,
 | 
			
		||||
		.post_doit	= devlink_nl_post_doit,
 | 
			
		||||
		.policy		= devlink_selftests_get_nl_policy,
 | 
			
		||||
		.maxattr	= DEVLINK_ATTR_DEV_NAME,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DO,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		.cmd		= DEVLINK_CMD_SELFTESTS_GET,
 | 
			
		||||
		.validate	= GENL_DONT_VALIDATE_DUMP,
 | 
			
		||||
		.dumpit		= devlink_nl_selftests_get_dumpit,
 | 
			
		||||
		.flags		= GENL_CMD_CAP_DUMP,
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,18 +12,68 @@
 | 
			
		|||
#include <uapi/linux/devlink.h>
 | 
			
		||||
 | 
			
		||||
/* Ops table for devlink */
 | 
			
		||||
extern const struct genl_split_ops devlink_nl_ops[4];
 | 
			
		||||
extern const struct genl_split_ops devlink_nl_ops[32];
 | 
			
		||||
 | 
			
		||||
int devlink_nl_pre_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
 | 
			
		||||
			struct genl_info *info);
 | 
			
		||||
int devlink_nl_pre_doit_port(const struct genl_split_ops *ops,
 | 
			
		||||
			     struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_pre_doit_port_optional(const struct genl_split_ops *ops,
 | 
			
		||||
				      struct sk_buff *skb,
 | 
			
		||||
				      struct genl_info *info);
 | 
			
		||||
void
 | 
			
		||||
devlink_nl_post_doit(const struct genl_split_ops *ops, struct sk_buff *skb,
 | 
			
		||||
		     struct genl_info *info);
 | 
			
		||||
 | 
			
		||||
int devlink_nl_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_port_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_port_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
			       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_sb_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_sb_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_sb_pool_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_sb_pool_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				  struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_sb_port_pool_get_doit(struct sk_buff *skb,
 | 
			
		||||
				     struct genl_info *info);
 | 
			
		||||
int devlink_nl_sb_port_pool_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_sb_tc_pool_bind_get_doit(struct sk_buff *skb,
 | 
			
		||||
					struct genl_info *info);
 | 
			
		||||
int devlink_nl_sb_tc_pool_bind_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
					  struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_param_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_param_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_region_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_region_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				 struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_info_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_info_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
			       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_health_reporter_get_doit(struct sk_buff *skb,
 | 
			
		||||
					struct genl_info *info);
 | 
			
		||||
int devlink_nl_health_reporter_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
					  struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_trap_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_trap_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
			       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_trap_group_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_trap_group_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				     struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_trap_policer_get_doit(struct sk_buff *skb,
 | 
			
		||||
				     struct genl_info *info);
 | 
			
		||||
int devlink_nl_trap_policer_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_rate_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_rate_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
			       struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_linecard_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_linecard_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				   struct netlink_callback *cb);
 | 
			
		||||
int devlink_nl_selftests_get_doit(struct sk_buff *skb, struct genl_info *info);
 | 
			
		||||
int devlink_nl_selftests_get_dumpit(struct sk_buff *skb,
 | 
			
		||||
				    struct netlink_callback *cb);
 | 
			
		||||
 | 
			
		||||
#endif /* _LINUX_DEVLINK_GEN_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
		Reference in a new issue