mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-19 12:00:00 +00:00
igc: Add flow control support
This change adds flow control settings. This is required to enable the legacy flow control support. Signed-off-by: Sasha Neftin <sasha.neftin@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
d17ba0f616
commit
0373ad4d05
@ -66,6 +66,9 @@
|
||||
|
||||
#define IGC_CONNSW_AUTOSENSE_EN 0x1
|
||||
|
||||
/* As per the EAS the maximum supported size is 9.5KB (9728 bytes) */
|
||||
#define MAX_JUMBO_FRAME_SIZE 0x2600
|
||||
|
||||
/* PBA constants */
|
||||
#define IGC_PBA_34K 0x0022
|
||||
|
||||
|
@ -72,6 +72,27 @@ void igc_reset(struct igc_adapter *adapter)
|
||||
{
|
||||
struct pci_dev *pdev = adapter->pdev;
|
||||
struct igc_hw *hw = &adapter->hw;
|
||||
struct igc_fc_info *fc = &hw->fc;
|
||||
u32 pba, hwm;
|
||||
|
||||
/* Repartition PBA for greater than 9k MTU if required */
|
||||
pba = IGC_PBA_34K;
|
||||
|
||||
/* flow control settings
|
||||
* The high water mark must be low enough to fit one full frame
|
||||
* after transmitting the pause frame. As such we must have enough
|
||||
* space to allow for us to complete our current transmit and then
|
||||
* receive the frame that is in progress from the link partner.
|
||||
* Set it to:
|
||||
* - the full Rx FIFO size minus one full Tx plus one full Rx frame
|
||||
*/
|
||||
hwm = (pba << 10) - (adapter->max_frame_size + MAX_JUMBO_FRAME_SIZE);
|
||||
|
||||
fc->high_water = hwm & 0xFFFFFFF0; /* 16-byte granularity */
|
||||
fc->low_water = fc->high_water - 16;
|
||||
fc->pause_time = 0xFFFF;
|
||||
fc->send_xon = 1;
|
||||
fc->current_mode = fc->requested_mode;
|
||||
|
||||
hw->mac.ops.reset_hw(hw);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user