Merge branch 'bnxt_en-bug-fixes'
Michael Chan says: ==================== bnxt_en: Bug fixes This series includes 2 fixes for regressions introduced by the XDP multi-buffer feature, 1 devlink reload bug fix, and 1 SRIOV resource accounting bug fix. ==================== Link: https://lore.kernel.org/r/1661180814-19350-1-git-send-email-michael.chan@broadcom.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
1eec80946a
@ -11178,10 +11178,7 @@ static netdev_features_t bnxt_fix_features(struct net_device *dev,
|
|||||||
if ((features & NETIF_F_NTUPLE) && !bnxt_rfs_capable(bp))
|
if ((features & NETIF_F_NTUPLE) && !bnxt_rfs_capable(bp))
|
||||||
features &= ~NETIF_F_NTUPLE;
|
features &= ~NETIF_F_NTUPLE;
|
||||||
|
|
||||||
if (bp->flags & BNXT_FLAG_NO_AGG_RINGS)
|
if ((bp->flags & BNXT_FLAG_NO_AGG_RINGS) || bp->xdp_prog)
|
||||||
features &= ~(NETIF_F_LRO | NETIF_F_GRO_HW);
|
|
||||||
|
|
||||||
if (!(bp->flags & BNXT_FLAG_TPA))
|
|
||||||
features &= ~(NETIF_F_LRO | NETIF_F_GRO_HW);
|
features &= ~(NETIF_F_LRO | NETIF_F_GRO_HW);
|
||||||
|
|
||||||
if (!(features & NETIF_F_GRO))
|
if (!(features & NETIF_F_GRO))
|
||||||
|
@ -2130,6 +2130,7 @@ struct bnxt {
|
|||||||
#define BNXT_DUMP_CRASH 1
|
#define BNXT_DUMP_CRASH 1
|
||||||
|
|
||||||
struct bpf_prog *xdp_prog;
|
struct bpf_prog *xdp_prog;
|
||||||
|
u8 xdp_has_frags;
|
||||||
|
|
||||||
struct bnxt_ptp_cfg *ptp_cfg;
|
struct bnxt_ptp_cfg *ptp_cfg;
|
||||||
u8 ptp_all_rx_tstamp;
|
u8 ptp_all_rx_tstamp;
|
||||||
|
@ -1306,6 +1306,7 @@ int bnxt_dl_register(struct bnxt *bp)
|
|||||||
if (rc)
|
if (rc)
|
||||||
goto err_dl_port_unreg;
|
goto err_dl_port_unreg;
|
||||||
|
|
||||||
|
devlink_set_features(dl, DEVLINK_F_RELOAD);
|
||||||
out:
|
out:
|
||||||
devlink_register(dl);
|
devlink_register(dl);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -623,7 +623,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset)
|
|||||||
hw_resc->max_stat_ctxs -= le16_to_cpu(req->min_stat_ctx) * n;
|
hw_resc->max_stat_ctxs -= le16_to_cpu(req->min_stat_ctx) * n;
|
||||||
hw_resc->max_vnics -= le16_to_cpu(req->min_vnics) * n;
|
hw_resc->max_vnics -= le16_to_cpu(req->min_vnics) * n;
|
||||||
if (bp->flags & BNXT_FLAG_CHIP_P5)
|
if (bp->flags & BNXT_FLAG_CHIP_P5)
|
||||||
hw_resc->max_irqs -= vf_msix * n;
|
hw_resc->max_nqs -= vf_msix;
|
||||||
|
|
||||||
rc = pf->active_vfs;
|
rc = pf->active_vfs;
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,7 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
|
|||||||
struct xdp_buff *xdp)
|
struct xdp_buff *xdp)
|
||||||
{
|
{
|
||||||
struct bnxt_sw_rx_bd *rx_buf;
|
struct bnxt_sw_rx_bd *rx_buf;
|
||||||
|
u32 buflen = PAGE_SIZE;
|
||||||
struct pci_dev *pdev;
|
struct pci_dev *pdev;
|
||||||
dma_addr_t mapping;
|
dma_addr_t mapping;
|
||||||
u32 offset;
|
u32 offset;
|
||||||
@ -192,7 +193,10 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
|
|||||||
mapping = rx_buf->mapping - bp->rx_dma_offset;
|
mapping = rx_buf->mapping - bp->rx_dma_offset;
|
||||||
dma_sync_single_for_cpu(&pdev->dev, mapping + offset, *len, bp->rx_dir);
|
dma_sync_single_for_cpu(&pdev->dev, mapping + offset, *len, bp->rx_dir);
|
||||||
|
|
||||||
xdp_init_buff(xdp, BNXT_PAGE_MODE_BUF_SIZE + offset, &rxr->xdp_rxq);
|
if (bp->xdp_has_frags)
|
||||||
|
buflen = BNXT_PAGE_MODE_BUF_SIZE + offset;
|
||||||
|
|
||||||
|
xdp_init_buff(xdp, buflen, &rxr->xdp_rxq);
|
||||||
xdp_prepare_buff(xdp, *data_ptr - offset, offset, *len, false);
|
xdp_prepare_buff(xdp, *data_ptr - offset, offset, *len, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,8 +401,10 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
|
|||||||
netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n");
|
netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n");
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
if (prog)
|
if (prog) {
|
||||||
tx_xdp = bp->rx_nr_rings;
|
tx_xdp = bp->rx_nr_rings;
|
||||||
|
bp->xdp_has_frags = prog->aux->xdp_has_frags;
|
||||||
|
}
|
||||||
|
|
||||||
tc = netdev_get_num_tc(dev);
|
tc = netdev_get_num_tc(dev);
|
||||||
if (!tc)
|
if (!tc)
|
||||||
|
Loading…
Reference in New Issue
Block a user