mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2023-12-05 (ice, i40e, iavf) This series contains updates to ice, i40e and iavf drivers. Michal fixes incorrect usage of VF MSIX value and index calculation for ice. Marcin restores disabling of Rx VLAN filtering which was inadvertently removed for ice. Ivan Vecera corrects improper messaging of MFS port for i40e. Jake fixes incorrect checking of coalesce values on iavf. * '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: iavf: validate tx_coalesce_usecs even if rx_coalesce_usecs is zero i40e: Fix unexpected MFS warning message ice: Restore fix disabling RX VLAN filtering ice: change vfs.num_msix_per to vf->num_msix ==================== Link: https://lore.kernel.org/r/20231205211918.2123019-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
803a809d3d
@ -16224,7 +16224,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
I40E_PRTGL_SAH_MFS_MASK) >> I40E_PRTGL_SAH_MFS_SHIFT;
|
||||
if (val < MAX_FRAME_SIZE_DEFAULT)
|
||||
dev_warn(&pdev->dev, "MFS for port %x has been set below the default: %x\n",
|
||||
i, val);
|
||||
pf->hw.port, val);
|
||||
|
||||
/* Add a filter to drop all Flow control frames from any VSI from being
|
||||
* transmitted. By doing so we stop a malicious VF from sending out
|
||||
|
@ -827,18 +827,10 @@ static int __iavf_set_coalesce(struct net_device *netdev,
|
||||
struct iavf_adapter *adapter = netdev_priv(netdev);
|
||||
int i;
|
||||
|
||||
if (ec->rx_coalesce_usecs == 0) {
|
||||
if (ec->use_adaptive_rx_coalesce)
|
||||
netif_info(adapter, drv, netdev, "rx-usecs=0, need to disable adaptive-rx for a complete disable\n");
|
||||
} else if ((ec->rx_coalesce_usecs < IAVF_MIN_ITR) ||
|
||||
(ec->rx_coalesce_usecs > IAVF_MAX_ITR)) {
|
||||
if (ec->rx_coalesce_usecs > IAVF_MAX_ITR) {
|
||||
netif_info(adapter, drv, netdev, "Invalid value, rx-usecs range is 0-8160\n");
|
||||
return -EINVAL;
|
||||
} else if (ec->tx_coalesce_usecs == 0) {
|
||||
if (ec->use_adaptive_tx_coalesce)
|
||||
netif_info(adapter, drv, netdev, "tx-usecs=0, need to disable adaptive-tx for a complete disable\n");
|
||||
} else if ((ec->tx_coalesce_usecs < IAVF_MIN_ITR) ||
|
||||
(ec->tx_coalesce_usecs > IAVF_MAX_ITR)) {
|
||||
} else if (ec->tx_coalesce_usecs > IAVF_MAX_ITR) {
|
||||
netif_info(adapter, drv, netdev, "Invalid value, tx-usecs range is 0-8160\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
#define IAVF_ITR_DYNAMIC 0x8000 /* use top bit as a flag */
|
||||
#define IAVF_ITR_MASK 0x1FFE /* mask for ITR register value */
|
||||
#define IAVF_MIN_ITR 2 /* reg uses 2 usec resolution */
|
||||
#define IAVF_ITR_100K 10 /* all values below must be even */
|
||||
#define IAVF_ITR_50K 20
|
||||
#define IAVF_ITR_20K 50
|
||||
|
@ -374,16 +374,11 @@ static void ice_ena_vf_mappings(struct ice_vf *vf)
|
||||
*/
|
||||
int ice_calc_vf_reg_idx(struct ice_vf *vf, struct ice_q_vector *q_vector)
|
||||
{
|
||||
struct ice_pf *pf;
|
||||
|
||||
if (!vf || !q_vector)
|
||||
return -EINVAL;
|
||||
|
||||
pf = vf->pf;
|
||||
|
||||
/* always add one to account for the OICR being the first MSIX */
|
||||
return pf->sriov_base_vector + pf->vfs.num_msix_per * vf->vf_id +
|
||||
q_vector->v_idx + 1;
|
||||
return vf->first_vector_idx + q_vector->v_idx + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -32,7 +32,6 @@ static void ice_port_vlan_on(struct ice_vsi *vsi)
|
||||
/* setup outer VLAN ops */
|
||||
vlan_ops->set_port_vlan = ice_vsi_set_outer_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_outer_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_outer_port_vlan;
|
||||
|
||||
/* setup inner VLAN ops */
|
||||
vlan_ops = &vsi->inner_vlan_ops;
|
||||
@ -47,8 +46,13 @@ static void ice_port_vlan_on(struct ice_vsi *vsi)
|
||||
|
||||
vlan_ops->set_port_vlan = ice_vsi_set_inner_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_inner_port_vlan;
|
||||
vlan_ops->clear_port_vlan = ice_vsi_clear_inner_port_vlan;
|
||||
}
|
||||
|
||||
/* all Rx traffic should be in the domain of the assigned port VLAN,
|
||||
* so prevent disabling Rx VLAN filtering
|
||||
*/
|
||||
vlan_ops->dis_rx_filtering = noop_vlan;
|
||||
|
||||
vlan_ops->ena_rx_filtering = ice_vsi_ena_rx_vlan_filtering;
|
||||
}
|
||||
|
||||
@ -77,6 +81,8 @@ static void ice_port_vlan_off(struct ice_vsi *vsi)
|
||||
vlan_ops->del_vlan = ice_vsi_del_vlan;
|
||||
}
|
||||
|
||||
vlan_ops->dis_rx_filtering = ice_vsi_dis_rx_vlan_filtering;
|
||||
|
||||
if (!test_bit(ICE_FLAG_VF_VLAN_PRUNING, pf->flags))
|
||||
vlan_ops->ena_rx_filtering = noop_vlan;
|
||||
else
|
||||
@ -141,7 +147,6 @@ void ice_vf_vsi_init_vlan_ops(struct ice_vsi *vsi)
|
||||
&vsi->outer_vlan_ops : &vsi->inner_vlan_ops;
|
||||
|
||||
vlan_ops->add_vlan = ice_vsi_add_vlan;
|
||||
vlan_ops->dis_rx_filtering = ice_vsi_dis_rx_vlan_filtering;
|
||||
vlan_ops->ena_tx_filtering = ice_vsi_ena_tx_vlan_filtering;
|
||||
vlan_ops->dis_tx_filtering = ice_vsi_dis_tx_vlan_filtering;
|
||||
}
|
||||
|
@ -1523,7 +1523,6 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
|
||||
u16 num_q_vectors_mapped, vsi_id, vector_id;
|
||||
struct virtchnl_irq_map_info *irqmap_info;
|
||||
struct virtchnl_vector_map *map;
|
||||
struct ice_pf *pf = vf->pf;
|
||||
struct ice_vsi *vsi;
|
||||
int i;
|
||||
|
||||
@ -1535,7 +1534,7 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
|
||||
* there is actually at least a single VF queue vector mapped
|
||||
*/
|
||||
if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states) ||
|
||||
pf->vfs.num_msix_per < num_q_vectors_mapped ||
|
||||
vf->num_msix < num_q_vectors_mapped ||
|
||||
!num_q_vectors_mapped) {
|
||||
v_ret = VIRTCHNL_STATUS_ERR_PARAM;
|
||||
goto error_param;
|
||||
@ -1557,7 +1556,7 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
|
||||
/* vector_id is always 0-based for each VF, and can never be
|
||||
* larger than or equal to the max allowed interrupts per VF
|
||||
*/
|
||||
if (!(vector_id < pf->vfs.num_msix_per) ||
|
||||
if (!(vector_id < vf->num_msix) ||
|
||||
!ice_vc_isvalid_vsi_id(vf, vsi_id) ||
|
||||
(!vector_id && (map->rxq_map || map->txq_map))) {
|
||||
v_ret = VIRTCHNL_STATUS_ERR_PARAM;
|
||||
|
Loading…
Reference in New Issue
Block a user