diff options
author | Yuval Mintz | 2012-12-02 05:05:50 +0100 |
---|---|---|
committer | David S. Miller | 2012-12-03 02:22:59 +0100 |
commit | 7964211d3891d0271c5fc8087cd49c018b30476d (patch) | |
tree | 5ad794185d65be12b12e2a28b2229901dea0e8d6 /drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | |
parent | bnx2x: Correct advertised speed/duplex (diff) | |
download | kernel-qcow2-linux-7964211d3891d0271c5fc8087cd49c018b30476d.tar.gz kernel-qcow2-linux-7964211d3891d0271c5fc8087cd49c018b30476d.tar.xz kernel-qcow2-linux-7964211d3891d0271c5fc8087cd49c018b30476d.zip |
bnx2x: nvram enables dropless flow control
It is now possible to enable dropless flow control via nvram.
Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 62fcf0f0e72a..89b3d10e1575 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -10641,8 +10641,26 @@ static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp) "bad Ethernet MAC address configuration: %pM\n" "change it manually before bringing up the appropriate network interface\n", bp->dev->dev_addr); +} +static bool __devinit bnx2x_get_dropless_info(struct bnx2x *bp) +{ + int tmp; + u32 cfg; + if (IS_MF(bp) && !CHIP_IS_E1x(bp)) { + /* Take function: tmp = func */ + tmp = BP_ABS_FUNC(bp); + cfg = MF_CFG_RD(bp, func_ext_config[tmp].func_cfg); + cfg = !!(cfg & MACP_FUNC_CFG_PAUSE_ON_HOST_RING); + } else { + /* Take port: tmp = port */ + tmp = BP_PORT(bp); + cfg = SHMEM_RD(bp, + dev_info.port_hw_config[tmp].generic_features); + cfg = !!(cfg & PORT_HW_CFG_PAUSE_ON_HOST_RING_ENABLED); + } + return cfg; } static int __devinit bnx2x_get_hwinfo(struct bnx2x *bp) @@ -11063,7 +11081,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp) if (CHIP_IS_E1(bp)) bp->dropless_fc = 0; else - bp->dropless_fc = dropless_fc; + bp->dropless_fc = dropless_fc | bnx2x_get_dropless_info(bp); bp->mrrs = mrrs; |