52 #define HAL_FWREV_ZERO (0)
53 #define HAL_FWREV_MAX UINT32_MAX
55 #define SLI4_ASIC_TYPE_ANY 0
56 #define SLI4_ASIC_REV_ANY 0
98 {
SLI4_ASIC_TYPE_SKYHAWK,
SLI4_ASIC_REV_ANY,
HAL_FWREV(10,0,0,0),
HAL_FWREV(10,1,0,0),
123 for (p = fwrev_string, i = 0; *p && (i < 4); i ++) {
124 v[i] = ocs_strtoul(p, 0, 0);
125 while(*p && *p !=
'.') {
137 return HAL_FWREV(v[0], v[1], v[2], v[3]);
180 if (hal->hal_war_version != NULL) {
187 for (i = 0, w= hal_workarounds; i < ARRAY_SIZE(hal_workarounds); i++, w++) {
192 ocs_log_debug(hal->os,
"Override: test: %d\n", w->
value);
197 ocs_log_debug(hal->os,
"Override: n_cq: decr by %d\n", w->
value);
198 hal->config.n_cq -= w->
value;
202 ocs_log_debug(hal->os,
"Override: Use version 1 of ISCSI_CLEANUP and TGT_OFFLOAD\n");
203 hal->use_v1_multi_protocol = w->
value;
207 ocs_log_debug(hal->os,
"Override: Force non-DIF for Skyhawk 10.0 FW\n");
212 ocs_log_debug(hal->os,
"HAL Workaround: fw version is below the minimum for this driver\n");
213 hal->workaround.fw_version_too_low = TRUE;
hal_workaround_e workaround
Internal workaround structure instance.
struct sli4_t::@37 features
static hal_workaround_t hal_workarounds[]
hal_workaround_e
Internal definition of workarounds.
sli4_asic_type_e asic_type
#define SLI4_ASIC_REV_ANY
#define SLI4_ASIC_TYPE_ANY
static int32_t ocs_hal_workaround_match(ocs_hal_t *hal, hal_workaround_t *w)
Test for a workaround match.
sli4_asic_type_e asic_type
void ocs_hal_workaround_setup(struct ocs_hal_s *hal)
Setup HAL runtime workarounds.
struct sli4_t::@38 config
static uint32_t parse_fw_version(const char *fwrev_string)
Parse the firmware version (name)
ocs_hal_workaround_t workaround
#define HAL_FWREV(a, b, c, d)
pack fw revision values into a single uint32_t