mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
432 lines
14 KiB
Diff
432 lines
14 KiB
Diff
|
From fec484580477d93cd69e5355be68e6f5bf1a1e54 Mon Sep 17 00:00:00 2001
|
||
|
From: Camelia Groza <camelia.groza@nxp.com>
|
||
|
Date: Mon, 9 Dec 2019 18:20:05 +0200
|
||
|
Subject: [PATCH] sdk_dpaa: ceetm: coding style cleanup
|
||
|
|
||
|
Fix checkpatch warnings and use reverse Christmas tree variable ordering
|
||
|
throughout the driver.
|
||
|
|
||
|
Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
|
||
|
---
|
||
|
.../ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c | 145 +++++++++++----------
|
||
|
1 file changed, 76 insertions(+), 69 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c
|
||
|
+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_ceetm.c
|
||
|
@@ -1,4 +1,5 @@
|
||
|
/* Copyright 2008-2016 Freescale Semiconductor Inc.
|
||
|
+ * Copyright 2019 NXP
|
||
|
*
|
||
|
* Redistribution and use in source and binary forms, with or without
|
||
|
* modification, are permitted provided that the following conditions are met:
|
||
|
@@ -47,10 +48,10 @@ struct Qdisc_ops ceetm_qdisc_ops;
|
||
|
static void get_dcp_and_sp(struct net_device *dev, enum qm_dc_portal *dcp_id,
|
||
|
unsigned int *sp_id)
|
||
|
{
|
||
|
- uint32_t channel;
|
||
|
- t_LnxWrpFmPortDev *port_dev;
|
||
|
struct dpa_priv_s *dpa_priv = netdev_priv(dev);
|
||
|
struct mac_device *mac_dev = dpa_priv->mac_dev;
|
||
|
+ t_LnxWrpFmPortDev *port_dev;
|
||
|
+ uint32_t channel;
|
||
|
|
||
|
port_dev = (t_LnxWrpFmPortDev *)mac_dev->port_dev[TX];
|
||
|
channel = port_dev->txCh;
|
||
|
@@ -75,7 +76,7 @@ static void dpaa_drain_fqs(struct net_de
|
||
|
struct qman_fq *fq;
|
||
|
int ret, i;
|
||
|
|
||
|
- for (i = 0; i < DPAA_ETH_TX_QUEUES; i ++) {
|
||
|
+ for (i = 0; i < DPAA_ETH_TX_QUEUES; i++) {
|
||
|
fq = priv->egress_fqs[i];
|
||
|
while (true) {
|
||
|
ret = qman_query_fq_np(fq, &np);
|
||
|
@@ -96,7 +97,7 @@ static void dpaa_drain_fqs(struct net_de
|
||
|
static void ceetm_drain_class(struct ceetm_class *cl)
|
||
|
{
|
||
|
struct qm_mcr_ceetm_cq_query cq_query;
|
||
|
- struct qm_ceetm_cq *cq;
|
||
|
+ struct qm_ceetm_cq *cq = NULL;
|
||
|
unsigned int idx;
|
||
|
int ret;
|
||
|
|
||
|
@@ -108,10 +109,10 @@ static void ceetm_drain_class(struct cee
|
||
|
/* The ROOT classes aren't directly linked to CEETM CQs */
|
||
|
return;
|
||
|
case CEETM_PRIO:
|
||
|
- cq = (struct qm_ceetm_cq*)cl->prio.cq;
|
||
|
+ cq = (struct qm_ceetm_cq *)cl->prio.cq;
|
||
|
break;
|
||
|
case CEETM_WBFS:
|
||
|
- cq = (struct qm_ceetm_cq*)cl->wbfs.cq;
|
||
|
+ cq = (struct qm_ceetm_cq *)cl->wbfs.cq;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
@@ -190,10 +191,14 @@ static void ceetm_ern(struct qman_portal
|
||
|
/* Congestion State Change Notification callback */
|
||
|
static void ceetm_cscn(struct qm_ceetm_ccg *ccg, void *cb_ctx, int congested)
|
||
|
{
|
||
|
- struct ceetm_fq *ceetm_fq = (struct ceetm_fq *)cb_ctx;
|
||
|
- struct dpa_priv_s *dpa_priv = netdev_priv(ceetm_fq->net_dev);
|
||
|
- struct ceetm_class *cls = ceetm_fq->ceetm_cls;
|
||
|
struct ceetm_class_stats *cstats = NULL;
|
||
|
+ struct dpa_priv_s *dpa_priv;
|
||
|
+ struct ceetm_fq *ceetm_fq;
|
||
|
+ struct ceetm_class *cls;
|
||
|
+
|
||
|
+ ceetm_fq = (struct ceetm_fq *)cb_ctx;
|
||
|
+ dpa_priv = netdev_priv(ceetm_fq->net_dev);
|
||
|
+ cls = ceetm_fq->ceetm_cls;
|
||
|
|
||
|
switch (cls->type) {
|
||
|
case CEETM_PRIO:
|
||
|
@@ -236,10 +241,10 @@ static int ceetm_config_ccg(struct qm_ce
|
||
|
struct qm_ceetm_channel *channel, unsigned int id,
|
||
|
struct ceetm_fq *fq, struct dpa_priv_s *dpa_priv)
|
||
|
{
|
||
|
- int err;
|
||
|
- u32 cs_th;
|
||
|
- u16 ccg_mask;
|
||
|
struct qm_ceetm_ccg_params ccg_params;
|
||
|
+ u16 ccg_mask;
|
||
|
+ u32 cs_th;
|
||
|
+ int err;
|
||
|
|
||
|
err = qman_ceetm_ccg_claim(ccg, channel, id, ceetm_cscn, fq);
|
||
|
if (err)
|
||
|
@@ -284,9 +289,9 @@ static int ceetm_config_ccg(struct qm_ce
|
||
|
static int ceetm_config_lfq(struct qm_ceetm_cq *cq, struct ceetm_fq *fq,
|
||
|
struct qm_ceetm_lfq **lfq)
|
||
|
{
|
||
|
- int err;
|
||
|
u64 context_a;
|
||
|
u32 context_b;
|
||
|
+ int err;
|
||
|
|
||
|
err = qman_ceetm_lfq_claim(lfq, cq);
|
||
|
if (err)
|
||
|
@@ -316,8 +321,8 @@ static int ceetm_config_prio_cls(struct
|
||
|
struct net_device *dev,
|
||
|
unsigned int id)
|
||
|
{
|
||
|
- int err;
|
||
|
struct dpa_priv_s *dpa_priv = netdev_priv(dev);
|
||
|
+ int err;
|
||
|
|
||
|
err = ceetm_alloc_fq(&cls->prio.fq, dev, cls);
|
||
|
if (err)
|
||
|
@@ -357,8 +362,8 @@ static int ceetm_config_wbfs_cls(struct
|
||
|
struct net_device *dev,
|
||
|
unsigned int id, int type)
|
||
|
{
|
||
|
- int err;
|
||
|
struct dpa_priv_s *dpa_priv = netdev_priv(dev);
|
||
|
+ int err;
|
||
|
|
||
|
err = ceetm_alloc_fq(&cls->wbfs.fq, dev, cls);
|
||
|
if (err)
|
||
|
@@ -517,11 +522,11 @@ static void ceetm_cls_destroy(struct Qdi
|
||
|
/* Destroy a ceetm qdisc */
|
||
|
static void ceetm_destroy(struct Qdisc *sch)
|
||
|
{
|
||
|
- unsigned int ntx, i;
|
||
|
- struct hlist_node *next;
|
||
|
- struct ceetm_class *cl;
|
||
|
struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
struct net_device *dev = qdisc_dev(sch);
|
||
|
+ struct hlist_node *next;
|
||
|
+ struct ceetm_class *cl;
|
||
|
+ unsigned int ntx, i;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : destroy qdisc %X\n",
|
||
|
__func__, sch->handle);
|
||
|
@@ -592,13 +597,13 @@ static void ceetm_destroy(struct Qdisc *
|
||
|
|
||
|
static int ceetm_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||
|
{
|
||
|
+ struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
+ struct net_device *dev = qdisc_dev(sch);
|
||
|
+ struct ceetm_qdisc_stats *qstats;
|
||
|
+ struct tc_ceetm_qopt qopt;
|
||
|
struct Qdisc *qdisc;
|
||
|
unsigned int ntx, i;
|
||
|
struct nlattr *nest;
|
||
|
- struct tc_ceetm_qopt qopt;
|
||
|
- struct ceetm_qdisc_stats *qstats;
|
||
|
- struct net_device *dev = qdisc_dev(sch);
|
||
|
- struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
@@ -673,17 +678,20 @@ static int ceetm_init_root(struct Qdisc
|
||
|
struct tc_ceetm_qopt *qopt,
|
||
|
struct netlink_ext_ack *extack)
|
||
|
{
|
||
|
+ struct net_device *dev = qdisc_dev(sch);
|
||
|
+ unsigned int i, sp_id, parent_id;
|
||
|
struct netdev_queue *dev_queue;
|
||
|
- struct Qdisc *qdisc;
|
||
|
+ struct dpa_priv_s *dpa_priv;
|
||
|
+ struct mac_device *mac_dev;
|
||
|
enum qm_dc_portal dcp_id;
|
||
|
- unsigned int i, sp_id, parent_id;
|
||
|
+ struct qm_ceetm_lni *lni;
|
||
|
+ struct qm_ceetm_sp *sp;
|
||
|
+ struct Qdisc *qdisc;
|
||
|
int err;
|
||
|
u64 bps;
|
||
|
- struct qm_ceetm_sp *sp;
|
||
|
- struct qm_ceetm_lni *lni;
|
||
|
- struct net_device *dev = qdisc_dev(sch);
|
||
|
- struct dpa_priv_s *dpa_priv = netdev_priv(dev);
|
||
|
- struct mac_device *mac_dev = dpa_priv->mac_dev;
|
||
|
+
|
||
|
+ dpa_priv = netdev_priv(dev);
|
||
|
+ mac_dev = dpa_priv->mac_dev;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
@@ -711,9 +719,8 @@ static int ceetm_init_root(struct Qdisc
|
||
|
priv->root.qdiscs = kcalloc(dev->num_tx_queues,
|
||
|
sizeof(priv->root.qdiscs[0]),
|
||
|
GFP_KERNEL);
|
||
|
- if (!priv->root.qdiscs) {
|
||
|
+ if (!priv->root.qdiscs)
|
||
|
return -ENOMEM;
|
||
|
- }
|
||
|
|
||
|
for (i = 0; i < dev->num_tx_queues; i++) {
|
||
|
dev_queue = netdev_get_tx_queue(dev, i);
|
||
|
@@ -811,11 +818,11 @@ static int ceetm_init_root(struct Qdisc
|
||
|
static int ceetm_init_prio(struct Qdisc *sch, struct ceetm_qdisc *priv,
|
||
|
struct tc_ceetm_qopt *qopt)
|
||
|
{
|
||
|
- int err;
|
||
|
- unsigned int i;
|
||
|
struct ceetm_class *parent_cl, *child_cl;
|
||
|
struct net_device *dev = qdisc_dev(sch);
|
||
|
struct Qdisc *root_qdisc = dev->qdisc;
|
||
|
+ unsigned int i;
|
||
|
+ int err;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
@@ -852,11 +859,8 @@ static int ceetm_init_prio(struct Qdisc
|
||
|
/* Create and configure qcount child classes */
|
||
|
for (i = 0; i < priv->prio.qcount; i++) {
|
||
|
child_cl = kzalloc(sizeof(*child_cl), GFP_KERNEL);
|
||
|
- if (!child_cl) {
|
||
|
- pr_err(KBUILD_BASENAME " : %s : kzalloc() failed\n",
|
||
|
- __func__);
|
||
|
+ if (!child_cl)
|
||
|
return -ENOMEM;
|
||
|
- }
|
||
|
|
||
|
child_cl->prio.cstats = alloc_percpu(struct ceetm_class_stats);
|
||
|
if (!child_cl->prio.cstats) {
|
||
|
@@ -906,12 +910,12 @@ err_init_prio_cls:
|
||
|
static int ceetm_init_wbfs(struct Qdisc *sch, struct ceetm_qdisc *priv,
|
||
|
struct tc_ceetm_qopt *qopt)
|
||
|
{
|
||
|
- int err, group_b, small_group;
|
||
|
- unsigned int i, id, prio_a, prio_b;
|
||
|
struct ceetm_class *parent_cl, *child_cl, *tmp_cl, *root_cl = NULL;
|
||
|
struct Qdisc *root_qdisc, *parent_qdisc = NULL;
|
||
|
- struct ceetm_qdisc *root_priv;
|
||
|
struct net_device *dev = qdisc_dev(sch);
|
||
|
+ unsigned int i, id, prio_a, prio_b;
|
||
|
+ int err, group_b, small_group;
|
||
|
+ struct ceetm_qdisc *root_priv;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
@@ -1070,11 +1074,8 @@ static int ceetm_init_wbfs(struct Qdisc
|
||
|
/* Create qcount child classes */
|
||
|
for (i = 0; i < priv->wbfs.qcount; i++) {
|
||
|
child_cl = kzalloc(sizeof(*child_cl), GFP_KERNEL);
|
||
|
- if (!child_cl) {
|
||
|
- pr_err(KBUILD_BASENAME " : %s : kzalloc() failed\n",
|
||
|
- __func__);
|
||
|
+ if (!child_cl)
|
||
|
return -ENOMEM;
|
||
|
- }
|
||
|
|
||
|
child_cl->wbfs.cstats = alloc_percpu(struct ceetm_class_stats);
|
||
|
if (!child_cl->wbfs.cstats) {
|
||
|
@@ -1138,11 +1139,11 @@ err_init_wbfs_cls:
|
||
|
static int ceetm_init(struct Qdisc *sch, struct nlattr *opt,
|
||
|
struct netlink_ext_ack *extack)
|
||
|
{
|
||
|
- struct tc_ceetm_qopt *qopt;
|
||
|
- struct nlattr *tb[TCA_CEETM_QOPS + 1];
|
||
|
- int ret;
|
||
|
struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
struct net_device *dev = qdisc_dev(sch);
|
||
|
+ struct nlattr *tb[TCA_CEETM_QOPS + 1];
|
||
|
+ struct tc_ceetm_qopt *qopt;
|
||
|
+ int ret;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
@@ -1158,7 +1159,8 @@ static int ceetm_init(struct Qdisc *sch,
|
||
|
if (ret)
|
||
|
return ret;
|
||
|
|
||
|
- ret = nla_parse_nested_deprecated(tb, TCA_CEETM_QOPS, opt, ceetm_policy, NULL);
|
||
|
+ ret = nla_parse_nested_deprecated(tb, TCA_CEETM_QOPS, opt,
|
||
|
+ ceetm_policy, NULL);
|
||
|
if (ret < 0) {
|
||
|
pr_err(KBUILD_BASENAME " : %s : tc error\n", __func__);
|
||
|
return ret;
|
||
|
@@ -1265,8 +1267,8 @@ change_err:
|
||
|
static int ceetm_change_wbfs(struct Qdisc *sch, struct ceetm_qdisc *priv,
|
||
|
struct tc_ceetm_qopt *qopt)
|
||
|
{
|
||
|
- int err;
|
||
|
bool group_b;
|
||
|
+ int err;
|
||
|
|
||
|
if (qopt->qcount) {
|
||
|
pr_err("CEETM: the qcount can not be modified\n");
|
||
|
@@ -1324,15 +1326,16 @@ change_err:
|
||
|
static int ceetm_change(struct Qdisc *sch, struct nlattr *opt,
|
||
|
struct netlink_ext_ack *extack)
|
||
|
{
|
||
|
- struct tc_ceetm_qopt *qopt;
|
||
|
- struct nlattr *tb[TCA_CEETM_QOPS + 1];
|
||
|
- int ret;
|
||
|
struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
struct net_device *dev = qdisc_dev(sch);
|
||
|
+ struct nlattr *tb[TCA_CEETM_QOPS + 1];
|
||
|
+ struct tc_ceetm_qopt *qopt;
|
||
|
+ int ret;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : qdisc %X\n", __func__, sch->handle);
|
||
|
|
||
|
- ret = nla_parse_nested_deprecated(tb, TCA_CEETM_QOPS, opt, ceetm_policy, NULL);
|
||
|
+ ret = nla_parse_nested_deprecated(tb, TCA_CEETM_QOPS, opt,
|
||
|
+ ceetm_policy, NULL);
|
||
|
if (ret < 0) {
|
||
|
pr_err(KBUILD_BASENAME " : %s : tc error\n", __func__);
|
||
|
return ret;
|
||
|
@@ -1381,8 +1384,8 @@ static int ceetm_change(struct Qdisc *sc
|
||
|
*/
|
||
|
static void ceetm_attach(struct Qdisc *sch)
|
||
|
{
|
||
|
- struct net_device *dev = qdisc_dev(sch);
|
||
|
struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
+ struct net_device *dev = qdisc_dev(sch);
|
||
|
struct Qdisc *qdisc, *old_qdisc;
|
||
|
unsigned int i;
|
||
|
|
||
|
@@ -1461,8 +1464,8 @@ static int ceetm_cls_change_prio(struct
|
||
|
}
|
||
|
|
||
|
if (cl->prio.cr != (bool)copt->cr) {
|
||
|
- err = qman_ceetm_channel_set_cq_cr_eligibility(
|
||
|
- cl->prio.cq->parent,
|
||
|
+ err = qman_ceetm_channel_set_cq_cr_eligibility
|
||
|
+ (cl->prio.cq->parent,
|
||
|
cl->prio.cq->idx,
|
||
|
copt->cr);
|
||
|
if (err)
|
||
|
@@ -1471,8 +1474,8 @@ static int ceetm_cls_change_prio(struct
|
||
|
}
|
||
|
|
||
|
if (cl->prio.er != (bool)copt->er) {
|
||
|
- err = qman_ceetm_channel_set_cq_er_eligibility(
|
||
|
- cl->prio.cq->parent,
|
||
|
+ err = qman_ceetm_channel_set_cq_er_eligibility
|
||
|
+ (cl->prio.cq->parent,
|
||
|
cl->prio.cq->idx,
|
||
|
copt->er);
|
||
|
if (err)
|
||
|
@@ -1517,15 +1520,15 @@ static int ceetm_cls_change(struct Qdisc
|
||
|
struct nlattr **tca, unsigned long *arg,
|
||
|
struct netlink_ext_ack *extack)
|
||
|
{
|
||
|
- int err;
|
||
|
- u64 bps;
|
||
|
- struct ceetm_qdisc *priv;
|
||
|
struct ceetm_class *cl = (struct ceetm_class *)*arg;
|
||
|
+ struct net_device *dev = qdisc_dev(sch);
|
||
|
struct nlattr *opt = tca[TCA_OPTIONS];
|
||
|
struct nlattr *tb[__TCA_CEETM_MAX];
|
||
|
- struct tc_ceetm_copt *copt;
|
||
|
struct qm_ceetm_channel *channel;
|
||
|
- struct net_device *dev = qdisc_dev(sch);
|
||
|
+ struct tc_ceetm_copt *copt;
|
||
|
+ struct ceetm_qdisc *priv;
|
||
|
+ int err;
|
||
|
+ u64 bps;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : classid %X under qdisc %X\n",
|
||
|
__func__, classid, sch->handle);
|
||
|
@@ -1552,7 +1555,8 @@ static int ceetm_cls_change(struct Qdisc
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|
||
|
- err = nla_parse_nested_deprecated(tb, TCA_CEETM_COPT, opt, ceetm_policy, NULL);
|
||
|
+ err = nla_parse_nested_deprecated(tb, TCA_CEETM_COPT, opt,
|
||
|
+ ceetm_policy, NULL);
|
||
|
if (err < 0) {
|
||
|
pr_err(KBUILD_BASENAME " : %s : tc error\n", __func__);
|
||
|
return -EINVAL;
|
||
|
@@ -1714,8 +1718,8 @@ static int ceetm_cls_dump(struct Qdisc *
|
||
|
struct sk_buff *skb, struct tcmsg *tcm)
|
||
|
{
|
||
|
struct ceetm_class *cl = (struct ceetm_class *)arg;
|
||
|
- struct nlattr *nest;
|
||
|
struct tc_ceetm_copt copt;
|
||
|
+ struct nlattr *nest;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : class %X under qdisc %X\n",
|
||
|
__func__, cl->common.classid, sch->handle);
|
||
|
@@ -1770,8 +1774,8 @@ nla_put_failure:
|
||
|
|
||
|
static int ceetm_cls_delete(struct Qdisc *sch, unsigned long arg)
|
||
|
{
|
||
|
- struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
struct ceetm_class *cl = (struct ceetm_class *)arg;
|
||
|
+ struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : class %X under qdisc %X\n",
|
||
|
__func__, cl->common.classid, sch->handle);
|
||
|
@@ -1818,12 +1822,12 @@ static int ceetm_cls_graft(struct Qdisc
|
||
|
static int ceetm_cls_dump_stats(struct Qdisc *sch, unsigned long arg,
|
||
|
struct gnet_dump *d)
|
||
|
{
|
||
|
- unsigned int i;
|
||
|
struct ceetm_class *cl = (struct ceetm_class *)arg;
|
||
|
struct gnet_stats_basic_packed tmp_bstats;
|
||
|
struct ceetm_class_stats *cstats = NULL;
|
||
|
struct qm_ceetm_cq *cq = NULL;
|
||
|
struct tc_ceetm_xstats xstats;
|
||
|
+ unsigned int i;
|
||
|
|
||
|
memset(&xstats, 0, sizeof(xstats));
|
||
|
memset(&tmp_bstats, 0, sizeof(tmp_bstats));
|
||
|
@@ -1872,9 +1876,11 @@ static int ceetm_cls_dump_stats(struct Q
|
||
|
static struct tcf_block *ceetm_tcf_block(struct Qdisc *sch, unsigned long arg,
|
||
|
struct netlink_ext_ack *extack)
|
||
|
{
|
||
|
- struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
struct ceetm_class *cl = (struct ceetm_class *)arg;
|
||
|
- struct tcf_block *block = cl ? cl->block : priv->block;
|
||
|
+ struct ceetm_qdisc *priv = qdisc_priv(sch);
|
||
|
+ struct tcf_block *block;
|
||
|
+
|
||
|
+ block = cl ? cl->block : priv->block;
|
||
|
|
||
|
pr_debug(KBUILD_BASENAME " : %s : class %X under qdisc %X\n", __func__,
|
||
|
cl ? cl->common.classid : 0, sch->handle);
|
||
|
@@ -1945,6 +1951,7 @@ static struct ceetm_class *ceetm_classif
|
||
|
case TC_ACT_STOLEN:
|
||
|
case TC_ACT_TRAP:
|
||
|
*qerr = NET_XMIT_SUCCESS | __NET_XMIT_STOLEN;
|
||
|
+ /* fall through */
|
||
|
case TC_ACT_SHOT:
|
||
|
/* No valid class found due to action */
|
||
|
*act_drop = true;
|