|
@@ -3021,8 +3021,8 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
|
|
|
|
|
|
hw->mac.ops.config_collision_dist(hw);
|
|
|
|
|
|
- /* SPT and CNP Si errata workaround to avoid data corruption */
|
|
|
- if (hw->mac.type >= e1000_pch_spt) {
|
|
|
+ /* SPT and KBL Si errata workaround to avoid data corruption */
|
|
|
+ if (hw->mac.type == e1000_pch_spt) {
|
|
|
u32 reg_val;
|
|
|
|
|
|
reg_val = er32(IOSFPC);
|
|
@@ -3030,7 +3030,9 @@ static void e1000_configure_tx(struct e1000_adapter *adapter)
|
|
|
ew32(IOSFPC, reg_val);
|
|
|
|
|
|
reg_val = er32(TARC(0));
|
|
|
- reg_val |= E1000_TARC0_CB_MULTIQ_3_REQ;
|
|
|
+ /* SPT and KBL Si errata workaround to avoid Tx hang */
|
|
|
+ reg_val &= ~BIT(28);
|
|
|
+ reg_val |= BIT(29);
|
|
|
ew32(TARC(0), reg_val);
|
|
|
}
|
|
|
}
|