Commit 3e212b0b authored by Jakub Kicinski's avatar Jakub Kicinski

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-03-21 (ice)

This series contains updates to ice driver only.

Piotr sets first_desc field for proper handling of Flow Director
packets.

Michal moves error checking for VF earlier in function to properly return
error before other checks/reporting; he also corrects VSI filter removal to
be done during VSI removal and not rebuild.

* '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
  ice: remove filters only if VSI is deleted
  ice: check if VF exists before mode check
  ice: fix rx buffers handling for flow director packets
====================

Link: https://lore.kernel.org/r/20230321183641.2849726-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents cad4fb02 7d46c0e6
...@@ -291,6 +291,7 @@ static void ice_vsi_delete_from_hw(struct ice_vsi *vsi) ...@@ -291,6 +291,7 @@ static void ice_vsi_delete_from_hw(struct ice_vsi *vsi)
struct ice_vsi_ctx *ctxt; struct ice_vsi_ctx *ctxt;
int status; int status;
ice_fltr_remove_all(vsi);
ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL); ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL);
if (!ctxt) if (!ctxt)
return; return;
...@@ -2892,7 +2893,6 @@ void ice_vsi_decfg(struct ice_vsi *vsi) ...@@ -2892,7 +2893,6 @@ void ice_vsi_decfg(struct ice_vsi *vsi)
!test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags)) !test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags))
ice_cfg_sw_lldp(vsi, false, false); ice_cfg_sw_lldp(vsi, false, false);
ice_fltr_remove_all(vsi);
ice_rm_vsi_lan_cfg(vsi->port_info, vsi->idx); ice_rm_vsi_lan_cfg(vsi->port_info, vsi->idx);
err = ice_rm_vsi_rdma_cfg(vsi->port_info, vsi->idx); err = ice_rm_vsi_rdma_cfg(vsi->port_info, vsi->idx);
if (err) if (err)
......
...@@ -4641,6 +4641,12 @@ static int ice_start_eth(struct ice_vsi *vsi) ...@@ -4641,6 +4641,12 @@ static int ice_start_eth(struct ice_vsi *vsi)
return err; return err;
} }
static void ice_stop_eth(struct ice_vsi *vsi)
{
ice_fltr_remove_all(vsi);
ice_vsi_close(vsi);
}
static int ice_init_eth(struct ice_pf *pf) static int ice_init_eth(struct ice_pf *pf)
{ {
struct ice_vsi *vsi = ice_get_main_vsi(pf); struct ice_vsi *vsi = ice_get_main_vsi(pf);
...@@ -5129,7 +5135,7 @@ void ice_unload(struct ice_pf *pf) ...@@ -5129,7 +5135,7 @@ void ice_unload(struct ice_pf *pf)
{ {
ice_deinit_features(pf); ice_deinit_features(pf);
ice_deinit_rdma(pf); ice_deinit_rdma(pf);
ice_vsi_close(ice_get_main_vsi(pf)); ice_stop_eth(ice_get_main_vsi(pf));
ice_vsi_decfg(ice_get_main_vsi(pf)); ice_vsi_decfg(ice_get_main_vsi(pf));
ice_deinit_dev(pf); ice_deinit_dev(pf);
} }
......
...@@ -1341,15 +1341,15 @@ int ice_set_vf_trust(struct net_device *netdev, int vf_id, bool trusted) ...@@ -1341,15 +1341,15 @@ int ice_set_vf_trust(struct net_device *netdev, int vf_id, bool trusted)
struct ice_vf *vf; struct ice_vf *vf;
int ret; int ret;
vf = ice_get_vf_by_id(pf, vf_id);
if (!vf)
return -EINVAL;
if (ice_is_eswitch_mode_switchdev(pf)) { if (ice_is_eswitch_mode_switchdev(pf)) {
dev_info(ice_pf_to_dev(pf), "Trusted VF is forbidden in switchdev mode\n"); dev_info(ice_pf_to_dev(pf), "Trusted VF is forbidden in switchdev mode\n");
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
vf = ice_get_vf_by_id(pf, vf_id);
if (!vf)
return -EINVAL;
ret = ice_check_vf_ready_for_cfg(vf); ret = ice_check_vf_ready_for_cfg(vf);
if (ret) if (ret)
goto out_put_vf; goto out_put_vf;
......
...@@ -1210,6 +1210,7 @@ int ice_clean_rx_irq(struct ice_rx_ring *rx_ring, int budget) ...@@ -1210,6 +1210,7 @@ int ice_clean_rx_irq(struct ice_rx_ring *rx_ring, int budget)
ice_vc_fdir_irq_handler(ctrl_vsi, rx_desc); ice_vc_fdir_irq_handler(ctrl_vsi, rx_desc);
if (++ntc == cnt) if (++ntc == cnt)
ntc = 0; ntc = 0;
rx_ring->first_desc = ntc;
continue; continue;
} }
......
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