Skip to content

Commit fafd5de

Browse files
josh8551021Shani Peretz
authored andcommitted
net/gve: add DQO Tx descriptor limit
The hardware supports at most 10 data descriptors per MTU-sized segment. GVE_TX_MAX_DATA_DESCS was defined in the initial implmenentation, but the descriptor limit was never actually enforced. Fixes: 4022f99 ("net/gve: support basic Tx data path for DQO") Cc: [email protected] Signed-off-by: Joshua Washington <[email protected]> Reviewed-by: Ankit Garg <[email protected]>
1 parent 1c5de38 commit fafd5de

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

drivers/net/gve/gve_ethdev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
450450
.nb_max = gve_is_gqi(priv) ? priv->tx_desc_cnt : GVE_MAX_QUEUE_SIZE_DQO,
451451
.nb_min = priv->tx_desc_cnt,
452452
.nb_align = 1,
453+
.nb_mtu_seg_max = GVE_TX_MAX_DATA_DESCS,
453454
};
454455

455456
return 0;

drivers/net/gve/gve_ethdev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ struct gve_tx_stats {
8282
uint64_t packets;
8383
uint64_t bytes;
8484
uint64_t errors;
85+
uint64_t too_many_descs;
8586
};
8687

8788
struct gve_rx_stats {

drivers/net/gve/gve_tx_dqo.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
154154
break;
155155
}
156156

157+
/* Drop packet if it doesn't adhere to hardware limits. */
158+
if (nb_descs > GVE_TX_MAX_DATA_DESCS) {
159+
txq->stats.too_many_descs++;
160+
break;
161+
}
162+
157163
do {
158164
if (sw_ring[sw_id] != NULL)
159165
PMD_DRV_LOG(DEBUG, "Overwriting an entry in sw_ring");

0 commit comments

Comments
 (0)