@@ -20,22 +20,22 @@ This patch is to add the extended information also for linux channel.
2020 3 files changed, 134 insertions(+)
2121
2222diff --git a/include/net/devlink.h b/include/net/devlink.h
23- index b01bb9bca..e81314255 100644
23+ index ba6b8b0..214edcc 100644
2424--- a/include/net/devlink.h
2525+++ b/include/net/devlink.h
26- @@ -20,6 +20,10 @@
27- #include <uapi/linux/devlink.h>
26+ @@ -21,6 +21,10 @@
2827 #include <linux/xarray.h>
28+ #include <linux/firmware.h>
2929
3030+ #ifndef SX_EXTEND_WJH_BUFFER_LINUX_CHANNEL
3131+ #define SX_EXTEND_WJH_BUFFER_LINUX_CHANNEL
3232+ #endif
3333+
34- #define DEVLINK_RELOAD_STATS_ARRAY_SIZE \
35- (__DEVLINK_RELOAD_LIMIT_MAX * __DEVLINK_RELOAD_ACTION_MAX)
34+ struct devlink;
35+ struct devlink_linecard;
3636
37- @@ -665 ,6 +669 ,11 @@ struct devlink_health_reporter_ops {
38- * @input_dev: Input netdevice .
37+ @@ -711 ,6 +715 ,11 @@ struct devlink_health_reporter_ops {
38+ * @dev_tracker: refcount tracker for @input_dev .
3939 * @fa_cookie: Flow action user cookie.
4040 * @trap_type: Trap type.
4141+ * @output_port_dev: Output port netdevice.
@@ -46,8 +46,8 @@ index b01bb9bca..e81314255 100644
4646 */
4747 struct devlink_trap_metadata {
4848 const char *trap_name;
49- @@ -672 ,6 +681 ,15 @@ struct devlink_trap_metadata {
50- struct net_device *input_dev;
49+ @@ -721 ,6 +730 ,15 @@ struct devlink_trap_metadata {
50+
5151 const struct flow_action_cookie *fa_cookie;
5252 enum devlink_trap_type trap_type;
5353+ struct net_device *output_port_dev;
@@ -63,13 +63,13 @@ index b01bb9bca..e81314255 100644
6363
6464 /**
6565diff --git a/include/uapi/linux/net_dropmon.h b/include/uapi/linux/net_dropmon.h
66- index 66048cc5d..6afabc7a7 100644
66+ index 84f622a..d6f6399 100644
6767--- a/include/uapi/linux/net_dropmon.h
6868+++ b/include/uapi/linux/net_dropmon.h
69- @@ -93,6 +93,11 @@ enum net_dm_attr {
70- NET_DM_ATTR_SW_DROPS, /* flag */
69+ @@ -94,6 +94,11 @@ enum net_dm_attr {
7170 NET_DM_ATTR_HW_DROPS, /* flag */
7271 NET_DM_ATTR_FLOW_ACTION_COOKIE, /* binary */
72+ NET_DM_ATTR_REASON, /* string */
7373+ NET_DM_ATTR_OUT_PORT, /* nested */
7474+ NET_DM_ATTR_OUT_LAG, /* nested */
7575+ NET_DM_ATTR_OUT_TC, /* u16 */
@@ -79,10 +79,10 @@ index 66048cc5d..6afabc7a7 100644
7979 __NET_DM_ATTR_MAX,
8080 NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
8181diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
82- index db65ce62b..940d88b8b 100644
82+ index f084a4a..0405e10 100644
8383--- a/net/core/drop_monitor.c
8484+++ b/net/core/drop_monitor.c
85- @@ -599 ,6 +599 ,36 @@ static int net_dm_packet_report_in_port_put(struct sk_buff *msg, int ifindex,
85+ @@ -606 ,6 +606 ,36 @@ nla_put_failure:
8686 return -EMSGSIZE;
8787 }
8888
@@ -119,7 +119,7 @@ index db65ce62b..940d88b8b 100644
119119 static int net_dm_packet_report_fill(struct sk_buff *msg, struct sk_buff *skb,
120120 size_t payload_len)
121121 {
122- @@ -717 ,6 +747 ,16 @@ net_dm_flow_action_cookie_size(const struct devlink_trap_metadata *hw_metadata)
122+ @@ -731 ,6 +761 ,16 @@ net_dm_flow_action_cookie_size(const struct devlink_trap_metadata *hw_metadata)
123123 nla_total_size(hw_metadata->fa_cookie->cookie_len) : 0;
124124 }
125125
@@ -136,7 +136,7 @@ index db65ce62b..940d88b8b 100644
136136 static size_t
137137 net_dm_hw_packet_report_size(size_t payload_len,
138138 const struct devlink_trap_metadata *hw_metadata)
139- @@ -742 ,6 +782 ,16 @@ net_dm_hw_packet_report_size(size_t payload_len,
139+ @@ -756 ,6 +796 ,16 @@ net_dm_hw_packet_report_size(size_t payload_len,
140140 nla_total_size(sizeof(u32)) +
141141 /* NET_DM_ATTR_PROTO */
142142 nla_total_size(sizeof(u16)) +
@@ -153,7 +153,7 @@ index db65ce62b..940d88b8b 100644
153153 /* NET_DM_ATTR_PAYLOAD */
154154 nla_total_size(payload_len);
155155 }
156- @@ -787 ,6 +837 ,43 @@ static int net_dm_hw_packet_report_fill(struct sk_buff *msg,
156+ @@ -801 ,6 +851 ,43 @@ static int net_dm_hw_packet_report_fill(struct sk_buff *msg,
157157 hw_metadata->fa_cookie->cookie))
158158 goto nla_put_failure;
159159
@@ -197,44 +197,42 @@ index db65ce62b..940d88b8b 100644
197197 if (nla_put_u64_64bit(msg, NET_DM_ATTR_TIMESTAMP,
198198 ktime_to_ns(skb->tstamp), NET_DM_ATTR_PAD))
199199 goto nla_put_failure;
200- @@ -853 ,6 +940,26 @@ net_dm_hw_metadata_copy(const struct devlink_trap_metadata *metadata)
201- if (hw_metadata->input_dev)
202- dev_hold(hw_metadata->input_dev );
200+ @@ -867 ,6 +954,27 @@ net_dm_hw_metadata_copy(const struct devlink_trap_metadata *metadata)
201+ netdev_hold (hw_metadata->input_dev, &hw_metadata->dev_tracker,
202+ GFP_ATOMIC );
203203
204- + hw_metadata->output_port_dev = metadata->output_port_dev;
205- + if (hw_metadata->output_port_dev)
206- + dev_hold(hw_metadata->output_port_dev);
204+ + hw_metadata->output_port_dev = metadata->output_port_dev;
205+ + if (hw_metadata->output_port_dev)
206+ + netdev_hold(hw_metadata->output_port_dev, &hw_metadata->dev_tracker, GFP_ATOMIC);
207+ +
208+ + hw_metadata->output_lag_dev = metadata->output_lag_dev;
209+ + if (hw_metadata->output_lag_dev)
210+ + netdev_hold(hw_metadata->output_lag_dev, &hw_metadata->dev_tracker, GFP_ATOMIC);
207211+
208- + hw_metadata->output_lag_dev = metadata->output_lag_dev ;
209- + if (hw_metadata->output_lag_dev )
210- + dev_hold( hw_metadata->output_lag_dev) ;
212+ + hw_metadata->out_tc_valid = metadata->out_tc_valid ;
213+ + if (hw_metadata->out_tc_valid )
214+ + hw_metadata->out_tc = metadata->out_tc ;
211215+
212- + hw_metadata->out_tc_valid = metadata->out_tc_valid;
213- + if (hw_metadata->out_tc_valid)
214- + hw_metadata->out_tc = metadata->out_tc;
216+ + hw_metadata->out_tc_occ_valid = metadata->out_tc_occ_valid;
215217+
216- + hw_metadata->out_tc_occ_valid = metadata->out_tc_occ_valid;
217- + if (hw_metadata->out_tc_occ_valid)
218- + hw_metadata->out_tc_occ = metadata->out_tc_occ;
218+ + if (hw_metadata->out_tc_occ_valid)
219+ + hw_metadata->out_tc_occ = metadata->out_tc_occ;
219220+
220- + hw_metadata->latency_valid = metadata->latency_valid;
221- + if (hw_metadata->latency_valid)
222- + hw_metadata->latency = metadata->latency;
221+ + hw_metadata->latency_valid = metadata->latency_valid;
222+ + if (hw_metadata->latency_valid)
223+ + hw_metadata->latency = metadata->latency;
223224+
224225 return hw_metadata;
225226
226227 free_trap_name:
227- @@ -869,6 +976,10 @@ net_dm_hw_metadata_free(const struct devlink_trap_metadata *hw_metadata)
228+ @@ -882,6 +990,10 @@ static void
229+ net_dm_hw_metadata_free(struct devlink_trap_metadata *hw_metadata)
228230 {
229- if (hw_metadata->input_dev)
230- dev_put(hw_metadata->input_dev);
231- + if (hw_metadata->output_port_dev)
232- + dev_put(hw_metadata->output_port_dev);
233- + if (hw_metadata->output_lag_dev)
234- + dev_put(hw_metadata->output_lag_dev);
231+ netdev_put(hw_metadata->input_dev, &hw_metadata->dev_tracker);
232+ + if (hw_metadata->output_port_dev)
233+ + netdev_put(hw_metadata->output_port_dev, &hw_metadata->dev_tracker);
234+ + if (hw_metadata->output_lag_dev)
235+ + netdev_put(hw_metadata->output_lag_dev, &hw_metadata->dev_tracker);
235236 kfree(hw_metadata->fa_cookie);
236237 kfree(hw_metadata->trap_name);
237238 kfree(hw_metadata->trap_group_name);
238- - -
239- 2.30.2
240-
0 commit comments