X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fsfc%2Fsfc_rx.c;h=f589ece7574305ab2c5524f5f19b002c61c034b3;hb=9d28d6b0b0bf4e7d9386c2ab56893d5cc95e78e5;hp=e6809bb64e7da94709dbf8ed64e8cab611d5ba7e;hpb=827ad8232cb87a0f79e65c3f5bb154a2fd771153;p=dpdk.git diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c index e6809bb64e..f589ece757 100644 --- a/drivers/net/sfc/sfc_rx.c +++ b/drivers/net/sfc/sfc_rx.c @@ -617,7 +617,8 @@ struct sfc_dp_rx sfc_efx_rx = { .hw_fw_caps = 0, }, .features = SFC_DP_RX_FEAT_INTR, - .dev_offload_capa = DEV_RX_OFFLOAD_CHECKSUM, + .dev_offload_capa = DEV_RX_OFFLOAD_CHECKSUM | + DEV_RX_OFFLOAD_RSS_HASH, .queue_offload_capa = DEV_RX_OFFLOAD_SCATTER, .qsize_up_rings = sfc_efx_rx_qsize_up_rings, .qcreate = sfc_efx_rx_qcreate, @@ -718,6 +719,7 @@ retry: sfc_warn(sa, "promiscuous mode will be disabled"); port->promisc = B_FALSE; + sa->eth_dev->data->promiscuous = 0; rc = sfc_set_rx_mode(sa); if (rc != 0) return rc; @@ -731,6 +733,7 @@ retry: sfc_warn(sa, "all-multicast mode will be disabled"); port->allmulti = B_FALSE; + sa->eth_dev->data->all_multicast = 0; rc = sfc_set_rx_mode(sa); if (rc != 0) return rc; @@ -1402,7 +1405,7 @@ sfc_rx_process_adv_conf_rss(struct sfc_adapter *sa, if (conf->rss_key != NULL) { if (conf->rss_key_len != sizeof(rss->key)) { - sfc_err(sa, "RSS key size is wrong (should be %lu)", + sfc_err(sa, "RSS key size is wrong (should be %zu)", sizeof(rss->key)); return EINVAL; } @@ -1556,6 +1559,10 @@ sfc_rx_check_mode(struct sfc_adapter *sa, struct rte_eth_rxmode *rxmode) rxmode->offloads |= DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM; } + if ((offloads_supported & DEV_RX_OFFLOAD_RSS_HASH) && + (rxmode->mq_mode & ETH_MQ_RX_RSS_FLAG)) + rxmode->offloads |= DEV_RX_OFFLOAD_RSS_HASH; + return rc; }