]> git.itanic.dy.fi Git - linux-stable/blobdiff - drivers/net/ethernet/freescale/enetc/enetc_pf.c
net: enetc: deny offload of tc-based TSN features on VF interfaces
[linux-stable] / drivers / net / ethernet / freescale / enetc / enetc_pf.c
index 201b5f3f634eb24e1a7eb63453d36f388ea6749e..bb7750222691dae9608cfc1c0196d22e5f8dd537 100644 (file)
@@ -734,6 +734,25 @@ static int enetc_pf_set_features(struct net_device *ndev,
        return 0;
 }
 
+static int enetc_pf_setup_tc(struct net_device *ndev, enum tc_setup_type type,
+                            void *type_data)
+{
+       switch (type) {
+       case TC_SETUP_QDISC_MQPRIO:
+               return enetc_setup_tc_mqprio(ndev, type_data);
+       case TC_SETUP_QDISC_TAPRIO:
+               return enetc_setup_tc_taprio(ndev, type_data);
+       case TC_SETUP_QDISC_CBS:
+               return enetc_setup_tc_cbs(ndev, type_data);
+       case TC_SETUP_QDISC_ETF:
+               return enetc_setup_tc_txtime(ndev, type_data);
+       case TC_SETUP_BLOCK:
+               return enetc_setup_tc_psfp(ndev, type_data);
+       default:
+               return -EOPNOTSUPP;
+       }
+}
+
 static const struct net_device_ops enetc_ndev_ops = {
        .ndo_open               = enetc_open,
        .ndo_stop               = enetc_close,
@@ -748,7 +767,7 @@ static const struct net_device_ops enetc_ndev_ops = {
        .ndo_set_vf_spoofchk    = enetc_pf_set_vf_spoofchk,
        .ndo_set_features       = enetc_pf_set_features,
        .ndo_eth_ioctl          = enetc_ioctl,
-       .ndo_setup_tc           = enetc_setup_tc,
+       .ndo_setup_tc           = enetc_pf_setup_tc,
        .ndo_bpf                = enetc_setup_bpf,
        .ndo_xdp_xmit           = enetc_xdp_xmit,
 };