Commit 26221331 authored by Piotr Marczak's avatar Piotr Marczak Committed by Jeff Kirsher

i40e: Fix for 10G ports LED not blinking

On some hardware LEDs would not blink after command 'ethtool -p {eth-port}'
in certain circumstances. Now, function does not care about the activity
of the LED (though still preserves its state) but forcibly executes
identification blinking and then restores the LED state.
Signed-off-by: default avatarPiotr Marczak <piotr.marczak@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent bf4bf09b
...@@ -1466,7 +1466,6 @@ static u32 i40e_led_is_mine(struct i40e_hw *hw, int idx) ...@@ -1466,7 +1466,6 @@ static u32 i40e_led_is_mine(struct i40e_hw *hw, int idx)
**/ **/
u32 i40e_led_get(struct i40e_hw *hw) u32 i40e_led_get(struct i40e_hw *hw)
{ {
u32 current_mode = 0;
u32 mode = 0; u32 mode = 0;
int i; int i;
...@@ -1479,21 +1478,6 @@ u32 i40e_led_get(struct i40e_hw *hw) ...@@ -1479,21 +1478,6 @@ u32 i40e_led_get(struct i40e_hw *hw)
if (!gpio_val) if (!gpio_val)
continue; continue;
/* ignore gpio LED src mode entries related to the activity
* LEDs
*/
current_mode = ((gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK)
>> I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT);
switch (current_mode) {
case I40E_COMBINED_ACTIVITY:
case I40E_FILTER_ACTIVITY:
case I40E_MAC_ACTIVITY:
case I40E_LINK_ACTIVITY:
continue;
default:
break;
}
mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK) >> mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK) >>
I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT; I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT;
break; break;
...@@ -1513,7 +1497,6 @@ u32 i40e_led_get(struct i40e_hw *hw) ...@@ -1513,7 +1497,6 @@ u32 i40e_led_get(struct i40e_hw *hw)
**/ **/
void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink) void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink)
{ {
u32 current_mode = 0;
int i; int i;
if (mode & 0xfffffff0) if (mode & 0xfffffff0)
...@@ -1527,22 +1510,6 @@ void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink) ...@@ -1527,22 +1510,6 @@ void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink)
if (!gpio_val) if (!gpio_val)
continue; continue;
/* ignore gpio LED src mode entries related to the activity
* LEDs
*/
current_mode = ((gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK)
>> I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT);
switch (current_mode) {
case I40E_COMBINED_ACTIVITY:
case I40E_FILTER_ACTIVITY:
case I40E_MAC_ACTIVITY:
case I40E_LINK_ACTIVITY:
continue;
default:
break;
}
gpio_val &= ~I40E_GLGEN_GPIO_CTL_LED_MODE_MASK; gpio_val &= ~I40E_GLGEN_GPIO_CTL_LED_MODE_MASK;
/* this & is a bit of paranoia, but serves as a range check */ /* this & is a bit of paranoia, but serves as a range check */
gpio_val |= ((mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) & gpio_val |= ((mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) &
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment