d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER START
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Common Development and Distribution License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * or http://www.opensolaris.org/os/licensing.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * When distributing Covered Code, include this CDDL HEADER in each
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * If applicable, add the following below this CDDL HEADER, with the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * fields enclosed by brackets "[]" replaced with your own identifying
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * information: Portions Copyright [yyyy] [name of copyright owner]
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER END
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Copyright 2014 QLogic Corporation
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic End User License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the License at
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* these are the default phy link configs */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic void BnxeCfgGetVal(um_device_t * pUM,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* first check if the hardcoded default has been overridden */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, BNXE_CFG_NAME_LEN_MAX, "default_%s", pName);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* now check for a config for this specific instance */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, BNXE_CFG_NAME_LEN_MAX, "bnxe%d_%s", pUM->instance, pName);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *((boolean_t *)pVal) = (val) ? B_TRUE : B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* DCBX defaults configuration: DCBX not supported by default. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.dcbx_enabled = FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* DCBX defaults configuration: PFC not supported. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.pfc.enabled = FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < LLFC_DRIVER_TRAFFIC_TYPE_MAX; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.app.traffic_type_priority[i] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.pfc.priority_non_pauseable_mask = 0;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi memset(&pLM->params.lldp_config_params, 0xFF,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi memset(&pLM->params.dcbx_config_params, 0xFF,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.dcb_enable = 1;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_dcbx_enable = 1;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_overwrite_settings",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.overwrite_settings,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.overwrite_settings,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_tx_hold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_tx_hold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_fast_tx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_fast_tx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.tx_credit_max,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.tx_credit_max,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_tx_interval,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_tx_interval,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.dcb_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_dcbx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_dcbx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_dcbx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_overwrite_settings",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.overwrite_settings,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.overwrite_settings,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_dcbx_version",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_dcbx_version,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_dcbx_version,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_ets_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_ets_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_ets_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_pfc_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_pfc_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_pfc_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_tc_supported_tx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_tc_supported_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_tc_supported_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_ets_configuration_tx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_ets_configuration_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_ets_configuration_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_ets_recommendation_tx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_ets_recommendation_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_ets_recommendation_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_pfc_tx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_pfc_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_pfc_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_application_priority_tx_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_application_priority_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_application_priority_tx_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_ets_willing",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_ets_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_ets_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_pfc_willing",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_pfc_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_pfc_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_ets_reco_valid",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_ets_reco_valid,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_ets_reco_valid,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_app_priority_willing",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_app_priority_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_app_priority_willing,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_configuration_bw_percentage_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_configuration_bw_percentage[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_configuration_bw_percentage[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_configuration_ets_pg_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_configuration_ets_pg[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_configuration_ets_pg[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_recommendation_bw_percentage_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_recommendation_bw_percentage[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_recommendation_bw_percentage[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_recommendation_ets_pg_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_recommendation_ets_pg[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_recommendation_ets_pg[i],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_pfc_bitmap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_pfc_bitmap,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_pfc_bitmap,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 4; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_valid", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_priority_app_table[i].valid,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_priority_app_table[i].valid,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_priority", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_priority_app_table[i].priority,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_priority_app_table[i].priority,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_traffic_type", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_priority_app_table[i].traffic_type,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_priority_app_table[i].traffic_type,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_app_id", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_priority_app_table[i].app_id,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_priority_app_table[i].app_id,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_admin_default_priority",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.admin_default_priority,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_default_priority,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* set the defaults */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi bcopy(&bnxeLinkCfg, &pUM->hwinit.lnkcfg, sizeof(BnxeLinkCfg));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.checksum = USER_OPTION_CKSUM_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = LM_OFFLOAD_NONE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.mtu[LM_CLI_IDX_NDIS] = USER_OPTION_MTU_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = USER_OPTION_NUM_RINGS_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_RX_BDS_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_TX_BDS_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxRxFree = USER_OPTION_RX_MAX_FREE_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxTxFree = USER_OPTION_TX_MAX_FREE_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.rxCopyThreshold = USER_OPTION_RX_DCOPY_THRESH_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.txCopyThreshold = USER_OPTION_TX_DCOPY_THRESH_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrRxPerSec = USER_OPTION_INTR_COALESCE_RX_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrTxPerSec = USER_OPTION_INTR_COALESCE_TX_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.routeTxRingPolicy = BNXE_ROUTE_RING_TCPUDP;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.linkRemoteFaultDetect = B_TRUE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* set the LLDP/DCBX defaults and get settings from bnxe.conf */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* override the defaults based on what is set in bnxe.conf */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = (LM_OFFLOAD_TX_IP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = (LM_OFFLOAD_TX_IP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = LM_OFFLOAD_NONE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_NDIS] = pUM->devParams.mtu[LM_CLI_IDX_NDIS];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.mtu[LM_CLI_IDX_FCOE] = LM_MTU_FCOE_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_FCOE] = LM_MTU_FCOE_DEFAULT;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu_max = (pUM->lm_dev.params.mtu[LM_CLI_IDX_NDIS] >
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if ((pUM->devParams.routeTxRingPolicy != BNXE_ROUTE_RING_NONE) &&
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (pUM->devParams.routeTxRingPolicy != BNXE_ROUTE_RING_TCPUDP) &&
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (pUM->devParams.routeTxRingPolicy != BNXE_ROUTE_RING_DEST_MAC) &&
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (pUM->devParams.routeTxRingPolicy != BNXE_ROUTE_RING_MSG_PRIO))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.routeTxRingPolicy = BNXE_ROUTE_RING_TCPUDP;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = (option < USER_OPTION_NUM_RINGS_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* adjust for function mode defaults */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (pUM->devParams.numRings == USER_OPTION_NUM_RINGS_DEFAULT)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = (IS_MULTI_VNIC(&pUM->lm_dev)) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* numRings must be a power of two and <= max rss chains allowed */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 1; pUM->devParams.numRings >> i; i++) { ; }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (pUM->devParams.numRings > LM_MAX_RSS_CHAINS(&pUM->lm_dev))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = LM_MAX_RSS_CHAINS(&pUM->lm_dev);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS]) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS]) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* threshold to enable double copy of receive packet */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* threshold to enable double copy of transmit packet */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rx_interrupt_coalesce_usec",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option = (option < USER_OPTION_INTR_COALESCE_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrRxPerSec = (1000000 / option); /* intrs per sec */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "tx_interrupt_coalesce_usec",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option = (option < USER_OPTION_INTR_COALESCE_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrTxPerSec = (1000000 / option); /* intrs per sec */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_AUTOGREEEN_NVRAM /* maybe enabled or disabled */ :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Only allow LSO if Tx TCP checksum is turned on. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!(pUM->devParams.enabled_oflds & LM_OFFLOAD_TX_TCP_CKSUM))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "link_remote_fault_detect",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SET_FLAGS(pUM->lm_dev.params.link.feature_config_flags,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ELINK_FEATURE_CONFIG_DISABLE_REMOTE_FAULT_DET);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Adjust the number of rx/tx descriptors if in multi-function mode. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!(pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] /=
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_BDS_MIN;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!(pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] /=
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_BDS_MIN;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the link status */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the link partner status */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the configuration from the configured hardware default */