Commit 1eec8094 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

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: default avatarJakub Kicinski <kuba@kernel.org>
parents 15f7cfae 366c3047
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -11178,10 +11178,7 @@ static netdev_features_t bnxt_fix_features(struct net_device *dev,
	if ((features & NETIF_F_NTUPLE) && !bnxt_rfs_capable(bp))
		features &= ~NETIF_F_NTUPLE;

	if (bp->flags & BNXT_FLAG_NO_AGG_RINGS)
		features &= ~(NETIF_F_LRO | NETIF_F_GRO_HW);

	if (!(bp->flags & BNXT_FLAG_TPA))
	if ((bp->flags & BNXT_FLAG_NO_AGG_RINGS) || bp->xdp_prog)
		features &= ~(NETIF_F_LRO | NETIF_F_GRO_HW);

	if (!(features & NETIF_F_GRO))
+1 −0
Original line number Diff line number Diff line
@@ -2130,6 +2130,7 @@ struct bnxt {
#define BNXT_DUMP_CRASH		1

	struct bpf_prog		*xdp_prog;
	u8			xdp_has_frags;

	struct bnxt_ptp_cfg	*ptp_cfg;
	u8			ptp_all_rx_tstamp;
+1 −0
Original line number Diff line number Diff line
@@ -1306,6 +1306,7 @@ int bnxt_dl_register(struct bnxt *bp)
	if (rc)
		goto err_dl_port_unreg;

	devlink_set_features(dl, DEVLINK_F_RELOAD);
out:
	devlink_register(dl);
	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -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_vnics -= le16_to_cpu(req->min_vnics) * n;
		if (bp->flags & BNXT_FLAG_CHIP_P5)
			hw_resc->max_irqs -= vf_msix * n;
			hw_resc->max_nqs -= vf_msix;

		rc = pf->active_vfs;
	}
+8 −2
Original line number Diff line number Diff line
@@ -181,6 +181,7 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
			struct xdp_buff *xdp)
{
	struct bnxt_sw_rx_bd *rx_buf;
	u32 buflen = PAGE_SIZE;
	struct pci_dev *pdev;
	dma_addr_t mapping;
	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;
	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);
}

@@ -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");
		return -EOPNOTSUPP;
	}
	if (prog)
	if (prog) {
		tx_xdp = bp->rx_nr_rings;
		bp->xdp_has_frags = prog->aux->xdp_has_frags;
	}

	tc = netdev_get_num_tc(dev);
	if (!tc)