case ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_THERMAL_THRESHOLD: {
u32 type = EVENT_DATA1_THERMAL_THRESHOLD_TYPE(data1);
char *threshold_type;
+ bool notify = false;
char *dir_str;
switch (type) {
netdev_err(bp->dev, "Unknown Thermal threshold type event\n");
return false;
}
- if (EVENT_DATA1_THERMAL_THRESHOLD_DIR_INCREASING(data1))
+ if (EVENT_DATA1_THERMAL_THRESHOLD_DIR_INCREASING(data1)) {
dir_str = "above";
- else
+ notify = true;
+ } else {
dir_str = "below";
+ }
netdev_warn(bp->dev, "Chip temperature has gone %s the %s thermal threshold!\n",
dir_str, threshold_type);
netdev_warn(bp->dev, "Temperature (In Celsius), Current: %lu, threshold: %lu\n",
BNXT_EVENT_THERMAL_CURRENT_TEMP(data2),
BNXT_EVENT_THERMAL_THRESHOLD_TEMP(data2));
- bp->thermal_threshold_type = type;
- set_bit(BNXT_THERMAL_THRESHOLD_SP_EVENT, &bp->sp_event);
- return true;
+ if (notify) {
+ bp->thermal_threshold_type = type;
+ set_bit(BNXT_THERMAL_THRESHOLD_SP_EVENT, &bp->sp_event);
+ return true;
+ }
+ return false;
}
default:
netdev_err(bp->dev, "FW reported unknown error type %u\n",