Commit 7a8cc96e authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch 'intel-wired-lan-driver-updates-2024-05-23-ice-idpf'

Jacob Keller says:

====================
Intel Wired LAN Driver Updates 2024-05-23 (ice, idpf)

This series contains two fixes which finished up testing.

First, Alexander fixes an issue in idpf caused by enabling NAPI and
interrupts prior to actually allocating the Rx buffers.

Second, Jacob fixes the ice driver VSI VLAN counting logic to ensure that
addition and deletion of VLANs properly manages the total VSI count.
====================

Link: https://lore.kernel.org/r/20240523-net-2024-05-23-intel-net-fixes-v1-0-17a923e0bb5f@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 266aa3b4 82617b9a
...@@ -45,14 +45,15 @@ int ice_vsi_add_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan) ...@@ -45,14 +45,15 @@ int ice_vsi_add_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
return -EINVAL; return -EINVAL;
err = ice_fltr_add_vlan(vsi, vlan); err = ice_fltr_add_vlan(vsi, vlan);
if (err && err != -EEXIST) { if (!err)
vsi->num_vlan++;
else if (err == -EEXIST)
err = 0;
else
dev_err(ice_pf_to_dev(vsi->back), "Failure Adding VLAN %d on VSI %i, status %d\n", dev_err(ice_pf_to_dev(vsi->back), "Failure Adding VLAN %d on VSI %i, status %d\n",
vlan->vid, vsi->vsi_num, err); vlan->vid, vsi->vsi_num, err);
return err;
}
vsi->num_vlan++; return err;
return 0;
} }
/** /**
......
...@@ -1394,6 +1394,7 @@ static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res) ...@@ -1394,6 +1394,7 @@ static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res)
} }
idpf_rx_init_buf_tail(vport); idpf_rx_init_buf_tail(vport);
idpf_vport_intr_ena(vport);
err = idpf_send_config_queues_msg(vport); err = idpf_send_config_queues_msg(vport);
if (err) { if (err) {
......
...@@ -3746,9 +3746,9 @@ static void idpf_vport_intr_ena_irq_all(struct idpf_vport *vport) ...@@ -3746,9 +3746,9 @@ static void idpf_vport_intr_ena_irq_all(struct idpf_vport *vport)
*/ */
void idpf_vport_intr_deinit(struct idpf_vport *vport) void idpf_vport_intr_deinit(struct idpf_vport *vport)
{ {
idpf_vport_intr_dis_irq_all(vport);
idpf_vport_intr_napi_dis_all(vport); idpf_vport_intr_napi_dis_all(vport);
idpf_vport_intr_napi_del_all(vport); idpf_vport_intr_napi_del_all(vport);
idpf_vport_intr_dis_irq_all(vport);
idpf_vport_intr_rel_irq(vport); idpf_vport_intr_rel_irq(vport);
} }
...@@ -4179,7 +4179,6 @@ int idpf_vport_intr_init(struct idpf_vport *vport) ...@@ -4179,7 +4179,6 @@ int idpf_vport_intr_init(struct idpf_vport *vport)
idpf_vport_intr_map_vector_to_qs(vport); idpf_vport_intr_map_vector_to_qs(vport);
idpf_vport_intr_napi_add_all(vport); idpf_vport_intr_napi_add_all(vport);
idpf_vport_intr_napi_ena_all(vport);
err = vport->adapter->dev_ops.reg_ops.intr_reg_init(vport); err = vport->adapter->dev_ops.reg_ops.intr_reg_init(vport);
if (err) if (err)
...@@ -4193,17 +4192,20 @@ int idpf_vport_intr_init(struct idpf_vport *vport) ...@@ -4193,17 +4192,20 @@ int idpf_vport_intr_init(struct idpf_vport *vport)
if (err) if (err)
goto unroll_vectors_alloc; goto unroll_vectors_alloc;
idpf_vport_intr_ena_irq_all(vport);
return 0; return 0;
unroll_vectors_alloc: unroll_vectors_alloc:
idpf_vport_intr_napi_dis_all(vport);
idpf_vport_intr_napi_del_all(vport); idpf_vport_intr_napi_del_all(vport);
return err; return err;
} }
void idpf_vport_intr_ena(struct idpf_vport *vport)
{
idpf_vport_intr_napi_ena_all(vport);
idpf_vport_intr_ena_irq_all(vport);
}
/** /**
* idpf_config_rss - Send virtchnl messages to configure RSS * idpf_config_rss - Send virtchnl messages to configure RSS
* @vport: virtual port * @vport: virtual port
......
...@@ -990,6 +990,7 @@ int idpf_vport_intr_alloc(struct idpf_vport *vport); ...@@ -990,6 +990,7 @@ int idpf_vport_intr_alloc(struct idpf_vport *vport);
void idpf_vport_intr_update_itr_ena_irq(struct idpf_q_vector *q_vector); void idpf_vport_intr_update_itr_ena_irq(struct idpf_q_vector *q_vector);
void idpf_vport_intr_deinit(struct idpf_vport *vport); void idpf_vport_intr_deinit(struct idpf_vport *vport);
int idpf_vport_intr_init(struct idpf_vport *vport); int idpf_vport_intr_init(struct idpf_vport *vport);
void idpf_vport_intr_ena(struct idpf_vport *vport);
enum pkt_hash_types idpf_ptype_to_htype(const struct idpf_rx_ptype_decoded *decoded); enum pkt_hash_types idpf_ptype_to_htype(const struct idpf_rx_ptype_decoded *decoded);
int idpf_config_rss(struct idpf_vport *vport); int idpf_config_rss(struct idpf_vport *vport);
int idpf_init_rss(struct idpf_vport *vport); int idpf_init_rss(struct idpf_vport *vport);
......
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