@@ -97,14 +97,8 @@ static const struct app_link_params link_params_default = {
.rxmode = {
.mq_mode = ETH_MQ_RX_NONE,
- .header_split = 0, /* Header split */
- .hw_ip_checksum = 0, /* IP checksum offload */
- .hw_vlan_filter = 0, /* VLAN filtering */
- .hw_vlan_strip = 0, /* VLAN strip */
- .hw_vlan_extend = 0, /* Extended VLAN */
- .jumbo_frame = 0, /* Jumbo frame support */
- .hw_strip_crc = 1, /* CRC strip by HW */
- .enable_scatter = 0, /* Scattered packets RX handler */
+ .ignore_offload_bitfield = 1,
+ .offloads = DEV_RX_OFFLOAD_CRC_STRIP,
.max_rx_pkt_len = 9000, /* Jumbo frame max packet len */
.split_hdr_size = 0, /* Header split buffer size */
@@ -158,8 +152,7 @@ static const struct app_pktq_hwq_out_params default_hwq_out_params = {
},
.tx_rs_thresh = 0,
.tx_free_thresh = 0,
- .txq_flags = ETH_TXQ_FLAGS_NOMULTSEGS |
- ETH_TXQ_FLAGS_NOOFFLOADS,
+ .txq_flags = ETH_TXQ_FLAGS_IGNORE,
.tx_deferred_start = 0,
}
};
@@ -876,10 +876,10 @@ app_init_link_frag_ras(struct app_params *app)
uint32_t i;
if (is_any_swq_frag_or_ras(app)) {
- for (i = 0; i < app->n_pktq_hwq_out; i++) {
- struct app_pktq_hwq_out_params *p_txq = &app->hwq_out_params[i];
-
- p_txq->conf.txq_flags &= ~ETH_TXQ_FLAGS_NOMULTSEGS;
+ for (i = 0; i < app->n_links; i++) {
+ struct app_link_params *p_link = &app->link_params[i];
+ p_link->conf.txmode.offloads |=
+ DEV_TX_OFFLOAD_MULTI_SEGS;
}
}
}
@@ -962,6 +962,7 @@ app_init_link(struct app_params *app)
for (i = 0; i < app->n_links; i++) {
struct app_link_params *p_link = &app->link_params[i];
+ struct rte_eth_dev_info dev_info;
uint32_t link_id, n_hwq_in, n_hwq_out, j;
int status;
@@ -978,6 +979,25 @@ app_init_link(struct app_params *app)
n_hwq_out);
/* LINK */
+ rte_eth_dev_info_get(p_link->pmd_id, &dev_info);
+ if ((dev_info.rx_offload_capa & p_link->conf.rxmode.offloads) !=
+ p_link->conf.rxmode.offloads) {
+ printf("Some Rx offloads are not supported "
+ "by port %d: requested 0x%lx supported 0x%lx\n",
+ p_link->pmd_id, p_link->conf.rxmode.offloads,
+ dev_info.rx_offload_capa);
+ p_link->conf.rxmode.offloads &=
+ dev_info.rx_offload_capa;
+ }
+ if ((dev_info.tx_offload_capa & p_link->conf.txmode.offloads) !=
+ p_link->conf.txmode.offloads) {
+ printf("Some Tx offloads are not supported "
+ "by port %d: requested 0x%lx supported 0x%lx\n",
+ p_link->pmd_id, p_link->conf.txmode.offloads,
+ dev_info.tx_offload_capa);
+ p_link->conf.txmode.offloads &=
+ dev_info.tx_offload_capa;
+ }
status = rte_eth_dev_configure(
p_link->pmd_id,
n_hwq_in,
@@ -1019,6 +1039,7 @@ app_init_link(struct app_params *app)
p_rxq->name,
status);
+ p_rxq->conf.offloads = p_link->conf.rxmode.offloads;
status = rte_eth_rx_queue_setup(
p_link->pmd_id,
rxq_queue_id,
@@ -1060,6 +1081,7 @@ app_init_link(struct app_params *app)
p_txq->name,
status);
+ p_txq->conf.offloads = p_link->conf.txmode.offloads;
status = rte_eth_tx_queue_setup(
p_link->pmd_id,
txq_queue_id,