Merge branch 'intel-net-queue-100GbE'
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2025-04-22 (ice, idpf) For ice: Paul removes setting of ICE_AQ_FLAG_RD in ice_get_set_tx_topo() on E830 devices. Xuanqiang Luo adds error check for NULL VF VSI. For idpf: Madhu fixes misreporting of, currently, unsupported encapsulated packets. ==================== Link: https://patch.msgid.link/20250425222636.3188441-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -2345,15 +2345,15 @@ ice_get_set_tx_topo(struct ice_hw *hw, u8 *buf, u16 buf_size,
|
||||
cmd->set_flags |= ICE_AQC_TX_TOPO_FLAGS_SRC_RAM |
|
||||
ICE_AQC_TX_TOPO_FLAGS_LOAD_NEW;
|
||||
|
||||
if (hw->mac_type == ICE_MAC_GENERIC_3K_E825)
|
||||
desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
|
||||
desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
|
||||
} else {
|
||||
ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_tx_topo);
|
||||
cmd->get_flags = ICE_AQC_TX_TOPO_GET_RAM;
|
||||
}
|
||||
|
||||
if (hw->mac_type != ICE_MAC_GENERIC_3K_E825)
|
||||
desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
|
||||
if (hw->mac_type == ICE_MAC_E810 ||
|
||||
hw->mac_type == ICE_MAC_GENERIC)
|
||||
desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
|
||||
}
|
||||
|
||||
status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
|
||||
if (status)
|
||||
|
||||
@@ -2097,6 +2097,11 @@ int ice_vc_add_fdir_fltr(struct ice_vf *vf, u8 *msg)
|
||||
pf = vf->pf;
|
||||
dev = ice_pf_to_dev(pf);
|
||||
vf_vsi = ice_get_vf_vsi(vf);
|
||||
if (!vf_vsi) {
|
||||
dev_err(dev, "Can not get FDIR vf_vsi for VF %u\n", vf->vf_id);
|
||||
v_ret = VIRTCHNL_STATUS_ERR_PARAM;
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
#define ICE_VF_MAX_FDIR_FILTERS 128
|
||||
if (!ice_fdir_num_avail_fltr(&pf->hw, vf_vsi) ||
|
||||
|
||||
@@ -629,13 +629,13 @@ bool idpf_is_capability_ena(struct idpf_adapter *adapter, bool all,
|
||||
VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V4 |\
|
||||
VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V6)
|
||||
|
||||
#define IDPF_CAP_RX_CSUM_L4V4 (\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP |\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP)
|
||||
#define IDPF_CAP_TX_CSUM_L4V4 (\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP |\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP)
|
||||
|
||||
#define IDPF_CAP_RX_CSUM_L4V6 (\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP |\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP)
|
||||
#define IDPF_CAP_TX_CSUM_L4V6 (\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP |\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP)
|
||||
|
||||
#define IDPF_CAP_RX_CSUM (\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 |\
|
||||
@@ -644,11 +644,9 @@ bool idpf_is_capability_ena(struct idpf_adapter *adapter, bool all,
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP |\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP)
|
||||
|
||||
#define IDPF_CAP_SCTP_CSUM (\
|
||||
#define IDPF_CAP_TX_SCTP_CSUM (\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP |\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP |\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP |\
|
||||
VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP)
|
||||
VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP)
|
||||
|
||||
#define IDPF_CAP_TUNNEL_TX_CSUM (\
|
||||
VIRTCHNL2_CAP_TX_CSUM_L3_SINGLE_TUNNEL |\
|
||||
|
||||
@@ -703,8 +703,10 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
|
||||
{
|
||||
struct idpf_adapter *adapter = vport->adapter;
|
||||
struct idpf_vport_config *vport_config;
|
||||
netdev_features_t other_offloads = 0;
|
||||
netdev_features_t csum_offloads = 0;
|
||||
netdev_features_t tso_offloads = 0;
|
||||
netdev_features_t dflt_features;
|
||||
netdev_features_t offloads = 0;
|
||||
struct idpf_netdev_priv *np;
|
||||
struct net_device *netdev;
|
||||
u16 idx = vport->idx;
|
||||
@@ -766,53 +768,32 @@ static int idpf_cfg_netdev(struct idpf_vport *vport)
|
||||
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS))
|
||||
dflt_features |= NETIF_F_RXHASH;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM_L4V4))
|
||||
dflt_features |= NETIF_F_IP_CSUM;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM_L4V6))
|
||||
dflt_features |= NETIF_F_IPV6_CSUM;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_TX_CSUM_L4V4))
|
||||
csum_offloads |= NETIF_F_IP_CSUM;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_TX_CSUM_L4V6))
|
||||
csum_offloads |= NETIF_F_IPV6_CSUM;
|
||||
if (idpf_is_cap_ena(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM))
|
||||
dflt_features |= NETIF_F_RXCSUM;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_SCTP_CSUM))
|
||||
dflt_features |= NETIF_F_SCTP_CRC;
|
||||
csum_offloads |= NETIF_F_RXCSUM;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_TX_SCTP_CSUM))
|
||||
csum_offloads |= NETIF_F_SCTP_CRC;
|
||||
|
||||
if (idpf_is_cap_ena(adapter, IDPF_SEG_CAPS, VIRTCHNL2_CAP_SEG_IPV4_TCP))
|
||||
dflt_features |= NETIF_F_TSO;
|
||||
tso_offloads |= NETIF_F_TSO;
|
||||
if (idpf_is_cap_ena(adapter, IDPF_SEG_CAPS, VIRTCHNL2_CAP_SEG_IPV6_TCP))
|
||||
dflt_features |= NETIF_F_TSO6;
|
||||
tso_offloads |= NETIF_F_TSO6;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_SEG_CAPS,
|
||||
VIRTCHNL2_CAP_SEG_IPV4_UDP |
|
||||
VIRTCHNL2_CAP_SEG_IPV6_UDP))
|
||||
dflt_features |= NETIF_F_GSO_UDP_L4;
|
||||
tso_offloads |= NETIF_F_GSO_UDP_L4;
|
||||
if (idpf_is_cap_ena_all(adapter, IDPF_RSC_CAPS, IDPF_CAP_RSC))
|
||||
offloads |= NETIF_F_GRO_HW;
|
||||
/* advertise to stack only if offloads for encapsulated packets is
|
||||
* supported
|
||||
*/
|
||||
if (idpf_is_cap_ena(vport->adapter, IDPF_SEG_CAPS,
|
||||
VIRTCHNL2_CAP_SEG_TX_SINGLE_TUNNEL)) {
|
||||
offloads |= NETIF_F_GSO_UDP_TUNNEL |
|
||||
NETIF_F_GSO_GRE |
|
||||
NETIF_F_GSO_GRE_CSUM |
|
||||
NETIF_F_GSO_PARTIAL |
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM |
|
||||
NETIF_F_GSO_IPXIP4 |
|
||||
NETIF_F_GSO_IPXIP6 |
|
||||
0;
|
||||
|
||||
if (!idpf_is_cap_ena_all(vport->adapter, IDPF_CSUM_CAPS,
|
||||
IDPF_CAP_TUNNEL_TX_CSUM))
|
||||
netdev->gso_partial_features |=
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM;
|
||||
|
||||
netdev->gso_partial_features |= NETIF_F_GSO_GRE_CSUM;
|
||||
offloads |= NETIF_F_TSO_MANGLEID;
|
||||
}
|
||||
other_offloads |= NETIF_F_GRO_HW;
|
||||
if (idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_LOOPBACK))
|
||||
offloads |= NETIF_F_LOOPBACK;
|
||||
other_offloads |= NETIF_F_LOOPBACK;
|
||||
|
||||
netdev->features |= dflt_features;
|
||||
netdev->hw_features |= dflt_features | offloads;
|
||||
netdev->hw_enc_features |= dflt_features | offloads;
|
||||
netdev->features |= dflt_features | csum_offloads | tso_offloads;
|
||||
netdev->hw_features |= netdev->features | other_offloads;
|
||||
netdev->vlan_features |= netdev->features | other_offloads;
|
||||
netdev->hw_enc_features |= dflt_features | other_offloads;
|
||||
idpf_set_ethtool_ops(netdev);
|
||||
netif_set_affinity_auto(netdev);
|
||||
SET_NETDEV_DEV(netdev, &adapter->pdev->dev);
|
||||
|
||||
Reference in New Issue
Block a user