|
@@ -53,17 +53,21 @@ static int rq3_entries = EHEA_DEF_ENTRIES_RQ3;
|
|
|
static int sq_entries = EHEA_DEF_ENTRIES_SQ;
|
|
|
static int use_mcs = 0;
|
|
|
static int num_tx_qps = EHEA_NUM_TX_QP;
|
|
|
+static int prop_carrier_state = 0;
|
|
|
|
|
|
module_param(msg_level, int, 0);
|
|
|
module_param(rq1_entries, int, 0);
|
|
|
module_param(rq2_entries, int, 0);
|
|
|
module_param(rq3_entries, int, 0);
|
|
|
module_param(sq_entries, int, 0);
|
|
|
+module_param(prop_carrier_state, int, 0);
|
|
|
module_param(use_mcs, int, 0);
|
|
|
module_param(num_tx_qps, int, 0);
|
|
|
|
|
|
MODULE_PARM_DESC(num_tx_qps, "Number of TX-QPS");
|
|
|
MODULE_PARM_DESC(msg_level, "msg_level");
|
|
|
+MODULE_PARM_DESC(prop_carrier_state, "Propagate carrier state of physical "
|
|
|
+ "port to stack. 1:yes, 0:no. Default = 0 ");
|
|
|
MODULE_PARM_DESC(rq3_entries, "Number of entries for Receive Queue 3 "
|
|
|
"[2^x - 1], x = [6..14]. Default = "
|
|
|
__MODULE_STRING(EHEA_DEF_ENTRIES_RQ3) ")");
|
|
@@ -814,7 +818,9 @@ int ehea_set_portspeed(struct ehea_port *port, u32 port_speed)
|
|
|
ehea_error("Failed setting port speed");
|
|
|
}
|
|
|
}
|
|
|
- netif_carrier_on(port->netdev);
|
|
|
+ if (!prop_carrier_state || (port->phy_link == EHEA_PHY_LINK_UP))
|
|
|
+ netif_carrier_on(port->netdev);
|
|
|
+
|
|
|
kfree(cb4);
|
|
|
out:
|
|
|
return ret;
|
|
@@ -869,13 +875,19 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe)
|
|
|
}
|
|
|
|
|
|
if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PORT_UP, eqe)) {
|
|
|
+ port->phy_link = EHEA_PHY_LINK_UP;
|
|
|
if (netif_msg_link(port))
|
|
|
ehea_info("%s: Physical port up",
|
|
|
port->netdev->name);
|
|
|
+ if (prop_carrier_state)
|
|
|
+ netif_carrier_on(port->netdev);
|
|
|
} else {
|
|
|
+ port->phy_link = EHEA_PHY_LINK_DOWN;
|
|
|
if (netif_msg_link(port))
|
|
|
ehea_info("%s: Physical port down",
|
|
|
port->netdev->name);
|
|
|
+ if (prop_carrier_state)
|
|
|
+ netif_carrier_off(port->netdev);
|
|
|
}
|
|
|
|
|
|
if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PRIMARY, eqe))
|