d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER START
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
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 *
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 *
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 *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER END
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*
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 *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the License at
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic_End_User_Software_License.txt
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "bnxe.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* these are the default phy link configs */
d14abf155341d55053c76eeec58b787a456b753bRobert MustacchiBnxeLinkCfg bnxeLinkCfg =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* link_autoneg */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* param_20000fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* param_10000fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* param_2500fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* param_1000fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE, /* param_100fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE, /* param_100hdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE, /* param_10fdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE, /* param_10hdx */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE, /* param_txpause */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE /* param_rxpause */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic void BnxeCfgGetVal(um_device_t * pUM,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char * pName,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi void * pVal,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi int defaultVal,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi boolean_t boolVal)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi int val;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define BNXE_CFG_NAME_LEN_MAX 128
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char name[BNXE_CFG_NAME_LEN_MAX];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* first check if the hardcoded default has been overridden */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, BNXE_CFG_NAME_LEN_MAX, "default_%s", pName);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi val = ddi_prop_get_int(DDI_DEV_T_ANY,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->pDev,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (DDI_PROP_NOTPROM | DDI_PROP_DONTPASS),
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi name,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi defaultVal);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* now check for a config for this specific instance */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, BNXE_CFG_NAME_LEN_MAX, "bnxe%d_%s", pUM->instance, pName);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi val = ddi_prop_get_int(DDI_DEV_T_ANY,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->pDev,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (DDI_PROP_NOTPROM | DDI_PROP_DONTPASS),
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi name,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi val);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (boolVal)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *((boolean_t *)pVal) = (val) ? B_TRUE : B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi else
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *((int *)pVal) = val;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchivoid BnxeCfg_LLDP_DCBX(um_device_t * pUM)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi lm_device_t * pLM = &pUM->lm_dev;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char name[64];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi int i;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* DCBX defaults configuration: DCBX not supported by default. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.dcbx_enabled = FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* DCBX defaults configuration: PFC not supported. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.pfc.enabled = FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < LLFC_DRIVER_TRAFFIC_TYPE_MAX; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.app.traffic_type_priority[i] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi INVALID_TRAFFIC_TYPE_PRIORITY;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_port_params.pfc.priority_non_pauseable_mask = 0;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi memset(&pLM->params.lldp_config_params, 0xFF,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi sizeof(pLM->params.lldp_config_params));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi memset(&pLM->params.dcbx_config_params, 0xFF,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi sizeof(pLM->params.dcbx_config_params));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.dcb_enable = 1;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.admin_dcbx_enable = 1;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_msg_tx_hold",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_tx_hold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_tx_hold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_msg_fast_tx",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_fast_tx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_fast_tx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_tx_credit_max",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.tx_credit_max,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.tx_credit_max,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_msg_tx_interval",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.msg_tx_interval,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.msg_tx_interval,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lldp_tx_fast",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.lldp_config_params.tx_fast,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.lldp_config_params.tx_fast,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "dcbx_dcb_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pLM->params.dcbx_config_params.dcb_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pLM->params.dcbx_config_params.dcb_enable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_configuration_bw_percentage_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_configuration_ets_pg_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_recommendation_bw_percentage_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 8; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_recommendation_ets_pg_%d", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi for (i = 0; i < 4; i++)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_valid", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_priority", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_traffic_type", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi snprintf(name, sizeof(name), "dcbx_admin_priority_app_table_%d_app_id", i);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, name,
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchivoid BnxeCfgInit(um_device_t * pUM)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi int option, i;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* set the defaults */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi bcopy(&bnxeLinkCfg, &pUM->hwinit.lnkcfg, sizeof(BnxeLinkCfg));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.flow_autoneg = B_TRUE;
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.intrCoalesce = B_TRUE;
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.disableMsix = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.l2_fw_flow_ctrl = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.autogreeenEnable = B_TRUE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.lsoEnable = B_TRUE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.logEnable = B_TRUE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.routeTxRingPolicy = BNXE_ROUTE_RING_TCPUDP;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.fcoeEnable = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.linkRemoteFaultDetect = B_TRUE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* set the LLDP/DCBX defaults and get settings from bnxe.conf */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfg_LLDP_DCBX(pUM);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* override the defaults based on what is set in bnxe.conf */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_autoneg_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.link_autoneg,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.link_autoneg,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_20000fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_20000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_20000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_10000fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_10000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_10000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_2500fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_2500fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_2500fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_1000fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_1000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_1000fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_100fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_100fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_100fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_100hdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_100hdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_100hdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_10fdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_10fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_10fdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "adv_10hdx_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_10hdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_10hdx,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "txpause_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_txpause,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_txpause,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rxpause_cap",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.lnkcfg.param_rxpause,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.lnkcfg.param_rxpause,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "autoneg_flow",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->hwinit.flow_autoneg,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->hwinit.flow_autoneg,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "checksum",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.checksum,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.checksum,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi switch (pUM->devParams.checksum)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi case USER_OPTION_CKSUM_L3:
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = (LM_OFFLOAD_TX_IP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_RX_IP_CKSUM);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi break;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi case USER_OPTION_CKSUM_L3_L4:
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = (LM_OFFLOAD_TX_IP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_RX_IP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_TX_TCP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_RX_TCP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_TX_UDP_CKSUM |
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_OFFLOAD_RX_UDP_CKSUM);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi break;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi case USER_OPTION_CKSUM_NONE:
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi default:
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.enabled_oflds = LM_OFFLOAD_NONE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi break;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "mtu",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.mtu[LM_CLI_IDX_NDIS],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.mtu[LM_CLI_IDX_NDIS] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < USER_OPTION_MTU_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_MTU_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_MTU_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_MTU_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_NDIS] = pUM->devParams.mtu[LM_CLI_IDX_NDIS];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu_max = (pUM->lm_dev.params.mtu[LM_CLI_IDX_NDIS] >
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_FCOE]) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_NDIS] :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.mtu[LM_CLI_IDX_FCOE];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "route_tx_ring_policy",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.routeTxRingPolicy,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.routeTxRingPolicy,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
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 {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.routeTxRingPolicy = BNXE_ROUTE_RING_TCPUDP;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "num_rings",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = (option < USER_OPTION_NUM_RINGS_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_NUM_RINGS_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_NUM_RINGS_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_NUM_RINGS_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* adjust for function mode defaults */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (pUM->devParams.numRings == USER_OPTION_NUM_RINGS_DEFAULT)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = (IS_MULTI_VNIC(&pUM->lm_dev)) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_NUM_RINGS_DEFAULT_MF :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_NUM_RINGS_DEFAULT_SF;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 pUM->devParams.numRings = (1 << (i - 1));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (pUM->devParams.numRings > LM_MAX_RSS_CHAINS(&pUM->lm_dev))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRings = LM_MAX_RSS_CHAINS(&pUM->lm_dev);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rx_descs",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < USER_OPTION_BDS_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_BDS_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_BDS_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_BDS_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "tx_descs",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS],
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < USER_OPTION_BDS_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_BDS_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_BDS_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_BDS_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rx_free_reclaim",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxRxFree,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxRxFree =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < 0) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi 0 :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS]) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "tx_free_reclaim",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxTxFree,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.maxTxFree =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < 0) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi 0 :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS]) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* threshold to enable double copy of receive packet */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rx_copy_threshold",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.rxCopyThreshold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.rxCopyThreshold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* threshold to enable double copy of transmit packet */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "tx_copy_threshold",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.txCopyThreshold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.txCopyThreshold,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "interrupt_coalesce",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.intrCoalesce,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrCoalesce,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "rx_interrupt_coalesce_usec",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrRxPerSec,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option = (option < USER_OPTION_INTR_COALESCE_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_INTR_COALESCE_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_INTR_COALESCE_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_INTR_COALESCE_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrRxPerSec = (1000000 / option); /* intrs per sec */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "tx_interrupt_coalesce_usec",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrTxPerSec,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option = (option < USER_OPTION_INTR_COALESCE_MIN) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_INTR_COALESCE_MIN :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option > USER_OPTION_INTR_COALESCE_MAX) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_INTR_COALESCE_MAX :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.intrTxPerSec = (1000000 / option); /* intrs per sec */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "disable_msix",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.disableMsix,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.disableMsix,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "l2_fw_flow_ctrl",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.l2_fw_flow_ctrl,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.l2_fw_flow_ctrl,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "autogreeen_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.autogreeenEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.autogreeenEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->lm_dev.params.autogreeen =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (pUM->devParams.autogreeenEnable) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_AUTOGREEEN_NVRAM /* maybe enabled or disabled */ :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi LM_AUTOGREEEN_DISABLED;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "lso_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.lsoEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.lsoEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
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 {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.lsoEnable = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "log_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.logEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.logEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "fcoe_enable",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.fcoeEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.fcoeEnable,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "link_remote_fault_detect",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &pUM->devParams.linkRemoteFaultDetect,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.linkRemoteFaultDetect,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_TRUE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!pUM->devParams.linkRemoteFaultDetect)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SET_FLAGS(pUM->lm_dev.params.link.feature_config_flags,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ELINK_FEATURE_CONFIG_DISABLE_REMOTE_FAULT_DET);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi BnxeCfgGetVal(pUM, "debug_level",
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi &option,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.debug_level,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi B_FALSE);
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.debug_level =
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (option < 0) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi 0 :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ((uint32_t)option > (CP_ALL | LV_MASK)) ?
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (CP_ALL | LV_MASK) :
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (uint32_t)option;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Adjust the number of rx/tx descriptors if in multi-function mode. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (IS_MULTI_VNIC(&pUM->lm_dev))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!(pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] /=
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_MF_BDS_DIVISOR))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numRxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_BDS_MIN;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi if (!(pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] /=
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi USER_OPTION_MF_BDS_DIVISOR))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->devParams.numTxDesc[LM_CLI_IDX_NDIS] = USER_OPTION_BDS_MIN;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchivoid BnxeCfgReset(um_device_t * pUM)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the link status */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->props.link_speed = 0;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->props.link_duplex = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->props.link_txpause = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->props.link_rxpause = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the link partner status */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.link_autoneg = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_20000fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_10000fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_2500fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_1000fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_100fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_100hdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_10fdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_10hdx = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_txpause = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi pUM->remote.param_rxpause = B_FALSE;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* reset the configuration from the configured hardware default */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi bcopy(&pUM->hwinit, &pUM->curcfg, sizeof(BnxePhyCfg));
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi