.. | .. |
---|
1311 | 1311 | if (err) |
---|
1312 | 1312 | goto err_free_npa_lf; |
---|
1313 | 1313 | |
---|
1314 | | - /* Enable backpressure */ |
---|
1315 | | - otx2_nix_config_bp(pf, true); |
---|
| 1314 | + /* Enable backpressure for CGX mapped PF/VFs */ |
---|
| 1315 | + if (!is_otx2_lbkvf(pf->pdev)) |
---|
| 1316 | + otx2_nix_config_bp(pf, true); |
---|
1316 | 1317 | |
---|
1317 | 1318 | /* Init Auras and pools used by NIX RQ, for free buffer ptrs */ |
---|
1318 | 1319 | err = otx2_rq_aura_pool_init(pf); |
---|
.. | .. |
---|
1589 | 1590 | otx2_config_pause_frm(pf); |
---|
1590 | 1591 | |
---|
1591 | 1592 | err = otx2_rxtx_enable(pf, true); |
---|
1592 | | - if (err) |
---|
| 1593 | + /* If a mbox communication error happens at this point then interface |
---|
| 1594 | + * will end up in a state such that it is in down state but hardware |
---|
| 1595 | + * mcam entries are enabled to receive the packets. Hence disable the |
---|
| 1596 | + * packet I/O. |
---|
| 1597 | + */ |
---|
| 1598 | + if (err == EIO) |
---|
| 1599 | + goto err_disable_rxtx; |
---|
| 1600 | + else if (err) |
---|
1593 | 1601 | goto err_tx_stop_queues; |
---|
1594 | 1602 | |
---|
1595 | 1603 | return 0; |
---|
1596 | 1604 | |
---|
| 1605 | +err_disable_rxtx: |
---|
| 1606 | + otx2_rxtx_enable(pf, false); |
---|
1597 | 1607 | err_tx_stop_queues: |
---|
1598 | 1608 | netif_tx_stop_all_queues(netdev); |
---|
1599 | 1609 | netif_carrier_off(netdev); |
---|