act_mirred.c (8dd06ef34b6e2f41b29fbf5fc1663780f2524285) act_mirred.c (4b61d3e8d3daebbde7ec02d593f84248fdf8bec2)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/sched/act_mirred.c packet mirroring and redirect actions
4 *
5 * Authors: Jamal Hadi Salim (2002-4)
6 *
7 * TODO: Add ingress support (and socket redirect support)
8 */

--- 298 unchanged lines hidden (view full) ---

307 if (tcf_mirred_is_act_redirect(m_eaction))
308 retval = TC_ACT_SHOT;
309 }
310 __this_cpu_dec(mirred_rec_level);
311
312 return retval;
313}
314
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/sched/act_mirred.c packet mirroring and redirect actions
4 *
5 * Authors: Jamal Hadi Salim (2002-4)
6 *
7 * TODO: Add ingress support (and socket redirect support)
8 */

--- 298 unchanged lines hidden (view full) ---

307 if (tcf_mirred_is_act_redirect(m_eaction))
308 retval = TC_ACT_SHOT;
309 }
310 __this_cpu_dec(mirred_rec_level);
311
312 return retval;
313}
314
315static void tcf_stats_update(struct tc_action *a, u64 bytes, u32 packets,
316 u64 lastuse, bool hw)
315static void tcf_stats_update(struct tc_action *a, u64 bytes, u64 packets,
316 u64 drops, u64 lastuse, bool hw)
317{
318 struct tcf_mirred *m = to_mirred(a);
319 struct tcf_t *tm = &m->tcf_tm;
320
317{
318 struct tcf_mirred *m = to_mirred(a);
319 struct tcf_t *tm = &m->tcf_tm;
320
321 tcf_action_update_stats(a, bytes, packets, false, hw);
321 tcf_action_update_stats(a, bytes, packets, drops, hw);
322 tm->lastuse = max_t(u64, tm->lastuse, lastuse);
323}
324
325static int tcf_mirred_dump(struct sk_buff *skb, struct tc_action *a, int bind,
326 int ref)
327{
328 unsigned char *b = skb_tail_pointer(skb);
329 struct tcf_mirred *m = to_mirred(a);

--- 169 unchanged lines hidden ---
322 tm->lastuse = max_t(u64, tm->lastuse, lastuse);
323}
324
325static int tcf_mirred_dump(struct sk_buff *skb, struct tc_action *a, int bind,
326 int ref)
327{
328 unsigned char *b = skb_tail_pointer(skb);
329 struct tcf_mirred *m = to_mirred(a);

--- 169 unchanged lines hidden ---