fsl/fman: fix dtsec_set_tx_pause_frames
authorIgal Liberman <igal.liberman@freescale.com>
Sun, 13 Mar 2016 19:14:43 +0000 (21:14 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Mar 2016 19:03:10 +0000 (15:03 -0400)
Fix a bug introduced in e06a03b (fsl/fman: fix the pause_time test)
When pause_time is set to '0' - pause frames are disabled and
there's no need to apply dTSEC-A003 Errata workaround.

Signed-off-by: Igal Liberman <igal.liberman@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fman/fman_dtsec.c

index 7c92eb854925a352d52cb234fd2764f608e76caa..c88918c4c5f339c10eabb710810f26699a05eac8 100644 (file)
@@ -932,15 +932,14 @@ int dtsec_set_tx_pause_frames(struct fman_mac *dtsec,
        if (!is_init_done(dtsec->dtsec_drv_param))
                return -EINVAL;
 
-       /* FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 Errata workaround */
-       if (dtsec->fm_rev_info.major == 2)
-               if (pause_time <= 320) {
+       if (pause_time) {
+               /* FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 Errata workaround */
+               if (dtsec->fm_rev_info.major == 2 && pause_time <= 320) {
                        pr_warn("pause-time: %d illegal.Should be > 320\n",
                                pause_time);
                        return -EINVAL;
                }
 
-       if (pause_time) {
                ptv = ioread32be(&regs->ptv);
                ptv &= PTV_PTE_MASK;
                ptv |= pause_time & PTV_PT_MASK;