X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_rx.c;h=122b6570ce91abef0308a7e9f5edfbe9dc69612b;hb=2f3b88fbabc580ba9501be900ba9e7f95508ac09;hp=ddf9217052b37a7fc0dbfa54833bddd958d51148;hpb=68de5f6c035a81e22cd992bf7bbd0931eca733ff;p=dpdk.git diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c index ddf9217052..122b6570ce 100644 --- a/drivers/net/sfc/sfc_rx.c +++ b/drivers/net/sfc/sfc_rx.c @@ -577,7 +577,7 @@ sfc_rx_qflush(struct sfc_adapter *sa, unsigned int sw_index) static int sfc_rx_default_rxq_set_filter(struct sfc_adapter *sa, struct sfc_rxq *rxq) { - boolean_t rss = (sa->rss_channels > 1) ? B_TRUE : B_FALSE; + boolean_t rss = (sa->rss_channels > 0) ? B_TRUE : B_FALSE; struct sfc_port *port = &sa->port; int rc; @@ -930,7 +930,7 @@ sfc_rx_qinit(struct sfc_adapter *sa, unsigned int sw_index, info.prefix_size = encp->enc_rx_prefix_size; #if EFSYS_OPT_RX_SCALE - if (sa->hash_support == EFX_RX_HASH_AVAILABLE) + if (sa->hash_support == EFX_RX_HASH_AVAILABLE && sa->rss_channels > 0) info.flags |= SFC_RXQ_FLAG_RSS_HASH; #endif @@ -942,7 +942,7 @@ sfc_rx_qinit(struct sfc_adapter *sa, unsigned int sw_index, info.mem_bar = sa->mem_bar.esb_base; rc = sa->dp_rx->qcreate(sa->eth_dev->data->port_id, sw_index, - &SFC_DEV_TO_PCI(sa->eth_dev)->addr, + &RTE_ETH_DEV_TO_PCI(sa->eth_dev)->addr, socket_id, &info, &rxq->dp); if (rc != 0) goto fail_dp_rx_qcreate; @@ -1052,7 +1052,7 @@ sfc_rx_rss_config(struct sfc_adapter *sa) int rc = 0; #if EFSYS_OPT_RX_SCALE - if (sa->rss_channels > 1) { + if (sa->rss_channels > 0) { rc = efx_rx_scale_mode_set(sa->nic, EFX_RX_HASHALG_TOEPLITZ, sa->rss_hash_types, B_TRUE); if (rc != 0) @@ -1289,9 +1289,9 @@ sfc_rx_configure(struct sfc_adapter *sa) #if EFSYS_OPT_RX_SCALE sa->rss_channels = (dev_conf->rxmode.mq_mode == ETH_MQ_RX_RSS) ? - MIN(sa->rxq_count, EFX_MAXRSS) : 1; + MIN(sa->rxq_count, EFX_MAXRSS) : 0; - if (sa->rss_channels > 1) { + if (sa->rss_channels > 0) { for (sw_index = 0; sw_index < EFX_RSS_TBL_SIZE; ++sw_index) sa->rss_tbl[sw_index] = sw_index % sa->rss_channels; } @@ -1320,6 +1320,8 @@ sfc_rx_close(struct sfc_adapter *sa) { sfc_rx_fini_queues(sa, 0); + sa->rss_channels = 0; + rte_free(sa->rxq_info); sa->rxq_info = NULL; }