Commit ed1f1640 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files


Merge in late fixes to prepare for the 6.9 net-next PR.

Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents a318d3d5 84e95149
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -290,7 +290,7 @@ attribute-sets:
        enum: eswitch-mode
      -
        name: eswitch-inline-mode
        type: u16
        type: u8
        enum: eswitch-inline-mode
      -
        name: dpipe-tables
+4 −4
Original line number Diff line number Diff line
@@ -131,9 +131,9 @@ static int dpll_xa_ref_pin_del(struct xarray *xa_pins, struct dpll_pin *pin,
		reg = dpll_pin_registration_find(ref, ops, priv);
		if (WARN_ON(!reg))
			return -EINVAL;
		if (refcount_dec_and_test(&ref->refcount)) {
		list_del(&reg->list);
		kfree(reg);
		if (refcount_dec_and_test(&ref->refcount)) {
			xa_erase(xa_pins, i);
			WARN_ON(!list_empty(&ref->registration_list));
			kfree(ref);
@@ -211,9 +211,9 @@ dpll_xa_ref_dpll_del(struct xarray *xa_dplls, struct dpll_device *dpll,
		reg = dpll_pin_registration_find(ref, ops, priv);
		if (WARN_ON(!reg))
			return;
		if (refcount_dec_and_test(&ref->refcount)) {
		list_del(&reg->list);
		kfree(reg);
		if (refcount_dec_and_test(&ref->refcount)) {
			xa_erase(xa_dplls, i);
			WARN_ON(!list_empty(&ref->registration_list));
			kfree(ref);
+6 −4
Original line number Diff line number Diff line
@@ -2259,6 +2259,8 @@ static int ksz_pirq_setup(struct ksz_device *dev, u8 p)
	return ksz_irq_common_setup(dev, pirq);
}

static int ksz_parse_drive_strength(struct ksz_device *dev);

static int ksz_setup(struct dsa_switch *ds)
{
	struct ksz_device *dev = ds->priv;
@@ -2280,6 +2282,10 @@ static int ksz_setup(struct dsa_switch *ds)
		return ret;
	}

	ret = ksz_parse_drive_strength(dev);
	if (ret)
		return ret;

	/* set broadcast storm protection 10% rate */
	regmap_update_bits(ksz_regmap_16(dev), regs[S_BROADCAST_CTRL],
			   BROADCAST_STORM_RATE,
@@ -4328,10 +4334,6 @@ int ksz_switch_register(struct ksz_device *dev)
	for (port_num = 0; port_num < dev->info->port_cnt; ++port_num)
		dev->ports[port_num].interface = PHY_INTERFACE_MODE_NA;
	if (dev->dev->of_node) {
		ret = ksz_parse_drive_strength(dev);
		if (ret)
			return ret;

		ret = of_get_phy_mode(dev->dev->of_node, &interface);
		if (ret == 0)
			dev->compat_interface = interface;
+11 −13
Original line number Diff line number Diff line
@@ -6678,6 +6678,7 @@ static void ice_update_vsi_ring_stats(struct ice_vsi *vsi)
{
	struct rtnl_link_stats64 *net_stats, *stats_prev;
	struct rtnl_link_stats64 *vsi_stats;
	struct ice_pf *pf = vsi->back;
	u64 pkts, bytes;
	int i;

@@ -6723,20 +6724,17 @@ static void ice_update_vsi_ring_stats(struct ice_vsi *vsi)
	net_stats = &vsi->net_stats;
	stats_prev = &vsi->net_stats_prev;

	/* clear prev counters after reset */
	if (vsi_stats->tx_packets < stats_prev->tx_packets ||
	    vsi_stats->rx_packets < stats_prev->rx_packets) {
		stats_prev->tx_packets = 0;
		stats_prev->tx_bytes = 0;
		stats_prev->rx_packets = 0;
		stats_prev->rx_bytes = 0;
	}

	/* update netdev counters */
	/* Update netdev counters, but keep in mind that values could start at
	 * random value after PF reset. And as we increase the reported stat by
	 * diff of Prev-Cur, we need to be sure that Prev is valid. If it's not,
	 * let's skip this round.
	 */
	if (likely(pf->stat_prev_loaded)) {
		net_stats->tx_packets += vsi_stats->tx_packets - stats_prev->tx_packets;
		net_stats->tx_bytes += vsi_stats->tx_bytes - stats_prev->tx_bytes;
		net_stats->rx_packets += vsi_stats->rx_packets - stats_prev->rx_packets;
		net_stats->rx_bytes += vsi_stats->rx_bytes - stats_prev->rx_bytes;
	}

	stats_prev->tx_packets = vsi_stats->tx_packets;
	stats_prev->tx_bytes = vsi_stats->tx_bytes;
+5 −18
Original line number Diff line number Diff line
@@ -6985,44 +6985,31 @@ static void igb_extts(struct igb_adapter *adapter, int tsintr_tt)
static void igb_tsync_interrupt(struct igb_adapter *adapter)
{
	struct e1000_hw *hw = &adapter->hw;
	u32 ack = 0, tsicr = rd32(E1000_TSICR);
	u32 tsicr = rd32(E1000_TSICR);
	struct ptp_clock_event event;

	if (tsicr & TSINTR_SYS_WRAP) {
		event.type = PTP_CLOCK_PPS;
		if (adapter->ptp_caps.pps)
			ptp_clock_event(adapter->ptp_clock, &event);
		ack |= TSINTR_SYS_WRAP;
	}

	if (tsicr & E1000_TSICR_TXTS) {
		/* retrieve hardware timestamp */
		schedule_work(&adapter->ptp_tx_work);
		ack |= E1000_TSICR_TXTS;
	}

	if (tsicr & TSINTR_TT0) {
	if (tsicr & TSINTR_TT0)
		igb_perout(adapter, 0);
		ack |= TSINTR_TT0;
	}

	if (tsicr & TSINTR_TT1) {
	if (tsicr & TSINTR_TT1)
		igb_perout(adapter, 1);
		ack |= TSINTR_TT1;
	}

	if (tsicr & TSINTR_AUTT0) {
	if (tsicr & TSINTR_AUTT0)
		igb_extts(adapter, 0);
		ack |= TSINTR_AUTT0;
	}

	if (tsicr & TSINTR_AUTT1) {
	if (tsicr & TSINTR_AUTT1)
		igb_extts(adapter, 1);
		ack |= TSINTR_AUTT1;
	}

	/* acknowledge the interrupts */
	wr32(E1000_TSICR, ack);
}

static irqreturn_t igb_msix_other(int irq, void *data)
Loading