X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Fbnxt_rxr.c;h=992f97388c50142debcd991e565c5a99e2b81c54;hb=a5a0a43bc62ed5c735ae482dbc4d8a7af4b95eab;hp=4c1ee4294e3f3af5964b66415d53e59a6e67c336;hpb=64a4d59df5d668e18762a80d360a1aa8a9e8d81d;p=dpdk.git diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 4c1ee4294e..992f97388c 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -260,25 +260,25 @@ static void bnxt_tpa_start(struct bnxt_rx_queue *rxq, mbuf->pkt_len = rte_le_to_cpu_32(tpa_start->len); mbuf->data_len = mbuf->pkt_len; mbuf->port = rxq->port_id; - mbuf->ol_flags = PKT_RX_LRO; + mbuf->ol_flags = RTE_MBUF_F_RX_LRO; bnxt_tpa_get_metadata(rxq->bp, tpa_info, tpa_start, tpa_start1); if (likely(tpa_info->hash_valid)) { mbuf->hash.rss = tpa_info->rss_hash; - mbuf->ol_flags |= PKT_RX_RSS_HASH; + mbuf->ol_flags |= RTE_MBUF_F_RX_RSS_HASH; } else if (tpa_info->cfa_code_valid) { mbuf->hash.fdir.id = tpa_info->cfa_code; - mbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID; + mbuf->ol_flags |= RTE_MBUF_F_RX_FDIR | RTE_MBUF_F_RX_FDIR_ID; } if (tpa_info->vlan_valid && BNXT_RX_VLAN_STRIP_EN(rxq->bp)) { mbuf->vlan_tci = tpa_info->vlan; - mbuf->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; + mbuf->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } if (likely(tpa_info->l4_csum_valid)) - mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD; + mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; /* recycle next mbuf */ data_cons = RING_NEXT(data_cons); @@ -566,8 +566,8 @@ bnxt_init_ol_flags_tables(struct bnxt_rx_queue *rxq) dev_conf = &rxq->bp->eth_dev->data->dev_conf; offloads = dev_conf->rxmode.offloads; - outer_cksum_enabled = !!(offloads & (DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM | - DEV_RX_OFFLOAD_OUTER_UDP_CKSUM)); + outer_cksum_enabled = !!(offloads & (RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM | + RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM)); /* Initialize ol_flags table. */ pt = rxr->ol_flags_table; @@ -576,34 +576,34 @@ bnxt_init_ol_flags_tables(struct bnxt_rx_queue *rxq) if (BNXT_RX_VLAN_STRIP_EN(rxq->bp)) { if (i & RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN) - pt[i] |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; + pt[i] |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; } if (i & (RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC << 3)) { /* Tunnel case. */ if (outer_cksum_enabled) { if (i & RX_PKT_CMPL_FLAGS2_IP_CS_CALC) - pt[i] |= PKT_RX_IP_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_GOOD; if (i & RX_PKT_CMPL_FLAGS2_L4_CS_CALC) - pt[i] |= PKT_RX_L4_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; if (i & RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC) - pt[i] |= PKT_RX_OUTER_L4_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD; } else { if (i & RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC) - pt[i] |= PKT_RX_IP_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_GOOD; if (i & RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC) - pt[i] |= PKT_RX_L4_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; } } else { /* Non-tunnel case. */ if (i & RX_PKT_CMPL_FLAGS2_IP_CS_CALC) - pt[i] |= PKT_RX_IP_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_GOOD; if (i & RX_PKT_CMPL_FLAGS2_L4_CS_CALC) - pt[i] |= PKT_RX_L4_CKSUM_GOOD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; } } @@ -616,30 +616,30 @@ bnxt_init_ol_flags_tables(struct bnxt_rx_queue *rxq) /* Tunnel case. */ if (outer_cksum_enabled) { if (i & (RX_PKT_CMPL_ERRORS_IP_CS_ERROR >> 4)) - pt[i] |= PKT_RX_IP_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_BAD; if (i & (RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR >> 4)) - pt[i] |= PKT_RX_OUTER_IP_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_OUTER_IP_CKSUM_BAD; if (i & (RX_PKT_CMPL_ERRORS_L4_CS_ERROR >> 4)) - pt[i] |= PKT_RX_L4_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_BAD; if (i & (RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR >> 4)) - pt[i] |= PKT_RX_OUTER_L4_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_OUTER_L4_CKSUM_BAD; } else { if (i & (RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR >> 4)) - pt[i] |= PKT_RX_IP_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_BAD; if (i & (RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR >> 4)) - pt[i] |= PKT_RX_L4_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_BAD; } } else { /* Non-tunnel case. */ if (i & (RX_PKT_CMPL_ERRORS_IP_CS_ERROR >> 4)) - pt[i] |= PKT_RX_IP_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_IP_CKSUM_BAD; if (i & (RX_PKT_CMPL_ERRORS_L4_CS_ERROR >> 4)) - pt[i] |= PKT_RX_L4_CKSUM_BAD; + pt[i] |= RTE_MBUF_F_RX_L4_CKSUM_BAD; } } } @@ -677,13 +677,13 @@ bnxt_set_ol_flags(struct bnxt_rx_ring_info *rxr, struct rx_pkt_cmpl *rxcmp, if (flags_type & RX_PKT_CMPL_FLAGS_RSS_VALID) { mbuf->hash.rss = rte_le_to_cpu_32(rxcmp->rss_hash); - ol_flags |= PKT_RX_RSS_HASH; + ol_flags |= RTE_MBUF_F_RX_RSS_HASH; } #ifdef RTE_LIBRTE_IEEE1588 if (unlikely((flags_type & RX_PKT_CMPL_FLAGS_MASK) == RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP)) - ol_flags |= PKT_RX_IEEE1588_PTP | PKT_RX_IEEE1588_TMST; + ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP | RTE_MBUF_F_RX_IEEE1588_TMST; #endif mbuf->ol_flags = ol_flags; @@ -807,7 +807,7 @@ bnxt_ulp_set_mark_in_mbuf(struct bnxt *bp, struct rx_pkt_cmpl_hi *rxcmp1, mbuf->hash.fdir.hi = mark_id; *bnxt_cfa_code_dynfield(mbuf) = cfa_code & 0xffffffffull; mbuf->hash.fdir.id = rxcmp1->cfa_code; - mbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID; + mbuf->ol_flags |= RTE_MBUF_F_RX_FDIR | RTE_MBUF_F_RX_FDIR_ID; return mark_id; } @@ -854,7 +854,7 @@ void bnxt_set_mark_in_mbuf(struct bnxt *bp, } mbuf->hash.fdir.hi = bp->mark_table[cfa_code].mark_id; - mbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID; + mbuf->ol_flags |= RTE_MBUF_F_RX_FDIR | RTE_MBUF_F_RX_FDIR_ID; } static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, @@ -1223,57 +1223,75 @@ int bnxt_init_rx_ring_struct(struct bnxt_rx_queue *rxq, unsigned int socket_id) rxq->rx_buf_size = BNXT_MAX_PKT_LEN + sizeof(struct rte_mbuf); - rxr = rte_zmalloc_socket("bnxt_rx_ring", - sizeof(struct bnxt_rx_ring_info), - RTE_CACHE_LINE_SIZE, socket_id); - if (rxr == NULL) - return -ENOMEM; - rxq->rx_ring = rxr; - - ring = rte_zmalloc_socket("bnxt_rx_ring_struct", - sizeof(struct bnxt_ring), - RTE_CACHE_LINE_SIZE, socket_id); - if (ring == NULL) - return -ENOMEM; - rxr->rx_ring_struct = ring; - ring->ring_size = rte_align32pow2(rxq->nb_rx_desc); - ring->ring_mask = ring->ring_size - 1; - ring->bd = (void *)rxr->rx_desc_ring; - ring->bd_dma = rxr->rx_desc_mapping; - - /* Allocate extra rx ring entries for vector rx. */ - ring->vmem_size = sizeof(struct rte_mbuf *) * - (ring->ring_size + BNXT_RX_EXTRA_MBUF_ENTRIES); + if (rxq->rx_ring != NULL) { + rxr = rxq->rx_ring; + } else { - ring->vmem = (void **)&rxr->rx_buf_ring; - ring->fw_ring_id = INVALID_HW_RING_ID; + rxr = rte_zmalloc_socket("bnxt_rx_ring", + sizeof(struct bnxt_rx_ring_info), + RTE_CACHE_LINE_SIZE, socket_id); + if (rxr == NULL) + return -ENOMEM; + rxq->rx_ring = rxr; + } - cpr = rte_zmalloc_socket("bnxt_rx_ring", - sizeof(struct bnxt_cp_ring_info), - RTE_CACHE_LINE_SIZE, socket_id); - if (cpr == NULL) - return -ENOMEM; - rxq->cp_ring = cpr; + if (rxr->rx_ring_struct == NULL) { + ring = rte_zmalloc_socket("bnxt_rx_ring_struct", + sizeof(struct bnxt_ring), + RTE_CACHE_LINE_SIZE, socket_id); + if (ring == NULL) + return -ENOMEM; + rxr->rx_ring_struct = ring; + ring->ring_size = rte_align32pow2(rxq->nb_rx_desc); + ring->ring_mask = ring->ring_size - 1; + ring->bd = (void *)rxr->rx_desc_ring; + ring->bd_dma = rxr->rx_desc_mapping; + + /* Allocate extra rx ring entries for vector rx. */ + ring->vmem_size = sizeof(struct rte_mbuf *) * + (ring->ring_size + BNXT_RX_EXTRA_MBUF_ENTRIES); + + ring->vmem = (void **)&rxr->rx_buf_ring; + ring->fw_ring_id = INVALID_HW_RING_ID; + } - ring = rte_zmalloc_socket("bnxt_rx_ring_struct", - sizeof(struct bnxt_ring), - RTE_CACHE_LINE_SIZE, socket_id); - if (ring == NULL) - return -ENOMEM; - cpr->cp_ring_struct = ring; + if (rxq->cp_ring != NULL) { + cpr = rxq->cp_ring; + } else { + cpr = rte_zmalloc_socket("bnxt_rx_ring", + sizeof(struct bnxt_cp_ring_info), + RTE_CACHE_LINE_SIZE, socket_id); + if (cpr == NULL) + return -ENOMEM; + rxq->cp_ring = cpr; + } - /* Allocate two completion slots per entry in desc ring. */ - ring->ring_size = rxr->rx_ring_struct->ring_size * 2; - ring->ring_size *= AGG_RING_SIZE_FACTOR; + if (cpr->cp_ring_struct == NULL) { + ring = rte_zmalloc_socket("bnxt_rx_ring_struct", + sizeof(struct bnxt_ring), + RTE_CACHE_LINE_SIZE, socket_id); + if (ring == NULL) + return -ENOMEM; + cpr->cp_ring_struct = ring; + + /* Allocate two completion slots per entry in desc ring. */ + ring->ring_size = rxr->rx_ring_struct->ring_size * 2; + if (bnxt_need_agg_ring(rxq->bp->eth_dev)) + ring->ring_size *= AGG_RING_SIZE_FACTOR; + + ring->ring_size = rte_align32pow2(ring->ring_size); + ring->ring_mask = ring->ring_size - 1; + ring->bd = (void *)cpr->cp_desc_ring; + ring->bd_dma = cpr->cp_desc_mapping; + ring->vmem_size = 0; + ring->vmem = NULL; + ring->fw_ring_id = INVALID_HW_RING_ID; + } - ring->ring_size = rte_align32pow2(ring->ring_size); - ring->ring_mask = ring->ring_size - 1; - ring->bd = (void *)cpr->cp_desc_ring; - ring->bd_dma = cpr->cp_desc_mapping; - ring->vmem_size = 0; - ring->vmem = NULL; - ring->fw_ring_id = INVALID_HW_RING_ID; + if (!bnxt_need_agg_ring(rxq->bp->eth_dev)) + return 0; + rxr = rxq->rx_ring; /* Allocate Aggregator rings */ ring = rte_zmalloc_socket("bnxt_rx_ring_struct", sizeof(struct bnxt_ring), @@ -1351,6 +1369,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) rxr->rx_buf_ring[i] = &rxq->fake_mbuf; } + if (!bnxt_need_agg_ring(rxq->bp->eth_dev)) + return 0; + ring = rxr->ag_ring_struct; type = RX_PROD_AGG_BD_TYPE_RX_PROD_AGG; bnxt_init_rxbds(ring, type, size);