Commit 8a33dcc2 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files


Merge in the fixes we had queued in case there was another -rc.

Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents b7b98f86 6b278c0c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1331,6 +1331,10 @@
#define MDIO_VEND2_PMA_CDR_CONTROL	0x8056
#endif

#ifndef MDIO_VEND2_PMA_MISC_CTRL0
#define MDIO_VEND2_PMA_MISC_CTRL0	0x8090
#endif

#ifndef MDIO_CTRL1_SPEED1G
#define MDIO_CTRL1_SPEED1G		(MDIO_CTRL1_SPEED10G & ~BMCR_SPEED100)
#endif
@@ -1389,6 +1393,10 @@
#define XGBE_PMA_RX_RST_0_RESET_ON	0x10
#define XGBE_PMA_RX_RST_0_RESET_OFF	0x00

#define XGBE_PMA_PLL_CTRL_MASK		BIT(15)
#define XGBE_PMA_PLL_CTRL_ENABLE	BIT(15)
#define XGBE_PMA_PLL_CTRL_DISABLE	0x0000

/* Bit setting and getting macros
 *  The get macro will extract the current bit field value from within
 *  the variable
+19 −1
Original line number Diff line number Diff line
@@ -1977,12 +1977,26 @@ static void xgbe_phy_rx_reset(struct xgbe_prv_data *pdata)
	}
}

static void xgbe_phy_pll_ctrl(struct xgbe_prv_data *pdata, bool enable)
{
	XMDIO_WRITE_BITS(pdata, MDIO_MMD_PMAPMD, MDIO_VEND2_PMA_MISC_CTRL0,
			 XGBE_PMA_PLL_CTRL_MASK,
			 enable ? XGBE_PMA_PLL_CTRL_ENABLE
				: XGBE_PMA_PLL_CTRL_DISABLE);

	/* Wait for command to complete */
	usleep_range(100, 200);
}

static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata,
					unsigned int cmd, unsigned int sub_cmd)
{
	unsigned int s0 = 0;
	unsigned int wait;

	/* Disable PLL re-initialization during FW command processing */
	xgbe_phy_pll_ctrl(pdata, false);

	/* Log if a previous command did not complete */
	if (XP_IOREAD_BITS(pdata, XP_DRIVER_INT_RO, STATUS)) {
		netif_dbg(pdata, link, pdata->netdev,
@@ -2003,7 +2017,7 @@ static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata,
	wait = XGBE_RATECHANGE_COUNT;
	while (wait--) {
		if (!XP_IOREAD_BITS(pdata, XP_DRIVER_INT_RO, STATUS))
			return;
			goto reenable_pll;

		usleep_range(1000, 2000);
	}
@@ -2013,6 +2027,10 @@ static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata,

	/* Reset on error */
	xgbe_phy_rx_reset(pdata);

reenable_pll:
	/* Enable PLL re-initialization */
	xgbe_phy_pll_ctrl(pdata, true);
}

static void xgbe_phy_rrc(struct xgbe_prv_data *pdata)
+12 −9
Original line number Diff line number Diff line
@@ -1914,8 +1914,6 @@ static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
	ind_bufp = &tx_scrq->ind_buf;

	if (test_bit(0, &adapter->resetting)) {
		if (!netif_subqueue_stopped(netdev, skb))
			netif_stop_subqueue(netdev, queue_num);
		dev_kfree_skb_any(skb);

		tx_send_failed++;
@@ -2757,7 +2755,7 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter,

	if (adapter->state == VNIC_PROBING) {
		netdev_warn(netdev, "Adapter reset during probe\n");
		adapter->init_done_rc = EAGAIN;
		adapter->init_done_rc = -EAGAIN;
		ret = EAGAIN;
		goto err;
	}
@@ -5259,11 +5257,6 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
			 */
			adapter->login_pending = false;

			if (!completion_done(&adapter->init_done)) {
				complete(&adapter->init_done);
				adapter->init_done_rc = -EIO;
			}

			if (adapter->state == VNIC_DOWN)
				rc = ibmvnic_reset(adapter, VNIC_RESET_PASSIVE_INIT);
			else
@@ -5284,6 +5277,13 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
					   rc);
				adapter->failover_pending = false;
			}

			if (!completion_done(&adapter->init_done)) {
				complete(&adapter->init_done);
				if (!adapter->init_done_rc)
					adapter->init_done_rc = -EAGAIN;
			}

			break;
		case IBMVNIC_CRQ_INIT_COMPLETE:
			dev_info(dev, "Partner initialization complete\n");
@@ -5604,6 +5604,9 @@ static int init_crq_queue(struct ibmvnic_adapter *adapter)
	crq->cur = 0;
	spin_lock_init(&crq->lock);

	/* process any CRQs that were queued before we enabled interrupts */
	tasklet_schedule(&adapter->tasklet);

	return retrc;

req_irq_failed:
@@ -5753,7 +5756,7 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
		}

		rc = ibmvnic_reset_init(adapter, false);
	} while (rc == EAGAIN);
	} while (rc == -EAGAIN);

	/* We are ignoring the error from ibmvnic_reset_init() assuming that the
	 * partner is not ready. CRQ is not active. When the partner becomes
+2 −6
Original line number Diff line number Diff line
@@ -2067,7 +2067,7 @@ static int nfp_net_poll(struct napi_struct *napi, int budget)
		if (napi_complete_done(napi, pkts_polled))
			nfp_net_irq_unmask(r_vec->nfp_net, r_vec->irq_entry);

	if (r_vec->nfp_net->rx_coalesce_adapt_on) {
	if (r_vec->nfp_net->rx_coalesce_adapt_on && r_vec->rx_ring) {
		struct dim_sample dim_sample = {};
		unsigned int start;
		u64 pkts, bytes;
@@ -2082,7 +2082,7 @@ static int nfp_net_poll(struct napi_struct *napi, int budget)
		net_dim(&r_vec->rx_dim, dim_sample);
	}

	if (r_vec->nfp_net->tx_coalesce_adapt_on) {
	if (r_vec->nfp_net->tx_coalesce_adapt_on && r_vec->tx_ring) {
		struct dim_sample dim_sample = {};
		unsigned int start;
		u64 pkts, bytes;
@@ -3016,10 +3016,8 @@ static void nfp_net_rx_dim_work(struct work_struct *work)

	/* copy RX interrupt coalesce parameters */
	value = (moder.pkts << 16) | (factor * moder.usec);
	rtnl_lock();
	nn_writel(nn, NFP_NET_CFG_RXR_IRQ_MOD(r_vec->rx_ring->idx), value);
	(void)nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_IRQMOD);
	rtnl_unlock();

	dim->state = DIM_START_MEASURE;
}
@@ -3047,10 +3045,8 @@ static void nfp_net_tx_dim_work(struct work_struct *work)

	/* copy TX interrupt coalesce parameters */
	value = (moder.pkts << 16) | (factor * moder.usec);
	rtnl_lock();
	nn_writel(nn, NFP_NET_CFG_TXR_IRQ_MOD(r_vec->tx_ring->idx), value);
	(void)nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_IRQMOD);
	rtnl_unlock();

	dim->state = DIM_START_MEASURE;
}
+1 −1
Original line number Diff line number Diff line
@@ -1780,7 +1780,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,
		return -EOPNOTSUPP;

	if (!phylink_test(pl->supported, Asym_Pause) &&
	    !pause->autoneg && pause->rx_pause != pause->tx_pause)
	    pause->rx_pause != pause->tx_pause)
		return -EINVAL;

	pause_state = 0;
Loading