git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/ice: enable QinQ filter for switch
[dpdk.git]
/
drivers
/
net
/
ice
/
ice_ethdev.c
diff --git
a/drivers/net/ice/ice_ethdev.c
b/drivers/net/ice/ice_ethdev.c
index
bbb8c14
..
ec29f0f
100644
(file)
--- a/
drivers/net/ice/ice_ethdev.c
+++ b/
drivers/net/ice/ice_ethdev.c
@@
-216,6
+216,7
@@
static const struct eth_dev_ops ice_eth_dev_ops = {
.udp_tunnel_port_add = ice_dev_udp_tunnel_port_add,
.udp_tunnel_port_del = ice_dev_udp_tunnel_port_del,
.tx_done_cleanup = ice_tx_done_cleanup,
.udp_tunnel_port_add = ice_dev_udp_tunnel_port_add,
.udp_tunnel_port_del = ice_dev_udp_tunnel_port_del,
.tx_done_cleanup = ice_tx_done_cleanup,
+ .get_monitor_addr = ice_get_monitor_addr,
};
/* store statistics names and its offset in stats structure */
};
/* store statistics names and its offset in stats structure */
@@
-1128,28
+1129,28
@@
ice_vsi_config_qinq_insertion(struct ice_vsi *vsi, bool on)
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID)) {
if (on) {
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID)) {
if (on) {
- if ((vsi->info.outer_
tag
_flags &
- ICE_AQ_VSI_OUTER_
TAG
_ACCEPT_HOST) ==
- ICE_AQ_VSI_OUTER_
TAG
_ACCEPT_HOST)
+ if ((vsi->info.outer_
vlan
_flags &
+ ICE_AQ_VSI_OUTER_
VLAN_PORT_BASED
_ACCEPT_HOST) ==
+ ICE_AQ_VSI_OUTER_
VLAN_PORT_BASED
_ACCEPT_HOST)
return 0; /* already on */
} else {
return 0; /* already on */
} else {
- if (!(vsi->info.outer_
tag
_flags &
- ICE_AQ_VSI_OUTER_
TAG
_ACCEPT_HOST))
+ if (!(vsi->info.outer_
vlan
_flags &
+ ICE_AQ_VSI_OUTER_
VLAN_PORT_BASED
_ACCEPT_HOST))
return 0; /* already off */
}
}
if (on)
return 0; /* already off */
}
}
if (on)
- qinq_flags = ICE_AQ_VSI_OUTER_
TAG
_ACCEPT_HOST;
+ qinq_flags = ICE_AQ_VSI_OUTER_
VLAN_PORT_BASED
_ACCEPT_HOST;
else
qinq_flags = 0;
/* clear global insertion and use per packet insertion */
else
qinq_flags = 0;
/* clear global insertion and use per packet insertion */
- vsi->info.outer_
tag_flags &= ~(ICE_AQ_VSI_OUTER_TAG
_INSERT);
- vsi->info.outer_
tag_flags &= ~(ICE_AQ_VSI_OUTER_TAG
_ACCEPT_HOST);
- vsi->info.outer_
tag
_flags |= qinq_flags;
+ vsi->info.outer_
vlan_flags &= ~(ICE_AQ_VSI_OUTER_VLAN_PORT_BASED
_INSERT);
+ vsi->info.outer_
vlan_flags &= ~(ICE_AQ_VSI_OUTER_VLAN_PORT_BASED
_ACCEPT_HOST);
+ vsi->info.outer_
vlan
_flags |= qinq_flags;
/* use default vlan type 0x8100 */
/* use default vlan type 0x8100 */
- vsi->info.outer_
tag
_flags &= ~(ICE_AQ_VSI_OUTER_TAG_TYPE_M);
- vsi->info.outer_
tag
_flags |= ICE_DFLT_OUTER_TAG_TYPE <<
+ vsi->info.outer_
vlan
_flags &= ~(ICE_AQ_VSI_OUTER_TAG_TYPE_M);
+ vsi->info.outer_
vlan
_flags |= ICE_DFLT_OUTER_TAG_TYPE <<
ICE_AQ_VSI_OUTER_TAG_TYPE_S;
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
ICE_AQ_VSI_OUTER_TAG_TYPE_S;
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
@@
-1181,27
+1182,27
@@
ice_vsi_config_qinq_stripping(struct ice_vsi *vsi, bool on)
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID)) {
if (on) {
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_OUTER_TAG_VALID)) {
if (on) {
- if ((vsi->info.outer_
tag
_flags &
- ICE_AQ_VSI_OUTER_
TAG_
MODE_M) ==
- ICE_AQ_VSI_OUTER_
TAG_COPY
)
+ if ((vsi->info.outer_
vlan
_flags &
+ ICE_AQ_VSI_OUTER_
VLAN_E
MODE_M) ==
+ ICE_AQ_VSI_OUTER_
VLAN_EMODE_SHOW
)
return 0; /* already on */
} else {
return 0; /* already on */
} else {
- if ((vsi->info.outer_
tag
_flags &
- ICE_AQ_VSI_OUTER_
TAG_
MODE_M) ==
- ICE_AQ_VSI_OUTER_
TAG_NOTHING
)
+ if ((vsi->info.outer_
vlan
_flags &
+ ICE_AQ_VSI_OUTER_
VLAN_E
MODE_M) ==
+ ICE_AQ_VSI_OUTER_
VLAN_EMODE_SHOW_BOTH
)
return 0; /* already off */
}
}
if (on)
return 0; /* already off */
}
}
if (on)
- qinq_flags = ICE_AQ_VSI_OUTER_
TAG_COPY
;
+ qinq_flags = ICE_AQ_VSI_OUTER_
VLAN_EMODE_SHOW
;
else
else
- qinq_flags = ICE_AQ_VSI_OUTER_
TAG_NOTHING
;
- vsi->info.outer_
tag_flags &= ~(ICE_AQ_VSI_OUTER_TAG_
MODE_M);
- vsi->info.outer_
tag
_flags |= qinq_flags;
+ qinq_flags = ICE_AQ_VSI_OUTER_
VLAN_EMODE_SHOW_BOTH
;
+ vsi->info.outer_
vlan_flags &= ~(ICE_AQ_VSI_OUTER_VLAN_E
MODE_M);
+ vsi->info.outer_
vlan
_flags |= qinq_flags;
/* use default vlan type 0x8100 */
/* use default vlan type 0x8100 */
- vsi->info.outer_
tag
_flags &= ~(ICE_AQ_VSI_OUTER_TAG_TYPE_M);
- vsi->info.outer_
tag
_flags |= ICE_DFLT_OUTER_TAG_TYPE <<
+ vsi->info.outer_
vlan
_flags &= ~(ICE_AQ_VSI_OUTER_TAG_TYPE_M);
+ vsi->info.outer_
vlan
_flags |= ICE_DFLT_OUTER_TAG_TYPE <<
ICE_AQ_VSI_OUTER_TAG_TYPE_S;
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
ICE_AQ_VSI_OUTER_TAG_TYPE_S;
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
@@
-1579,8
+1580,8
@@
ice_setup_vsi(struct ice_pf *pf, enum ice_vsi_type type)
vsi_ctx.info.sw_id = hw->port_info->sw_id;
vsi_ctx.info.sw_flags2 = ICE_AQ_VSI_SW_FLAG_LAN_ENA;
/* Allow all untagged or tagged packets */
vsi_ctx.info.sw_id = hw->port_info->sw_id;
vsi_ctx.info.sw_flags2 = ICE_AQ_VSI_SW_FLAG_LAN_ENA;
/* Allow all untagged or tagged packets */
- vsi_ctx.info.
vlan_flags = ICE_AQ_VSI_VLAN
_MODE_ALL;
- vsi_ctx.info.
vlan_flags |= ICE_AQ_VSI_VLAN_EMOD
_NOTHING;
+ vsi_ctx.info.
inner_vlan_flags = ICE_AQ_VSI_INNER_VLAN_TX
_MODE_ALL;
+ vsi_ctx.info.
inner_vlan_flags |= ICE_AQ_VSI_INNER_VLAN_EMODE
_NOTHING;
vsi_ctx.info.q_opt_rss = ICE_AQ_VSI_Q_OPT_RSS_LUT_PF |
ICE_AQ_VSI_Q_OPT_RSS_TPLZ;
vsi_ctx.info.q_opt_rss = ICE_AQ_VSI_Q_OPT_RSS_LUT_PF |
ICE_AQ_VSI_Q_OPT_RSS_TPLZ;
@@
-3274,10
+3275,12
@@
ice_dev_configure(struct rte_eth_dev *dev)
if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
- ret = ice_init_rss(pf);
- if (ret) {
- PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
- return ret;
+ if (dev->data->nb_rx_queues) {
+ ret = ice_init_rss(pf);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
+ return ret;
+ }
}
return 0;
}
return 0;
@@
-3846,8
+3849,8
@@
ice_force_phys_link_state(struct ice_hw *hw, bool link_up)
if (!pcaps)
return ICE_ERR_NO_MEMORY;
if (!pcaps)
return ICE_ERR_NO_MEMORY;
- status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_
SW_CFG, pcaps
,
- NULL);
+ status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_
ACTIVE_CFG
,
+
pcaps,
NULL);
if (status)
goto out;
if (status)
goto out;
@@
-3910,7
+3913,7
@@
ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
return -EBUSY;
}
return -EBUSY;
}
- if (frame_size >
RTE_ETHER
_MAX_LEN)
+ if (frame_size >
ICE_ETH
_MAX_LEN)
dev_data->dev_conf.rxmode.offloads |=
DEV_RX_OFFLOAD_JUMBO_FRAME;
else
dev_data->dev_conf.rxmode.offloads |=
DEV_RX_OFFLOAD_JUMBO_FRAME;
else
@@
-4090,24
+4093,24
@@
ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool on)
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_VLAN_VALID)) {
if (on) {
if (vsi->info.valid_sections &
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_VLAN_VALID)) {
if (on) {
- if ((vsi->info.vlan_flags &
- ICE_AQ_VSI_
VLAN_EMOD
_M) ==
- ICE_AQ_VSI_
VLAN_EMOD
_STR_BOTH)
+ if ((vsi->info.
inner_
vlan_flags &
+ ICE_AQ_VSI_
INNER_VLAN_EMODE
_M) ==
+ ICE_AQ_VSI_
INNER_VLAN_EMODE
_STR_BOTH)
return 0; /* already on */
} else {
return 0; /* already on */
} else {
- if ((vsi->info.vlan_flags &
- ICE_AQ_VSI_
VLAN_EMOD
_M) ==
- ICE_AQ_VSI_
VLAN_EMOD
_NOTHING)
+ if ((vsi->info.
inner_
vlan_flags &
+ ICE_AQ_VSI_
INNER_VLAN_EMODE
_M) ==
+ ICE_AQ_VSI_
INNER_VLAN_EMODE
_NOTHING)
return 0; /* already off */
}
}
if (on)
return 0; /* already off */
}
}
if (on)
- vlan_flags = ICE_AQ_VSI_
VLAN_EMOD
_STR_BOTH;
+ vlan_flags = ICE_AQ_VSI_
INNER_VLAN_EMODE
_STR_BOTH;
else
else
- vlan_flags = ICE_AQ_VSI_
VLAN_EMOD
_NOTHING;
- vsi->info.
vlan_flags &= ~(ICE_AQ_VSI_VLAN_EMOD
_M);
- vsi->info.vlan_flags |= vlan_flags;
+ vlan_flags = ICE_AQ_VSI_
INNER_VLAN_EMODE
_NOTHING;
+ vsi->info.
inner_vlan_flags &= ~(ICE_AQ_VSI_INNER_VLAN_EMODE
_M);
+ vsi->info.
inner_
vlan_flags |= vlan_flags;
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_VLAN_VALID);
(void)rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
rte_cpu_to_le_16(ICE_AQ_VSI_PROP_VLAN_VALID);
@@
-4586,24
+4589,24
@@
ice_vsi_vlan_pvid_set(struct ice_vsi *vsi, struct ice_vsi_vlan_pvid_info *info)
}
if (info->on) {
}
if (info->on) {
- vsi->info.p
vid
= info->config.pvid;
+ vsi->info.p
ort_based_inner_vlan
= info->config.pvid;
/**
* If insert pvid is enabled, only tagged pkts are
* allowed to be sent out.
*/
/**
* If insert pvid is enabled, only tagged pkts are
* allowed to be sent out.
*/
- vlan_flags = ICE_AQ_VSI_
P
VLAN_INSERT_PVID |
- ICE_AQ_VSI_
VLAN_MODE_
UNTAGGED;
+ vlan_flags = ICE_AQ_VSI_
INNER_
VLAN_INSERT_PVID |
+ ICE_AQ_VSI_
INNER_VLAN_TX_MODE_ACCEPT
UNTAGGED;
} else {
} else {
- vsi->info.p
vid
= 0;
+ vsi->info.p
ort_based_inner_vlan
= 0;
if (info->config.reject.tagged == 0)
if (info->config.reject.tagged == 0)
- vlan_flags |= ICE_AQ_VSI_
VLAN_MODE_
TAGGED;
+ vlan_flags |= ICE_AQ_VSI_
INNER_VLAN_TX_MODE_ACCEPT
TAGGED;
if (info->config.reject.untagged == 0)
if (info->config.reject.untagged == 0)
- vlan_flags |= ICE_AQ_VSI_
VLAN_MODE_
UNTAGGED;
+ vlan_flags |= ICE_AQ_VSI_
INNER_VLAN_TX_MODE_ACCEPT
UNTAGGED;
}
}
- vsi->info.
vlan_flags &= ~(ICE_AQ_VSI_P
VLAN_INSERT_PVID |
- ICE_AQ_VSI_
VLAN_
MODE_M);
- vsi->info.vlan_flags |= vlan_flags;
+ vsi->info.
inner_vlan_flags &= ~(ICE_AQ_VSI_INNER_
VLAN_INSERT_PVID |
+ ICE_AQ_VSI_
INNER_VLAN_E
MODE_M);
+ vsi->info.
inner_
vlan_flags |= vlan_flags;
memset(&ctxt, 0, sizeof(ctxt));
rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =
memset(&ctxt, 0, sizeof(ctxt));
rte_memcpy(&ctxt.info, &vsi->info, sizeof(vsi->info));
ctxt.info.valid_sections =