diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc.h | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 12 | 
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h index 266bfcf2a28f..a427f05814c1 100644 --- a/drivers/net/ethernet/intel/igc/igc.h +++ b/drivers/net/ethernet/intel/igc/igc.h @@ -345,6 +345,7 @@ struct igc_adapter {  	/* LEDs */  	struct mutex led_mutex;  	struct igc_led_classdev *leds; +	bool leds_available;  };  void igc_up(struct igc_adapter *adapter); diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index e79b14d50b24..728d7ca5338b 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -7335,8 +7335,14 @@ static int igc_probe(struct pci_dev *pdev,  	if (IS_ENABLED(CONFIG_IGC_LEDS)) {  		err = igc_led_setup(adapter); -		if (err) -			goto err_register; +		if (err) { +			netdev_warn_once(netdev, +					 "LED init failed (%d); continuing without LED support\n", +					 err); +			adapter->leds_available = false; +		} else { +			adapter->leds_available = true; +		}  	}  	return 0; @@ -7392,7 +7398,7 @@ static void igc_remove(struct pci_dev *pdev)  	cancel_work_sync(&adapter->watchdog_task);  	hrtimer_cancel(&adapter->hrtimer); -	if (IS_ENABLED(CONFIG_IGC_LEDS)) +	if (IS_ENABLED(CONFIG_IGC_LEDS) && adapter->leds_available)  		igc_led_free(adapter);  	/* Release control of h/w to f/w.  If f/w is AMT enabled, this  | 
