33 * Copyright (c) 2016 Jiri Pirko <[email protected] > 44 */
55
6+ #include <linux/etherdevice.h>
67#include <linux/mutex.h>
78#include <linux/netdevice.h>
89#include <linux/notifier.h>
1112#include <linux/xarray.h>
1213#include <net/devlink.h>
1314#include <net/net_namespace.h>
15+ #include <net/rtnetlink.h>
16+ #include <rdma/ib_verbs.h>
1417
1518#include "netlink_gen.h"
1619
@@ -118,14 +121,9 @@ typedef int devlink_nl_dump_one_func_t(struct sk_buff *msg,
118121 struct netlink_callback * cb ,
119122 int flags );
120123
121- extern const struct genl_small_ops devlink_nl_small_ops [40 ];
122-
123124struct devlink *
124125devlink_get_from_attrs_lock (struct net * net , struct nlattr * * attrs );
125126
126- void devlink_notify_unregister (struct devlink * devlink );
127- void devlink_notify_register (struct devlink * devlink );
128-
129127int devlink_nl_dumpit (struct sk_buff * msg , struct netlink_callback * cb ,
130128 devlink_nl_dump_one_func_t * dump_one );
131129
@@ -147,13 +145,36 @@ devlink_nl_put_handle(struct sk_buff *msg, struct devlink *devlink)
147145 return 0 ;
148146}
149147
148+ int devlink_nl_msg_reply_and_new (struct sk_buff * * msg , struct genl_info * info );
149+
150150/* Notify */
151- void devlink_notify (struct devlink * devlink , enum devlink_command cmd );
151+ void devlink_notify_register (struct devlink * devlink );
152+ void devlink_notify_unregister (struct devlink * devlink );
153+ void devlink_ports_notify_register (struct devlink * devlink );
154+ void devlink_ports_notify_unregister (struct devlink * devlink );
155+ void devlink_params_notify_register (struct devlink * devlink );
156+ void devlink_params_notify_unregister (struct devlink * devlink );
157+ void devlink_regions_notify_register (struct devlink * devlink );
158+ void devlink_regions_notify_unregister (struct devlink * devlink );
159+ void devlink_trap_policers_notify_register (struct devlink * devlink );
160+ void devlink_trap_policers_notify_unregister (struct devlink * devlink );
161+ void devlink_trap_groups_notify_register (struct devlink * devlink );
162+ void devlink_trap_groups_notify_unregister (struct devlink * devlink );
163+ void devlink_traps_notify_register (struct devlink * devlink );
164+ void devlink_traps_notify_unregister (struct devlink * devlink );
165+ void devlink_rates_notify_register (struct devlink * devlink );
166+ void devlink_rates_notify_unregister (struct devlink * devlink );
167+ void devlink_linecards_notify_register (struct devlink * devlink );
168+ void devlink_linecards_notify_unregister (struct devlink * devlink );
152169
153170/* Ports */
171+ #define ASSERT_DEVLINK_PORT_INITIALIZED (devlink_port ) \
172+ WARN_ON_ONCE(!(devlink_port)->initialized)
173+
174+ struct devlink_port * devlink_port_get_by_index (struct devlink * devlink ,
175+ unsigned int port_index );
154176int devlink_port_netdevice_event (struct notifier_block * nb ,
155177 unsigned long event , void * ptr );
156-
157178struct devlink_port *
158179devlink_port_get_from_info (struct devlink * devlink , struct genl_info * info );
159180struct devlink_port * devlink_port_get_from_attrs (struct devlink * devlink ,
@@ -184,12 +205,62 @@ int devlink_resources_validate(struct devlink *devlink,
184205int devlink_rate_nodes_check (struct devlink * devlink , u16 mode ,
185206 struct netlink_ext_ack * extack );
186207
208+ /* Linecards */
209+ struct devlink_linecard {
210+ struct list_head list ;
211+ struct devlink * devlink ;
212+ unsigned int index ;
213+ const struct devlink_linecard_ops * ops ;
214+ void * priv ;
215+ enum devlink_linecard_state state ;
216+ struct mutex state_lock ; /* Protects state */
217+ const char * type ;
218+ struct devlink_linecard_type * types ;
219+ unsigned int types_count ;
220+ struct devlink * nested_devlink ;
221+ };
222+
187223/* Devlink nl cmds */
188224int devlink_nl_cmd_reload (struct sk_buff * skb , struct genl_info * info );
189225int devlink_nl_cmd_eswitch_get_doit (struct sk_buff * skb , struct genl_info * info );
190226int devlink_nl_cmd_eswitch_set_doit (struct sk_buff * skb , struct genl_info * info );
191227int devlink_nl_cmd_flash_update (struct sk_buff * skb , struct genl_info * info );
192228int devlink_nl_cmd_selftests_run (struct sk_buff * skb , struct genl_info * info );
229+ int devlink_nl_cmd_port_set_doit (struct sk_buff * skb , struct genl_info * info );
230+ int devlink_nl_cmd_port_split_doit (struct sk_buff * skb , struct genl_info * info );
231+ int devlink_nl_cmd_port_unsplit_doit (struct sk_buff * skb ,
232+ struct genl_info * info );
233+ int devlink_nl_cmd_port_new_doit (struct sk_buff * skb , struct genl_info * info );
234+ int devlink_nl_cmd_port_del_doit (struct sk_buff * skb , struct genl_info * info );
235+ int devlink_nl_cmd_sb_pool_set_doit (struct sk_buff * skb , struct genl_info * info );
236+ int devlink_nl_cmd_sb_port_pool_set_doit (struct sk_buff * skb ,
237+ struct genl_info * info );
238+ int devlink_nl_cmd_sb_tc_pool_bind_set_doit (struct sk_buff * skb ,
239+ struct genl_info * info );
240+ int devlink_nl_cmd_sb_occ_snapshot_doit (struct sk_buff * skb ,
241+ struct genl_info * info );
242+ int devlink_nl_cmd_sb_occ_max_clear_doit (struct sk_buff * skb ,
243+ struct genl_info * info );
244+ int devlink_nl_cmd_dpipe_table_get (struct sk_buff * skb , struct genl_info * info );
245+ int devlink_nl_cmd_dpipe_entries_get (struct sk_buff * skb ,
246+ struct genl_info * info );
247+ int devlink_nl_cmd_dpipe_headers_get (struct sk_buff * skb ,
248+ struct genl_info * info );
249+ int devlink_nl_cmd_dpipe_table_counters_set (struct sk_buff * skb ,
250+ struct genl_info * info );
251+ int devlink_nl_cmd_resource_set (struct sk_buff * skb , struct genl_info * info );
252+ int devlink_nl_cmd_resource_dump (struct sk_buff * skb , struct genl_info * info );
253+ int devlink_nl_cmd_param_set_doit (struct sk_buff * skb , struct genl_info * info );
254+ int devlink_nl_cmd_port_param_get_dumpit (struct sk_buff * msg ,
255+ struct netlink_callback * cb );
256+ int devlink_nl_cmd_port_param_get_doit (struct sk_buff * skb ,
257+ struct genl_info * info );
258+ int devlink_nl_cmd_port_param_set_doit (struct sk_buff * skb ,
259+ struct genl_info * info );
260+ int devlink_nl_cmd_region_new (struct sk_buff * skb , struct genl_info * info );
261+ int devlink_nl_cmd_region_del (struct sk_buff * skb , struct genl_info * info );
262+ int devlink_nl_cmd_region_read_dumpit (struct sk_buff * skb ,
263+ struct netlink_callback * cb );
193264int devlink_nl_cmd_health_reporter_set_doit (struct sk_buff * skb ,
194265 struct genl_info * info );
195266int devlink_nl_cmd_health_reporter_recover_doit (struct sk_buff * skb ,
@@ -202,3 +273,13 @@ int devlink_nl_cmd_health_reporter_dump_clear_doit(struct sk_buff *skb,
202273 struct genl_info * info );
203274int devlink_nl_cmd_health_reporter_test_doit (struct sk_buff * skb ,
204275 struct genl_info * info );
276+ int devlink_nl_cmd_trap_set_doit (struct sk_buff * skb , struct genl_info * info );
277+ int devlink_nl_cmd_trap_group_set_doit (struct sk_buff * skb ,
278+ struct genl_info * info );
279+ int devlink_nl_cmd_trap_policer_set_doit (struct sk_buff * skb ,
280+ struct genl_info * info );
281+ int devlink_nl_cmd_rate_set_doit (struct sk_buff * skb , struct genl_info * info );
282+ int devlink_nl_cmd_rate_new_doit (struct sk_buff * skb , struct genl_info * info );
283+ int devlink_nl_cmd_rate_del_doit (struct sk_buff * skb , struct genl_info * info );
284+ int devlink_nl_cmd_linecard_set_doit (struct sk_buff * skb ,
285+ struct genl_info * info );
0 commit comments