Commit bb678f01 authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch 'intel-wired-lan-driver-updates-2024-06-03'

Jacob Keller says:

====================
Intel Wired LAN Driver Updates 2024-06-03

This series includes miscellaneous improvements for the ice as well as a
cleanup to the Makefiles for all Intel net drivers.

Andy fixes all of the Intel net driver Makefiles to use the documented
'*-y' syntax for specifying object files to link into kernel driver
modules, rather than the '*-objs' syntax which works but is documented as
reserved for user-space host programs.

Jacob has a cleanup to refactor rounding logic in the ice driver into a
common roundup_u64 helper function.

Michal Schmidt replaces irq_set_affinity_hint() to use
irq_update_affinity_hint() which behaves better with user-applied affinity
settings.

v2: https://lore.kernel.org/r/20240605-next-2024-06-03-intel-next-batch-v2-0-39c23963fa78@intel.com
v1: https://lore.kernel.org/r/20240603-next-2024-06-03-intel-next-batch-v1-0-e0523b28f325@intel.com
====================

Link: https://lore.kernel.org/r/20240607-next-2024-06-03-intel-next-batch-v3-0-d1470cee3347@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 2ebb87f4 dee55767
...@@ -7,4 +7,4 @@ ...@@ -7,4 +7,4 @@
obj-$(CONFIG_E1000) += e1000.o obj-$(CONFIG_E1000) += e1000.o
e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o e1000-y := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o
...@@ -10,7 +10,6 @@ subdir-ccflags-y += -I$(src) ...@@ -10,7 +10,6 @@ subdir-ccflags-y += -I$(src)
obj-$(CONFIG_E1000E) += e1000e.o obj-$(CONFIG_E1000E) += e1000e.o
e1000e-objs := 82571.o ich8lan.o 80003es2lan.o \ e1000e-y := 82571.o ich8lan.o 80003es2lan.o \
mac.o manage.o nvm.o phy.o \ mac.o manage.o nvm.o phy.o \
param.o ethtool.o netdev.o ptp.o param.o ethtool.o netdev.o ptp.o
...@@ -10,7 +10,7 @@ subdir-ccflags-y += -I$(src) ...@@ -10,7 +10,7 @@ subdir-ccflags-y += -I$(src)
obj-$(CONFIG_I40E) += i40e.o obj-$(CONFIG_I40E) += i40e.o
i40e-objs := i40e_main.o \ i40e-y := i40e_main.o \
i40e_ethtool.o \ i40e_ethtool.o \
i40e_adminq.o \ i40e_adminq.o \
i40e_common.o \ i40e_common.o \
......
...@@ -11,6 +11,5 @@ subdir-ccflags-y += -I$(src) ...@@ -11,6 +11,5 @@ subdir-ccflags-y += -I$(src)
obj-$(CONFIG_IAVF) += iavf.o obj-$(CONFIG_IAVF) += iavf.o
iavf-objs := iavf_main.o iavf_ethtool.o iavf_virtchnl.o iavf_fdir.o \ iavf-y := iavf_main.o iavf_ethtool.o iavf_virtchnl.o iavf_fdir.o \
iavf_adv_rss.o \ iavf_adv_rss.o iavf_txrx.o iavf_common.o iavf_adminq.o
iavf_txrx.o iavf_common.o iavf_adminq.o
...@@ -2580,8 +2580,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi) ...@@ -2580,8 +2580,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi)
if (!IS_ENABLED(CONFIG_RFS_ACCEL)) if (!IS_ENABLED(CONFIG_RFS_ACCEL))
irq_set_affinity_notifier(irq_num, NULL); irq_set_affinity_notifier(irq_num, NULL);
/* clear the affinity_mask in the IRQ descriptor */ /* clear the affinity_hint in the IRQ descriptor */
irq_set_affinity_hint(irq_num, NULL); irq_update_affinity_hint(irq_num, NULL);
synchronize_irq(irq_num); synchronize_irq(irq_num);
devm_free_irq(ice_pf_to_dev(pf), irq_num, vsi->q_vectors[i]); devm_free_irq(ice_pf_to_dev(pf), irq_num, vsi->q_vectors[i]);
} }
......
...@@ -2607,7 +2607,7 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename) ...@@ -2607,7 +2607,7 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename)
} }
/* assign the mask for this irq */ /* assign the mask for this irq */
irq_set_affinity_hint(irq_num, &q_vector->affinity_mask); irq_update_affinity_hint(irq_num, &q_vector->affinity_mask);
} }
err = ice_set_cpu_rx_rmap(vsi); err = ice_set_cpu_rx_rmap(vsi);
...@@ -2625,7 +2625,7 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename) ...@@ -2625,7 +2625,7 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename)
irq_num = vsi->q_vectors[vector]->irq.virq; irq_num = vsi->q_vectors[vector]->irq.virq;
if (!IS_ENABLED(CONFIG_RFS_ACCEL)) if (!IS_ENABLED(CONFIG_RFS_ACCEL))
irq_set_affinity_notifier(irq_num, NULL); irq_set_affinity_notifier(irq_num, NULL);
irq_set_affinity_hint(irq_num, NULL); irq_update_affinity_hint(irq_num, NULL);
devm_free_irq(dev, irq_num, &vsi->q_vectors[vector]); devm_free_irq(dev, irq_num, &vsi->q_vectors[vector]);
} }
return err; return err;
......
...@@ -1773,8 +1773,7 @@ static int ice_ptp_cfg_clkout(struct ice_pf *pf, unsigned int chan, ...@@ -1773,8 +1773,7 @@ static int ice_ptp_cfg_clkout(struct ice_pf *pf, unsigned int chan,
* maintaining phase * maintaining phase
*/ */
if (start_time < current_time) if (start_time < current_time)
start_time = div64_u64(current_time + NSEC_PER_SEC - 1, start_time = roundup_u64(current_time, NSEC_PER_SEC) + phase;
NSEC_PER_SEC) * NSEC_PER_SEC + phase;
if (ice_is_e810(hw)) if (ice_is_e810(hw))
start_time -= E810_OUT_PROP_DELAY_NS; start_time -= E810_OUT_PROP_DELAY_NS;
......
...@@ -6,6 +6,6 @@ ...@@ -6,6 +6,6 @@
obj-$(CONFIG_IGB) += igb.o obj-$(CONFIG_IGB) += igb.o
igb-objs := igb_main.o igb_ethtool.o e1000_82575.o \ igb-y := igb_main.o igb_ethtool.o e1000_82575.o \
e1000_mac.o e1000_nvm.o e1000_phy.o e1000_mbx.o \ e1000_mac.o e1000_nvm.o e1000_phy.o e1000_mbx.o \
e1000_i210.o igb_ptp.o igb_hwmon.o e1000_i210.o igb_ptp.o igb_hwmon.o
...@@ -6,8 +6,4 @@ ...@@ -6,8 +6,4 @@
obj-$(CONFIG_IGBVF) += igbvf.o obj-$(CONFIG_IGBVF) += igbvf.o
igbvf-objs := vf.o \ igbvf-y := vf.o mbx.o ethtool.o netdev.o
mbx.o \
ethtool.o \
netdev.o
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# #
obj-$(CONFIG_IGC) += igc.o obj-$(CONFIG_IGC) += igc.o
igc-$(CONFIG_IGC_LEDS) += igc_leds.o
igc-objs := igc_main.o igc_mac.o igc_i225.o igc_base.o igc_nvm.o igc_phy.o \ igc-y := igc_main.o igc_mac.o igc_i225.o igc_base.o igc_nvm.o igc_phy.o \
igc_diag.o igc_ethtool.o igc_ptp.o igc_dump.o igc_tsn.o igc_xdp.o igc_diag.o igc_ethtool.o igc_ptp.o igc_dump.o igc_tsn.o igc_xdp.o
igc-$(CONFIG_IGC_LEDS) += igc_leds.o
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
obj-$(CONFIG_IXGBE) += ixgbe.o obj-$(CONFIG_IXGBE) += ixgbe.o
ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o \ ixgbe-y := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o \
ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \ ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \
ixgbe_mbx.o ixgbe_x540.o ixgbe_x550.o ixgbe_lib.o ixgbe_ptp.o \ ixgbe_mbx.o ixgbe_x540.o ixgbe_x550.o ixgbe_lib.o ixgbe_ptp.o \
ixgbe_xsk.o ixgbe_xsk.o
......
...@@ -6,9 +6,5 @@ ...@@ -6,9 +6,5 @@
obj-$(CONFIG_IXGBEVF) += ixgbevf.o obj-$(CONFIG_IXGBEVF) += ixgbevf.o
ixgbevf-objs := vf.o \ ixgbevf-y := vf.o mbx.o ethtool.o ixgbevf_main.o
mbx.o \
ethtool.o \
ixgbevf_main.o
ixgbevf-$(CONFIG_IXGBEVF_IPSEC) += ipsec.o ixgbevf-$(CONFIG_IXGBEVF_IPSEC) += ipsec.o
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
obj-$(CONFIG_LIBETH) += libeth.o obj-$(CONFIG_LIBETH) += libeth.o
libeth-objs += rx.o libeth-y := rx.o
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
obj-$(CONFIG_LIBIE) += libie.o obj-$(CONFIG_LIBIE) += libie.o
libie-objs += rx.o libie-y := rx.o
...@@ -297,6 +297,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div); ...@@ -297,6 +297,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div);
#define DIV64_U64_ROUND_UP(ll, d) \ #define DIV64_U64_ROUND_UP(ll, d) \
({ u64 _tmp = (d); div64_u64((ll) + _tmp - 1, _tmp); }) ({ u64 _tmp = (d); div64_u64((ll) + _tmp - 1, _tmp); })
/**
* DIV_U64_ROUND_UP - unsigned 64bit divide with 32bit divisor rounded up
* @ll: unsigned 64bit dividend
* @d: unsigned 32bit divisor
*
* Divide unsigned 64bit dividend by unsigned 32bit divisor
* and round up.
*
* Return: dividend / divisor rounded up
*/
#define DIV_U64_ROUND_UP(ll, d) \
({ u32 _tmp = (d); div_u64((ll) + _tmp - 1, _tmp); })
/** /**
* DIV64_U64_ROUND_CLOSEST - unsigned 64bit divide with 64bit divisor rounded to nearest integer * DIV64_U64_ROUND_CLOSEST - unsigned 64bit divide with 64bit divisor rounded to nearest integer
* @dividend: unsigned 64bit dividend * @dividend: unsigned 64bit dividend
...@@ -342,4 +355,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div); ...@@ -342,4 +355,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div);
div_s64((__x - (__d / 2)), __d); \ div_s64((__x - (__d / 2)), __d); \
} \ } \
) )
/**
* roundup_u64 - Round up a 64bit value to the next specified 32bit multiple
* @x: the value to up
* @y: 32bit multiple to round up to
*
* Rounds @x to the next multiple of @y. For 32bit @x values, see roundup and
* the faster round_up() for powers of 2.
*
* Return: rounded up value.
*/
static inline u64 roundup_u64(u64 x, u32 y)
{
return DIV_U64_ROUND_UP(x, y) * y;
}
#endif /* _LINUX_MATH64_H */ #endif /* _LINUX_MATH64_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment