|
@@ -1015,7 +1015,7 @@ static s32 e1000_platform_pm_pch_lpt(struct e1000_hw *hw, bool link)
|
|
|
u16 max_snoop, max_nosnoop;
|
|
|
u16 max_ltr_enc; /* max LTR latency encoded */
|
|
|
s64 lat_ns; /* latency (ns) */
|
|
|
- s64 value;
|
|
|
+ u64 value;
|
|
|
u32 rxa;
|
|
|
|
|
|
if (!hw->adapter->max_frame_size) {
|
|
@@ -1042,12 +1042,13 @@ static s32 e1000_platform_pm_pch_lpt(struct e1000_hw *hw, bool link)
|
|
|
*/
|
|
|
lat_ns = ((s64)rxa * 1024 -
|
|
|
(2 * (s64)hw->adapter->max_frame_size)) * 8 * 1000;
|
|
|
- if (lat_ns < 0)
|
|
|
- lat_ns = 0;
|
|
|
- else
|
|
|
- do_div(lat_ns, speed);
|
|
|
+ if (lat_ns < 0) {
|
|
|
+ value = 0;
|
|
|
+ } else {
|
|
|
+ value = lat_ns;
|
|
|
+ do_div(value, speed);
|
|
|
+ }
|
|
|
|
|
|
- value = lat_ns;
|
|
|
while (value > PCI_LTR_VALUE_MASK) {
|
|
|
scale++;
|
|
|
value = DIV_ROUND_UP(value, (1 << 5));
|