src/dpdk/drivers/net/txgbe/txgbe_rxtx.c
static inline uint32_t
what_ctx_update(struct txgbe_tx_queue *txq, uint64_t flags,
		   union txgbe_tx_offload tx_offload)
{
	/* If match with the current used context */
	if (likely(txq->ctx_cache[txq->ctx_curr].flags == flags &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[0] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[0]
		     & tx_offload.data[0])) &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[1] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[1]
		     & tx_offload.data[1]))))
		return txq->ctx_curr;

	/* What if match with the next context  */
	txq->ctx_curr ^= 1;
	if (likely(txq->ctx_cache[txq->ctx_curr].flags == flags &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[0] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[0]
		     & tx_offload.data[0])) &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[1] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[1]
		     & tx_offload.data[1]))))
		return txq->ctx_curr;

	/* Mismatch, use the previous context */
	return TXGBE_CTX_NUM;
}
/*
 * Check which hardware context can be used. Use the existing match
 * or create a new context descriptor.
 */
Check which hardware context can be used. Use the existing match
or create a new context descriptor.
Check which hardware context can be used . Use the existing match or create a new context descriptor .
static inline uint32_t
what_ctx_update(struct txgbe_tx_queue *txq, uint64_t flags,
		   union txgbe_tx_offload tx_offload)
{
	if (likely(txq->ctx_cache[txq->ctx_curr].flags == flags &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[0] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[0]
		     & tx_offload.data[0])) &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[1] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[1]
		     & tx_offload.data[1]))))
		return txq->ctx_curr;
	txq->ctx_curr ^= 1;
	if (likely(txq->ctx_cache[txq->ctx_curr].flags == flags &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[0] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[0]
		     & tx_offload.data[0])) &&
		   (txq->ctx_cache[txq->ctx_curr].tx_offload.data[1] ==
		    (txq->ctx_cache[txq->ctx_curr].tx_offload_mask.data[1]
		     & tx_offload.data[1]))))
		return txq->ctx_curr;
	return TXGBE_CTX_NUM;
}
static inline uint32_t what_ctx_update ( struct txgbe_tx_queue * txq , uint64_t flags , union txgbe_tx_offload tx_offload ) { if ( likely ( txq -> ctx_cache [ txq -> ctx_curr ] . flags == flags && ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload . data [ 0 ] == ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload_mask . data [ 0 ] & tx_offload . data [ 0 ] ) ) && ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload . data [ 1 ] == ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload_mask . data [ 1 ] & tx_offload . data [ 1 ] ) ) ) ) return txq -> ctx_curr ; txq -> ctx_curr ^= 1 ; if ( likely ( txq -> ctx_cache [ txq -> ctx_curr ] . flags == flags && ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload . data [ 0 ] == ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload_mask . data [ 0 ] & tx_offload . data [ 0 ] ) ) && ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload . data [ 1 ] == ( txq -> ctx_cache [ txq -> ctx_curr ] . tx_offload_mask . data [ 1 ] & tx_offload . data [ 1 ] ) ) ) ) return txq -> ctx_curr ; return TXGBE_CTX_NUM ; }
Check which hardware context can be used.
Check which hardware context can be used .
/* If match with the current used context */ /* What if match with the next context  */ /* Mismatch, use the previous context */