Page MenuHomeFreeBSD

D32131.diff
No OneTemporary

D32131.diff

diff --git a/sys/dev/ixgbe/if_bypass.c b/sys/dev/ixgbe/if_bypass.c
--- a/sys/dev/ixgbe/if_bypass.c
+++ b/sys/dev/ixgbe/if_bypass.c
@@ -43,11 +43,11 @@
* over other threads.
************************************************************************/
static void
-ixgbe_bypass_mutex_enter(struct adapter *adapter)
+ixgbe_bypass_mutex_enter(struct ixgbe_softc *sc)
{
- while (atomic_cmpset_int(&adapter->bypass.low, 0, 1) == 0)
+ while (atomic_cmpset_int(&sc->bypass.low, 0, 1) == 0)
usec_delay(3000);
- while (atomic_cmpset_int(&adapter->bypass.high, 0, 1) == 0)
+ while (atomic_cmpset_int(&sc->bypass.high, 0, 1) == 0)
usec_delay(3000);
return;
} /* ixgbe_bypass_mutex_enter */
@@ -56,11 +56,11 @@
* ixgbe_bypass_mutex_clear
************************************************************************/
static void
-ixgbe_bypass_mutex_clear(struct adapter *adapter)
+ixgbe_bypass_mutex_clear(struct ixgbe_softc *sc)
{
- while (atomic_cmpset_int(&adapter->bypass.high, 1, 0) == 0)
+ while (atomic_cmpset_int(&sc->bypass.high, 1, 0) == 0)
usec_delay(6000);
- while (atomic_cmpset_int(&adapter->bypass.low, 1, 0) == 0)
+ while (atomic_cmpset_int(&sc->bypass.low, 1, 0) == 0)
usec_delay(6000);
return;
} /* ixgbe_bypass_mutex_clear */
@@ -71,9 +71,9 @@
* Watchdog entry is allowed to simply grab the high priority
************************************************************************/
static void
-ixgbe_bypass_wd_mutex_enter(struct adapter *adapter)
+ixgbe_bypass_wd_mutex_enter(struct ixgbe_softc *sc)
{
- while (atomic_cmpset_int(&adapter->bypass.high, 0, 1) == 0)
+ while (atomic_cmpset_int(&sc->bypass.high, 0, 1) == 0)
usec_delay(3000);
return;
} /* ixgbe_bypass_wd_mutex_enter */
@@ -82,9 +82,9 @@
* ixgbe_bypass_wd_mutex_clear
************************************************************************/
static void
-ixgbe_bypass_wd_mutex_clear(struct adapter *adapter)
+ixgbe_bypass_wd_mutex_clear(struct ixgbe_softc *sc)
{
- while (atomic_cmpset_int(&adapter->bypass.high, 1, 0) == 0)
+ while (atomic_cmpset_int(&sc->bypass.high, 1, 0) == 0)
usec_delay(6000);
return;
} /* ixgbe_bypass_wd_mutex_clear */
@@ -115,13 +115,13 @@
static int
ixgbe_bp_version(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int version = 0;
u32 cmd;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
cmd = BYPASS_PAGE_CTL2 | BYPASS_WE;
cmd |= (BYPASS_EEPROM_VER_ADD << BYPASS_CTL2_OFFSET_SHIFT) &
BYPASS_CTL2_OFFSET_M;
@@ -131,12 +131,12 @@
cmd &= ~BYPASS_WE;
if ((error = hw->mac.ops.bypass_rw(hw, cmd, &version) != 0))
goto err;
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
version &= BYPASS_CTL2_DATA_M;
error = sysctl_handle_int(oidp, &version, 0, req);
return (error);
err:
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
return (error);
} /* ixgbe_bp_version */
@@ -155,16 +155,16 @@
static int
ixgbe_bp_set_state(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int state = 0;
/* Get the current state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw,
BYPASS_PAGE_CTL0, &state);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error != 0)
return (error);
state = (state >> BYPASS_STATUS_OFF_SHIFT) & 0x3;
@@ -182,7 +182,7 @@
default:
return (EINVAL);
}
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
if ((error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_MODE_OFF_M, state) != 0))
goto out;
@@ -190,7 +190,7 @@
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_MODE_OFF_M, BYPASS_AUTO);
out:
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_set_state */
@@ -217,15 +217,15 @@
static int
ixgbe_bp_timeout(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int timeout = 0;
/* Get the current value */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &timeout);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
timeout = (timeout >> BYPASS_WDTIMEOUT_SHIFT) & 0x3;
@@ -246,10 +246,10 @@
}
/* Set the new state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_WDTIMEOUT_M, timeout << BYPASS_WDTIMEOUT_SHIFT);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_timeout */
@@ -260,15 +260,15 @@
static int
ixgbe_bp_main_on(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int main_on = 0;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &main_on);
main_on = (main_on >> BYPASS_MAIN_ON_SHIFT) & 0x3;
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
@@ -288,10 +288,10 @@
}
/* Set the new state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_MAIN_ON_M, main_on << BYPASS_MAIN_ON_SHIFT);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_main_on */
@@ -302,14 +302,14 @@
static int
ixgbe_bp_main_off(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int main_off = 0;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &main_off);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
main_off = (main_off >> BYPASS_MAIN_OFF_SHIFT) & 0x3;
@@ -330,10 +330,10 @@
}
/* Set the new state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_MAIN_OFF_M, main_off << BYPASS_MAIN_OFF_SHIFT);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_main_off */
@@ -344,14 +344,14 @@
static int
ixgbe_bp_aux_on(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int aux_on = 0;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &aux_on);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
aux_on = (aux_on >> BYPASS_AUX_ON_SHIFT) & 0x3;
@@ -372,10 +372,10 @@
}
/* Set the new state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_AUX_ON_M, aux_on << BYPASS_AUX_ON_SHIFT);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_aux_on */
@@ -386,14 +386,14 @@
static int
ixgbe_bp_aux_off(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
static int aux_off = 0;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &aux_off);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
aux_off = (aux_off >> BYPASS_AUX_OFF_SHIFT) & 0x3;
@@ -414,10 +414,10 @@
}
/* Set the new state */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0,
BYPASS_AUX_OFF_M, aux_off << BYPASS_AUX_OFF_SHIFT);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
usec_delay(6000);
return (error);
} /* ixgbe_bp_aux_off */
@@ -433,16 +433,16 @@
static int
ixgbe_bp_wd_set(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int error, tmp;
static int timeout = 0;
u32 mask, arg;
/* Get the current hardware value */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, BYPASS_PAGE_CTL0, &tmp);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (error);
/*
@@ -489,9 +489,9 @@
}
/* Set the new watchdog */
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL0, mask, arg);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
return (error);
} /* ixgbe_bp_wd_set */
@@ -504,8 +504,8 @@
static int
ixgbe_bp_wd_reset(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
u32 sec, year;
int cmd, count = 0, error = 0;
int reset_wd = 0;
@@ -522,7 +522,7 @@
cmd |= (sec & BYPASS_CTL1_TIME_M) | BYPASS_CTL1_VALID;
cmd |= BYPASS_CTL1_OFFTRST;
- ixgbe_bypass_wd_mutex_enter(adapter);
+ ixgbe_bypass_wd_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, cmd, &reset_wd);
/* Read until it matches what we wrote, or we time out */
@@ -539,7 +539,7 @@
} while (!hw->mac.ops.bypass_valid_rd(cmd, reset_wd));
reset_wd = 0;
- ixgbe_bypass_wd_mutex_clear(adapter);
+ ixgbe_bypass_wd_mutex_clear(sc);
return (error);
} /* ixgbe_bp_wd_reset */
@@ -551,8 +551,8 @@
static int
ixgbe_bp_log(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *) arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *) arg1;
+ struct ixgbe_hw *hw = &sc->hw;
u32 cmd, base, head;
u32 log_off, count = 0;
static int status = 0;
@@ -565,10 +565,10 @@
return (error);
/* Keep the log display single-threaded */
- while (atomic_cmpset_int(&adapter->bypass.log, 0, 1) == 0)
+ while (atomic_cmpset_int(&sc->bypass.log, 0, 1) == 0)
usec_delay(3000);
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
/* Find Current head of the log eeprom offset */
cmd = BYPASS_PAGE_CTL2 | BYPASS_WE;
@@ -586,7 +586,7 @@
if (error)
goto unlock_err;
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
base = status & BYPASS_CTL2_DATA_M;
head = (status & BYPASS_CTL2_HEAD_M) >> BYPASS_CTL2_HEAD_SHIFT;
@@ -601,19 +601,19 @@
/* Log 5 bytes store in on u32 and a u8 */
for (i = 0; i < 4; i++) {
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rd_eep(hw, log_off + i,
&data);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (EINVAL);
eeprom[count].logs += data << (8 * i);
}
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rd_eep(hw,
log_off + i, &eeprom[count].actions);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (EINVAL);
@@ -668,7 +668,7 @@
time %= (60 * 60);
min = time / 60;
sec = time % 60;
- device_printf(adapter->dev,
+ device_printf(sc->dev,
"UT %02d/%02d %02d:%02d:%02d %8.8s -> %7.7s\n",
mon, days, hours, min, sec, event_str[event],
action_str[action]);
@@ -677,14 +677,14 @@
<< BYPASS_CTL2_OFFSET_SHIFT) & BYPASS_CTL2_OFFSET_M;
cmd |= ((eeprom[count].logs & ~BYPASS_LOG_CLEAR_M) >> 24);
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
error = hw->mac.ops.bypass_rw(hw, cmd, &status);
/* wait for the write to stick */
msec_delay(100);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
if (error)
return (EINVAL);
@@ -692,14 +692,14 @@
status = 0; /* reset */
/* Another log command can now run */
- while (atomic_cmpset_int(&adapter->bypass.log, 1, 0) == 0)
+ while (atomic_cmpset_int(&sc->bypass.log, 1, 0) == 0)
usec_delay(3000);
return (error);
unlock_err:
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
status = 0; /* reset */
- while (atomic_cmpset_int(&adapter->bypass.log, 1, 0) == 0)
+ while (atomic_cmpset_int(&sc->bypass.log, 1, 0) == 0)
usec_delay(3000);
return (EINVAL);
} /* ixgbe_bp_log */
@@ -711,15 +711,15 @@
* only enabled for the first port of a bypass adapter.
************************************************************************/
void
-ixgbe_bypass_init(struct adapter *adapter)
+ixgbe_bypass_init(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
- device_t dev = adapter->dev;
+ struct ixgbe_hw *hw = &sc->hw;
+ device_t dev = sc->dev;
struct sysctl_oid *bp_node;
struct sysctl_oid_list *bp_list;
u32 mask, value, sec, year;
- if (!(adapter->feat_cap & IXGBE_FEATURE_BYPASS))
+ if (!(sc->feat_cap & IXGBE_FEATURE_BYPASS))
return;
/* First set up time for the hardware */
@@ -733,9 +733,9 @@
| BYPASS_CTL1_VALID
| BYPASS_CTL1_OFFTRST;
- ixgbe_bypass_mutex_enter(adapter);
+ ixgbe_bypass_mutex_enter(sc);
hw->mac.ops.bypass_set(hw, BYPASS_PAGE_CTL1, mask, value);
- ixgbe_bypass_mutex_clear(adapter);
+ ixgbe_bypass_mutex_clear(sc);
/* Now set up the SYSCTL infrastructure */
@@ -748,7 +748,7 @@
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
OID_AUTO, "bypass_log",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_log, "I", "Bypass Log");
+ sc, 0, ixgbe_bp_log, "I", "Bypass Log");
/* All other setting are hung from the 'bypass' node */
bp_node = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev),
@@ -759,40 +759,40 @@
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "version", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_version, "I", "Bypass Version");
+ sc, 0, ixgbe_bp_version, "I", "Bypass Version");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "state", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_set_state, "I", "Bypass State");
+ sc, 0, ixgbe_bp_set_state, "I", "Bypass State");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "timeout", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_timeout, "I", "Bypass Timeout");
+ sc, 0, ixgbe_bp_timeout, "I", "Bypass Timeout");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "main_on", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_main_on, "I", "Bypass Main On");
+ sc, 0, ixgbe_bp_main_on, "I", "Bypass Main On");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "main_off", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_main_off, "I", "Bypass Main Off");
+ sc, 0, ixgbe_bp_main_off, "I", "Bypass Main Off");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "aux_on", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_aux_on, "I", "Bypass Aux On");
+ sc, 0, ixgbe_bp_aux_on, "I", "Bypass Aux On");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "aux_off", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_aux_off, "I", "Bypass Aux Off");
+ sc, 0, ixgbe_bp_aux_off, "I", "Bypass Aux Off");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "wd_set", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_wd_set, "I", "Set BP Watchdog");
+ sc, 0, ixgbe_bp_wd_set, "I", "Set BP Watchdog");
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list,
OID_AUTO, "wd_reset", CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_bp_wd_reset, "S", "Bypass WD Reset");
+ sc, 0, ixgbe_bp_wd_reset, "S", "Bypass WD Reset");
- adapter->feat_en |= IXGBE_FEATURE_BYPASS;
+ sc->feat_en |= IXGBE_FEATURE_BYPASS;
} /* ixgbe_bypass_init */
diff --git a/sys/dev/ixgbe/if_fdir.c b/sys/dev/ixgbe/if_fdir.c
--- a/sys/dev/ixgbe/if_fdir.c
+++ b/sys/dev/ixgbe/if_fdir.c
@@ -37,33 +37,33 @@
#ifdef IXGBE_FDIR
void
-ixgbe_init_fdir(struct adapter *adapter)
+ixgbe_init_fdir(struct ixgbe_softc *sc)
{
u32 hdrm = 32 << fdir_pballoc;
- if (!(adapter->feat_en & IXGBE_FEATURE_FDIR))
+ if (!(sc->feat_en & IXGBE_FEATURE_FDIR))
return;
- adapter->hw.mac.ops.setup_rxpba(&adapter->hw, 0, hdrm,
+ sc->hw.mac.ops.setup_rxpba(&sc->hw, 0, hdrm,
PBA_STRATEGY_EQUAL);
- ixgbe_init_fdir_signature_82599(&adapter->hw, fdir_pballoc);
+ ixgbe_init_fdir_signature_82599(&sc->hw, fdir_pballoc);
} /* ixgbe_init_fdir */
void
ixgbe_reinit_fdir(void *context)
{
if_ctx_t ctx = context;
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
- if (!(adapter->feat_en & IXGBE_FEATURE_FDIR))
+ if (!(sc->feat_en & IXGBE_FEATURE_FDIR))
return;
- if (adapter->fdir_reinit != 1) /* Shouldn't happen */
+ if (sc->fdir_reinit != 1) /* Shouldn't happen */
return;
- ixgbe_reinit_fdir_tables_82599(&adapter->hw);
- adapter->fdir_reinit = 0;
+ ixgbe_reinit_fdir_tables_82599(&sc->hw);
+ sc->fdir_reinit = 0;
/* re-enable flow director interrupts */
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, IXGBE_EIMS_FLOW_DIR);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIMS, IXGBE_EIMS_FLOW_DIR);
/* Restart the interface */
ifp->if_drv_flags |= IFF_DRV_RUNNING;
} /* ixgbe_reinit_fdir */
@@ -80,7 +80,7 @@
void
ixgbe_atr(struct tx_ring *txr, struct mbuf *mp)
{
- struct adapter *adapter = txr->adapter;
+ struct ixgbe_softc *sc = txr->sc;
struct ix_queue *que;
struct ip *ip;
struct tcphdr *th;
@@ -134,12 +134,12 @@
common.flex_bytes ^= etype;
common.ip ^= ip->ip_src.s_addr ^ ip->ip_dst.s_addr;
- que = &adapter->queues[txr->me];
+ que = &sc->queues[txr->me];
/*
* This assumes the Rx queue and Tx
* queue are bound to the same CPU
*/
- ixgbe_fdir_add_signature_filter_82599(&adapter->hw,
+ ixgbe_fdir_add_signature_filter_82599(&sc->hw,
input, common, que->msix);
} /* ixgbe_atr */
diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -109,87 +109,82 @@
PVID_END
};
-static void *ixgbe_register(device_t dev);
-static int ixgbe_if_attach_pre(if_ctx_t ctx);
-static int ixgbe_if_attach_post(if_ctx_t ctx);
-static int ixgbe_if_detach(if_ctx_t ctx);
-static int ixgbe_if_shutdown(if_ctx_t ctx);
-static int ixgbe_if_suspend(if_ctx_t ctx);
-static int ixgbe_if_resume(if_ctx_t ctx);
-
-static void ixgbe_if_stop(if_ctx_t ctx);
-void ixgbe_if_enable_intr(if_ctx_t ctx);
-static void ixgbe_if_disable_intr(if_ctx_t ctx);
-static void ixgbe_link_intr_enable(if_ctx_t ctx);
-static int ixgbe_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t qid);
-static void ixgbe_if_media_status(if_ctx_t ctx, struct ifmediareq * ifmr);
-static int ixgbe_if_media_change(if_ctx_t ctx);
+static void *ixgbe_register(device_t);
+static int ixgbe_if_attach_pre(if_ctx_t);
+static int ixgbe_if_attach_post(if_ctx_t);
+static int ixgbe_if_detach(if_ctx_t);
+static int ixgbe_if_shutdown(if_ctx_t);
+static int ixgbe_if_suspend(if_ctx_t);
+static int ixgbe_if_resume(if_ctx_t);
+
+static void ixgbe_if_stop(if_ctx_t);
+void ixgbe_if_enable_intr(if_ctx_t);
+static void ixgbe_if_disable_intr(if_ctx_t);
+static void ixgbe_link_intr_enable(if_ctx_t);
+static int ixgbe_if_rx_queue_intr_enable(if_ctx_t, uint16_t);
+static void ixgbe_if_media_status(if_ctx_t, struct ifmediareq *);
+static int ixgbe_if_media_change(if_ctx_t);
static int ixgbe_if_msix_intr_assign(if_ctx_t, int);
-static int ixgbe_if_mtu_set(if_ctx_t ctx, uint32_t mtu);
-static void ixgbe_if_crcstrip_set(if_ctx_t ctx, int onoff, int strip);
-static void ixgbe_if_multi_set(if_ctx_t ctx);
-static int ixgbe_if_promisc_set(if_ctx_t ctx, int flags);
-static int ixgbe_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs,
- uint64_t *paddrs, int nrxqs, int nrxqsets);
-static int ixgbe_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs,
- uint64_t *paddrs, int nrxqs, int nrxqsets);
-static void ixgbe_if_queues_free(if_ctx_t ctx);
-static void ixgbe_if_timer(if_ctx_t ctx, uint16_t);
-static void ixgbe_if_update_admin_status(if_ctx_t ctx);
-static void ixgbe_if_vlan_register(if_ctx_t ctx, u16 vtag);
-static void ixgbe_if_vlan_unregister(if_ctx_t ctx, u16 vtag);
-static int ixgbe_if_i2c_req(if_ctx_t ctx, struct ifi2creq *req);
-static bool ixgbe_if_needs_restart(if_ctx_t ctx, enum iflib_restart_event event);
-int ixgbe_intr(void *arg);
+static int ixgbe_if_mtu_set(if_ctx_t, uint32_t);
+static void ixgbe_if_crcstrip_set(if_ctx_t, int, int);
+static void ixgbe_if_multi_set(if_ctx_t);
+static int ixgbe_if_promisc_set(if_ctx_t, int);
+static int ixgbe_if_tx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int);
+static int ixgbe_if_rx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int);
+static void ixgbe_if_queues_free(if_ctx_t);
+static void ixgbe_if_timer(if_ctx_t, uint16_t);
+static void ixgbe_if_update_admin_status(if_ctx_t);
+static void ixgbe_if_vlan_register(if_ctx_t, u16);
+static void ixgbe_if_vlan_unregister(if_ctx_t, u16);
+static int ixgbe_if_i2c_req(if_ctx_t, struct ifi2creq *);
+static bool ixgbe_if_needs_restart(if_ctx_t, enum iflib_restart_event);
+int ixgbe_intr(void *);
/************************************************************************
* Function prototypes
************************************************************************/
-#if __FreeBSD_version >= 1100036
static uint64_t ixgbe_if_get_counter(if_ctx_t, ift_counter);
-#endif
-static void ixgbe_enable_queue(struct adapter *adapter, u32 vector);
-static void ixgbe_disable_queue(struct adapter *adapter, u32 vector);
-static void ixgbe_add_device_sysctls(if_ctx_t ctx);
-static int ixgbe_allocate_pci_resources(if_ctx_t ctx);
-static int ixgbe_setup_low_power_mode(if_ctx_t ctx);
+static void ixgbe_enable_queue(struct ixgbe_softc *, u32);
+static void ixgbe_disable_queue(struct ixgbe_softc *, u32);
+static void ixgbe_add_device_sysctls(if_ctx_t);
+static int ixgbe_allocate_pci_resources(if_ctx_t);
+static int ixgbe_setup_low_power_mode(if_ctx_t);
-static void ixgbe_config_dmac(struct adapter *adapter);
-static void ixgbe_configure_ivars(struct adapter *adapter);
-static void ixgbe_set_ivar(struct adapter *adapter, u8 entry, u8 vector,
- s8 type);
+static void ixgbe_config_dmac(struct ixgbe_softc *);
+static void ixgbe_configure_ivars(struct ixgbe_softc *);
+static void ixgbe_set_ivar(struct ixgbe_softc *, u8, u8, s8);
static u8 *ixgbe_mc_array_itr(struct ixgbe_hw *, u8 **, u32 *);
-static bool ixgbe_sfp_probe(if_ctx_t ctx);
+static bool ixgbe_sfp_probe(if_ctx_t);
-static void ixgbe_free_pci_resources(if_ctx_t ctx);
+static void ixgbe_free_pci_resources(if_ctx_t);
-static int ixgbe_msix_link(void *arg);
-static int ixgbe_msix_que(void *arg);
-static void ixgbe_initialize_rss_mapping(struct adapter *adapter);
-static void ixgbe_initialize_receive_units(if_ctx_t ctx);
-static void ixgbe_initialize_transmit_units(if_ctx_t ctx);
+static int ixgbe_msix_link(void *);
+static int ixgbe_msix_que(void *);
+static void ixgbe_initialize_rss_mapping(struct ixgbe_softc *);
+static void ixgbe_initialize_receive_units(if_ctx_t);
+static void ixgbe_initialize_transmit_units(if_ctx_t);
-static int ixgbe_setup_interface(if_ctx_t ctx);
-static void ixgbe_init_device_features(struct adapter *adapter);
-static void ixgbe_check_fan_failure(struct adapter *, u32, bool);
+static int ixgbe_setup_interface(if_ctx_t);
+static void ixgbe_init_device_features(struct ixgbe_softc *);
+static void ixgbe_check_fan_failure(struct ixgbe_softc *, u32, bool);
static void ixgbe_sbuf_fw_version(struct ixgbe_hw *, struct sbuf *);
-static void ixgbe_print_fw_version(if_ctx_t ctx);
-static void ixgbe_add_media_types(if_ctx_t ctx);
-static void ixgbe_update_stats_counters(struct adapter *adapter);
-static void ixgbe_config_link(if_ctx_t ctx);
-static void ixgbe_get_slot_info(struct adapter *);
-static void ixgbe_check_wol_support(struct adapter *adapter);
-static void ixgbe_enable_rx_drop(struct adapter *);
-static void ixgbe_disable_rx_drop(struct adapter *);
-
-static void ixgbe_add_hw_stats(struct adapter *adapter);
-static int ixgbe_set_flowcntl(struct adapter *, int);
-static int ixgbe_set_advertise(struct adapter *, int);
-static int ixgbe_get_advertise(struct adapter *);
-static void ixgbe_setup_vlan_hw_support(if_ctx_t ctx);
-static void ixgbe_config_gpie(struct adapter *adapter);
-static void ixgbe_config_delay_values(struct adapter *adapter);
+static void ixgbe_print_fw_version(if_ctx_t);
+static void ixgbe_add_media_types(if_ctx_t);
+static void ixgbe_update_stats_counters(struct ixgbe_softc *);
+static void ixgbe_config_link(if_ctx_t);
+static void ixgbe_get_slot_info(struct ixgbe_softc *);
+static void ixgbe_check_wol_support(struct ixgbe_softc *);
+static void ixgbe_enable_rx_drop(struct ixgbe_softc *);
+static void ixgbe_disable_rx_drop(struct ixgbe_softc *);
+
+static void ixgbe_add_hw_stats(struct ixgbe_softc *);
+static int ixgbe_set_flowcntl(struct ixgbe_softc *, int);
+static int ixgbe_set_advertise(struct ixgbe_softc *, int);
+static int ixgbe_get_advertise(struct ixgbe_softc *);
+static void ixgbe_setup_vlan_hw_support(if_ctx_t);
+static void ixgbe_config_gpie(struct ixgbe_softc *);
+static void ixgbe_config_delay_values(struct ixgbe_softc *);
/* Sysctl handlers */
static int ixgbe_sysctl_flowcntl(SYSCTL_HANDLER_ARGS);
@@ -237,7 +232,7 @@
};
static driver_t ix_driver = {
- "ix", ix_methods, sizeof(struct adapter),
+ "ix", ix_methods, sizeof(struct ixgbe_softc),
};
devclass_t ix_devclass;
@@ -293,7 +288,7 @@
static SYSCTL_NODE(_hw, OID_AUTO, ix, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
"IXGBE driver parameters");
static driver_t ixgbe_if_driver = {
- "ixgbe_if", ixgbe_if_methods, sizeof(struct adapter)
+ "ixgbe_if", ixgbe_if_methods, sizeof(struct ixgbe_softc)
};
static int ixgbe_max_interrupt_rate = (4000000 / IXGBE_LOW_LATENCY);
@@ -412,33 +407,33 @@
ixgbe_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs,
int ntxqs, int ntxqsets)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- if_softc_ctx_t scctx = adapter->shared;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ if_softc_ctx_t scctx = sc->shared;
struct ix_tx_queue *que;
int i, j, error;
- MPASS(adapter->num_tx_queues > 0);
- MPASS(adapter->num_tx_queues == ntxqsets);
+ MPASS(sc->num_tx_queues > 0);
+ MPASS(sc->num_tx_queues == ntxqsets);
MPASS(ntxqs == 1);
/* Allocate queue structure memory */
- adapter->tx_queues =
+ sc->tx_queues =
(struct ix_tx_queue *)malloc(sizeof(struct ix_tx_queue) * ntxqsets,
M_IXGBE, M_NOWAIT | M_ZERO);
- if (!adapter->tx_queues) {
+ if (!sc->tx_queues) {
device_printf(iflib_get_dev(ctx),
"Unable to allocate TX ring memory\n");
return (ENOMEM);
}
- for (i = 0, que = adapter->tx_queues; i < ntxqsets; i++, que++) {
+ for (i = 0, que = sc->tx_queues; i < ntxqsets; i++, que++) {
struct tx_ring *txr = &que->txr;
/* In case SR-IOV is enabled, align the index properly */
- txr->me = ixgbe_vf_que_index(adapter->iov_mode, adapter->pool,
+ txr->me = ixgbe_vf_que_index(sc->iov_mode, sc->pool,
i);
- txr->adapter = que->adapter = adapter;
+ txr->sc = que->sc = sc;
/* Allocate report status array */
txr->tx_rsq = (qidx_t *)malloc(sizeof(qidx_t) * scctx->isc_ntxd[0], M_IXGBE, M_NOWAIT | M_ZERO);
@@ -457,13 +452,13 @@
txr->total_packets = 0;
/* Set the rate at which we sample packets */
- if (adapter->feat_en & IXGBE_FEATURE_FDIR)
+ if (sc->feat_en & IXGBE_FEATURE_FDIR)
txr->atr_sample = atr_sample_rate;
}
device_printf(iflib_get_dev(ctx), "allocated for %d queues\n",
- adapter->num_tx_queues);
+ sc->num_tx_queues);
return (0);
@@ -480,32 +475,32 @@
ixgbe_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs,
int nrxqs, int nrxqsets)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ix_rx_queue *que;
int i;
- MPASS(adapter->num_rx_queues > 0);
- MPASS(adapter->num_rx_queues == nrxqsets);
+ MPASS(sc->num_rx_queues > 0);
+ MPASS(sc->num_rx_queues == nrxqsets);
MPASS(nrxqs == 1);
/* Allocate queue structure memory */
- adapter->rx_queues =
+ sc->rx_queues =
(struct ix_rx_queue *)malloc(sizeof(struct ix_rx_queue)*nrxqsets,
M_IXGBE, M_NOWAIT | M_ZERO);
- if (!adapter->rx_queues) {
+ if (!sc->rx_queues) {
device_printf(iflib_get_dev(ctx),
"Unable to allocate TX ring memory\n");
return (ENOMEM);
}
- for (i = 0, que = adapter->rx_queues; i < nrxqsets; i++, que++) {
+ for (i = 0, que = sc->rx_queues; i < nrxqsets; i++, que++) {
struct rx_ring *rxr = &que->rxr;
/* In case SR-IOV is enabled, align the index properly */
- rxr->me = ixgbe_vf_que_index(adapter->iov_mode, adapter->pool,
+ rxr->me = ixgbe_vf_que_index(sc->iov_mode, sc->pool,
i);
- rxr->adapter = que->adapter = adapter;
+ rxr->sc = que->sc = sc;
/* get the virtual and physical address of the hw queues */
rxr->tail = IXGBE_RDT(rxr->me);
@@ -516,7 +511,7 @@
}
device_printf(iflib_get_dev(ctx), "allocated for %d rx queues\n",
- adapter->num_rx_queues);
+ sc->num_rx_queues);
return (0);
} /* ixgbe_if_rx_queues_alloc */
@@ -527,13 +522,13 @@
static void
ixgbe_if_queues_free(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_tx_queue *tx_que = adapter->tx_queues;
- struct ix_rx_queue *rx_que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_tx_queue *tx_que = sc->tx_queues;
+ struct ix_rx_queue *rx_que = sc->rx_queues;
int i;
if (tx_que != NULL) {
- for (i = 0; i < adapter->num_tx_queues; i++, tx_que++) {
+ for (i = 0; i < sc->num_tx_queues; i++, tx_que++) {
struct tx_ring *txr = &tx_que->txr;
if (txr->tx_rsq == NULL)
break;
@@ -542,12 +537,12 @@
txr->tx_rsq = NULL;
}
- free(adapter->tx_queues, M_IXGBE);
- adapter->tx_queues = NULL;
+ free(sc->tx_queues, M_IXGBE);
+ sc->tx_queues = NULL;
}
if (rx_que != NULL) {
- free(adapter->rx_queues, M_IXGBE);
- adapter->rx_queues = NULL;
+ free(sc->rx_queues, M_IXGBE);
+ sc->rx_queues = NULL;
}
} /* ixgbe_if_queues_free */
@@ -555,15 +550,15 @@
* ixgbe_initialize_rss_mapping
************************************************************************/
static void
-ixgbe_initialize_rss_mapping(struct adapter *adapter)
+ixgbe_initialize_rss_mapping(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 reta = 0, mrqc, rss_key[10];
int queue_id, table_size, index_mult;
int i, j;
u32 rss_hash_config;
- if (adapter->feat_en & IXGBE_FEATURE_RSS) {
+ if (sc->feat_en & IXGBE_FEATURE_RSS) {
/* Fetch the configured RSS key */
rss_getkey((uint8_t *)&rss_key);
} else {
@@ -574,7 +569,7 @@
/* Set multiplier for RETA setup and table size based on MAC */
index_mult = 0x1;
table_size = 128;
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_82598EB:
index_mult = 0x11;
break;
@@ -589,17 +584,17 @@
/* Set up the redirection table */
for (i = 0, j = 0; i < table_size; i++, j++) {
- if (j == adapter->num_rx_queues)
+ if (j == sc->num_rx_queues)
j = 0;
- if (adapter->feat_en & IXGBE_FEATURE_RSS) {
+ if (sc->feat_en & IXGBE_FEATURE_RSS) {
/*
* Fetch the RSS bucket id for the given indirection
* entry. Cap it at the number of configured buckets
* (which is num_rx_queues.)
*/
queue_id = rss_get_indirection_to_bucket(i);
- queue_id = queue_id % adapter->num_rx_queues;
+ queue_id = queue_id % sc->num_rx_queues;
} else
queue_id = (j * index_mult);
@@ -624,7 +619,7 @@
IXGBE_WRITE_REG(hw, IXGBE_RSSRK(i), rss_key[i]);
/* Perform hash on these packet types */
- if (adapter->feat_en & IXGBE_FEATURE_RSS)
+ if (sc->feat_en & IXGBE_FEATURE_RSS)
rss_hash_config = rss_gethashconfig();
else {
/*
@@ -659,7 +654,7 @@
mrqc |= IXGBE_MRQC_RSS_FIELD_IPV6_UDP;
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6_EX)
mrqc |= IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP;
- mrqc |= ixgbe_get_mrqc(adapter->iov_mode);
+ mrqc |= ixgbe_get_mrqc(sc->iov_mode);
IXGBE_WRITE_REG(hw, IXGBE_MRQC, mrqc);
} /* ixgbe_initialize_rss_mapping */
@@ -671,9 +666,9 @@
static void
ixgbe_initialize_receive_units(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- if_softc_ctx_t scctx = adapter->shared;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ if_softc_ctx_t scctx = sc->shared;
+ struct ixgbe_hw *hw = &sc->hw;
struct ifnet *ifp = iflib_get_ifp(ctx);
struct ix_rx_queue *que;
int i, j;
@@ -689,7 +684,7 @@
/* Enable broadcasts */
fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);
fctrl |= IXGBE_FCTRL_BAM;
- if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
+ if (sc->hw.mac.type == ixgbe_mac_82598EB) {
fctrl |= IXGBE_FCTRL_DPF;
fctrl |= IXGBE_FCTRL_PMCF;
}
@@ -703,11 +698,11 @@
hlreg &= ~IXGBE_HLREG0_JUMBOEN;
IXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg);
- bufsz = (adapter->rx_mbuf_sz + BSIZEPKT_ROUNDUP) >>
+ bufsz = (sc->rx_mbuf_sz + BSIZEPKT_ROUNDUP) >>
IXGBE_SRRCTL_BSIZEPKT_SHIFT;
/* Setup the Base and Length of the Rx Descriptor Ring */
- for (i = 0, que = adapter->rx_queues; i < adapter->num_rx_queues; i++, que++) {
+ for (i = 0, que = sc->rx_queues; i < sc->num_rx_queues; i++, que++) {
struct rx_ring *rxr = &que->rxr;
u64 rdba = rxr->rx_paddr;
@@ -733,8 +728,8 @@
* so we do not need to clear the bit, but do it just in case
* this code is moved elsewhere.
*/
- if (adapter->num_rx_queues > 1 &&
- adapter->hw.fc.requested_mode == ixgbe_fc_none) {
+ if (sc->num_rx_queues > 1 &&
+ sc->hw.fc.requested_mode == ixgbe_fc_none) {
srrctl |= IXGBE_SRRCTL_DROP_EN;
} else {
srrctl &= ~IXGBE_SRRCTL_DROP_EN;
@@ -750,7 +745,7 @@
rxr->tail = IXGBE_RDT(rxr->me);
}
- if (adapter->hw.mac.type != ixgbe_mac_82598EB) {
+ if (sc->hw.mac.type != ixgbe_mac_82598EB) {
u32 psrtype = IXGBE_PSRTYPE_TCPHDR
| IXGBE_PSRTYPE_UDPHDR
| IXGBE_PSRTYPE_IPV4HDR
@@ -760,9 +755,9 @@
rxcsum = IXGBE_READ_REG(hw, IXGBE_RXCSUM);
- ixgbe_initialize_rss_mapping(adapter);
+ ixgbe_initialize_rss_mapping(sc);
- if (adapter->num_rx_queues > 1) {
+ if (sc->num_rx_queues > 1) {
/* RSS and RX IPP Checksum are mutually exclusive */
rxcsum |= IXGBE_RXCSUM_PCSD;
}
@@ -784,14 +779,14 @@
static void
ixgbe_initialize_transmit_units(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
- if_softc_ctx_t scctx = adapter->shared;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
+ if_softc_ctx_t scctx = sc->shared;
struct ix_tx_queue *que;
int i;
/* Setup the Base and Length of the Tx Descriptor Ring */
- for (i = 0, que = adapter->tx_queues; i < adapter->num_tx_queues;
+ for (i = 0, que = sc->tx_queues; i < sc->num_tx_queues;
i++, que++) {
struct tx_ring *txr = &que->txr;
u64 tdba = txr->tx_paddr;
@@ -853,7 +848,7 @@
rttdcs |= IXGBE_RTTDCS_ARBDIS;
IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs);
IXGBE_WRITE_REG(hw, IXGBE_MTQC,
- ixgbe_get_mtqc(adapter->iov_mode));
+ ixgbe_get_mtqc(sc->iov_mode));
rttdcs &= ~IXGBE_RTTDCS_ARBDIS;
IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs);
}
@@ -881,7 +876,7 @@
static int
ixgbe_if_attach_pre(if_ctx_t ctx)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
device_t dev;
if_softc_ctx_t scctx;
struct ixgbe_hw *hw;
@@ -892,13 +887,13 @@
/* Allocate, clear, and link in our adapter structure */
dev = iflib_get_dev(ctx);
- adapter = iflib_get_softc(ctx);
- adapter->hw.back = adapter;
- adapter->ctx = ctx;
- adapter->dev = dev;
- scctx = adapter->shared = iflib_get_softc_ctx(ctx);
- adapter->media = iflib_get_media(ctx);
- hw = &adapter->hw;
+ sc = iflib_get_softc(ctx);
+ sc->hw.back = sc;
+ sc->ctx = ctx;
+ sc->dev = dev;
+ scctx = sc->shared = iflib_get_softc_ctx(ctx);
+ sc->media = iflib_get_media(ctx);
+ hw = &sc->hw;
/* Determine hardware revision */
hw->vendor_id = pci_get_vendor(dev);
@@ -935,15 +930,15 @@
if (hw->mac.type != ixgbe_mac_82598EB)
hw->phy.smart_speed = ixgbe_smart_speed;
- ixgbe_init_device_features(adapter);
+ ixgbe_init_device_features(sc);
/* Enable WoL (if supported) */
- ixgbe_check_wol_support(adapter);
+ ixgbe_check_wol_support(sc);
/* Verify adapter fan is still functional (if applicable) */
- if (adapter->feat_en & IXGBE_FEATURE_FAN_FAIL) {
+ if (sc->feat_en & IXGBE_FEATURE_FAN_FAIL) {
u32 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP);
- ixgbe_check_fan_failure(adapter, esdp, false);
+ ixgbe_check_fan_failure(sc, esdp, false);
}
/* Ensure SW/FW semaphore is free */
@@ -961,7 +956,7 @@
* so the timer routine will probe
* for later insertion.
*/
- adapter->sfp_probe = true;
+ sc->sfp_probe = true;
error = 0;
} else if (error == IXGBE_ERR_SFP_NOT_SUPPORTED) {
device_printf(dev, "Unsupported SFP+ module detected!\n");
@@ -974,7 +969,7 @@
}
/* Make sure we have a good EEPROM before we read from it */
- if (ixgbe_validate_eeprom_checksum(&adapter->hw, NULL) < 0) {
+ if (ixgbe_validate_eeprom_checksum(&sc->hw, NULL) < 0) {
device_printf(dev, "The EEPROM Checksum Is Not Valid\n");
error = EIO;
goto err_pci;
@@ -999,7 +994,7 @@
/* Most of the iflib initialization... */
iflib_set_mac(ctx, hw->mac.addr);
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_X550:
case ixgbe_mac_X550EM_x:
case ixgbe_mac_X550EM_a:
@@ -1024,7 +1019,7 @@
/* XXX */
scctx->isc_tx_csum_flags = CSUM_IP | CSUM_TCP | CSUM_UDP | CSUM_TSO |
CSUM_IP6_TCP | CSUM_IP6_UDP | CSUM_IP6_TSO;
- if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
+ if (sc->hw.mac.type == ixgbe_mac_82598EB) {
scctx->isc_tx_nsegments = IXGBE_82598_SCATTER;
} else {
scctx->isc_tx_csum_flags |= CSUM_SCTP |CSUM_IP6_SCTP;
@@ -1044,9 +1039,9 @@
return (0);
err_pci:
- ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT);
+ ctrl_ext = IXGBE_READ_REG(&sc->hw, IXGBE_CTRL_EXT);
ctrl_ext &= ~IXGBE_CTRL_EXT_DRV_LOAD;
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_CTRL_EXT, ctrl_ext);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_CTRL_EXT, ctrl_ext);
ixgbe_free_pci_resources(ctx);
return (error);
@@ -1065,33 +1060,33 @@
ixgbe_if_attach_post(if_ctx_t ctx)
{
device_t dev;
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
struct ixgbe_hw *hw;
int error = 0;
dev = iflib_get_dev(ctx);
- adapter = iflib_get_softc(ctx);
- hw = &adapter->hw;
+ sc = iflib_get_softc(ctx);
+ hw = &sc->hw;
- if (adapter->intr_type == IFLIB_INTR_LEGACY &&
- (adapter->feat_cap & IXGBE_FEATURE_LEGACY_IRQ) == 0) {
+ if (sc->intr_type == IFLIB_INTR_LEGACY &&
+ (sc->feat_cap & IXGBE_FEATURE_LEGACY_IRQ) == 0) {
device_printf(dev, "Device does not support legacy interrupts");
error = ENXIO;
goto err;
}
/* Allocate multicast array memory. */
- adapter->mta = malloc(sizeof(*adapter->mta) *
+ sc->mta = malloc(sizeof(*sc->mta) *
MAX_NUM_MULTICAST_ADDRESSES, M_IXGBE, M_NOWAIT);
- if (adapter->mta == NULL) {
+ if (sc->mta == NULL) {
device_printf(dev, "Can not allocate multicast setup array\n");
error = ENOMEM;
goto err;
}
/* hw.ix defaults init */
- ixgbe_set_advertise(adapter, ixgbe_advertise_speed);
+ ixgbe_set_advertise(sc, ixgbe_advertise_speed);
/* Enable the optics for 82599 SFP+ fiber */
ixgbe_enable_tx_laser(hw);
@@ -1099,7 +1094,7 @@
/* Enable power to the phy. */
ixgbe_set_phy_power(hw, true);
- ixgbe_initialize_iov(adapter);
+ ixgbe_initialize_iov(sc);
error = ixgbe_setup_interface(ctx);
if (error) {
@@ -1110,27 +1105,27 @@
ixgbe_if_update_admin_status(ctx);
/* Initialize statistics */
- ixgbe_update_stats_counters(adapter);
- ixgbe_add_hw_stats(adapter);
+ ixgbe_update_stats_counters(sc);
+ ixgbe_add_hw_stats(sc);
/* Check PCIE slot type/speed/width */
- ixgbe_get_slot_info(adapter);
+ ixgbe_get_slot_info(sc);
/*
* Do time init and sysctl init here, but
- * only on the first port of a bypass adapter.
+ * only on the first port of a bypass sc.
*/
- ixgbe_bypass_init(adapter);
+ ixgbe_bypass_init(sc);
/* Display NVM and Option ROM versions */
ixgbe_print_fw_version(ctx);
/* Set an initial dmac value */
- adapter->dmac = 0;
+ sc->dmac = 0;
/* Set initial advertised speeds (if applicable) */
- adapter->advertise = ixgbe_get_advertise(adapter);
+ sc->advertise = ixgbe_get_advertise(sc);
- if (adapter->feat_cap & IXGBE_FEATURE_SRIOV)
+ if (sc->feat_cap & IXGBE_FEATURE_SRIOV)
ixgbe_define_iov_schemas(dev, &error);
/* Add sysctls */
@@ -1151,21 +1146,21 @@
* on the value read here.
************************************************************************/
static void
-ixgbe_check_wol_support(struct adapter *adapter)
+ixgbe_check_wol_support(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u16 dev_caps = 0;
/* Find out WoL support for port */
- adapter->wol_support = hw->wol_enabled = 0;
+ sc->wol_support = hw->wol_enabled = 0;
ixgbe_get_device_caps(hw, &dev_caps);
if ((dev_caps & IXGBE_DEVICE_CAPS_WOL_PORT0_1) ||
((dev_caps & IXGBE_DEVICE_CAPS_WOL_PORT0) &&
hw->bus.func == 0))
- adapter->wol_support = hw->wol_enabled = 1;
+ sc->wol_support = hw->wol_enabled = 1;
/* Save initial wake up filter configuration */
- adapter->wufc = IXGBE_READ_REG(hw, IXGBE_WUFC);
+ sc->wufc = IXGBE_READ_REG(hw, IXGBE_WUFC);
return;
} /* ixgbe_check_wol_support */
@@ -1179,20 +1174,20 @@
ixgbe_setup_interface(if_ctx_t ctx)
{
struct ifnet *ifp = iflib_get_ifp(ctx);
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
INIT_DEBUGOUT("ixgbe_setup_interface: begin");
if_setbaudrate(ifp, IF_Gbps(10));
- adapter->max_frame_size = ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
+ sc->max_frame_size = ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
- adapter->phy_layer = ixgbe_get_supported_physical_layer(&adapter->hw);
+ sc->phy_layer = ixgbe_get_supported_physical_layer(&sc->hw);
ixgbe_add_media_types(ctx);
/* Autoselect media by default */
- ifmedia_set(adapter->media, IFM_ETHER | IFM_AUTO);
+ ifmedia_set(sc->media, IFM_ETHER | IFM_AUTO);
return (0);
} /* ixgbe_setup_interface */
@@ -1203,30 +1198,30 @@
static uint64_t
ixgbe_if_get_counter(if_ctx_t ctx, ift_counter cnt)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
if_t ifp = iflib_get_ifp(ctx);
switch (cnt) {
case IFCOUNTER_IPACKETS:
- return (adapter->ipackets);
+ return (sc->ipackets);
case IFCOUNTER_OPACKETS:
- return (adapter->opackets);
+ return (sc->opackets);
case IFCOUNTER_IBYTES:
- return (adapter->ibytes);
+ return (sc->ibytes);
case IFCOUNTER_OBYTES:
- return (adapter->obytes);
+ return (sc->obytes);
case IFCOUNTER_IMCASTS:
- return (adapter->imcasts);
+ return (sc->imcasts);
case IFCOUNTER_OMCASTS:
- return (adapter->omcasts);
+ return (sc->omcasts);
case IFCOUNTER_COLLISIONS:
return (0);
case IFCOUNTER_IQDROPS:
- return (adapter->iqdrops);
+ return (sc->iqdrops);
case IFCOUNTER_OQDROPS:
return (0);
case IFCOUNTER_IERRORS:
- return (adapter->ierrors);
+ return (sc->ierrors);
default:
return (if_get_counter_default(ifp, cnt));
}
@@ -1238,8 +1233,8 @@
static int
ixgbe_if_i2c_req(if_ctx_t ctx, struct ifi2creq *req)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
int i;
@@ -1276,85 +1271,85 @@
static void
ixgbe_add_media_types(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
device_t dev = iflib_get_dev(ctx);
u64 layer;
- layer = adapter->phy_layer = ixgbe_get_supported_physical_layer(hw);
+ layer = sc->phy_layer = ixgbe_get_supported_physical_layer(hw);
/* Media types with matching FreeBSD media defines */
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_T)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_T, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_T, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_T)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_T, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_T, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_100BASE_TX)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_100_TX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_100_TX, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_10BASE_T)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10_T, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10_T, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_SFP_PLUS_CU ||
layer & IXGBE_PHYSICAL_LAYER_SFP_ACTIVE_DA)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_TWINAX, 0,
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_TWINAX, 0,
NULL);
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_LR) {
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_LR, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_LR, 0, NULL);
if (hw->phy.multispeed_fiber)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_LX, 0,
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_LX, 0,
NULL);
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_SR) {
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_SR, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_SR, 0, NULL);
if (hw->phy.multispeed_fiber)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_SX, 0,
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_SX, 0,
NULL);
} else if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_SX)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_SX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_SX, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_CX4)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_CX4, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_CX4, 0, NULL);
#ifdef IFM_ETH_XTYPE
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_KR, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_KR, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4)
- ifmedia_add( adapter->media, IFM_ETHER | IFM_10G_KX4, 0, NULL);
+ ifmedia_add( sc->media, IFM_ETHER | IFM_10G_KX4, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_KX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_KX, 0, NULL);
if (layer & IXGBE_PHYSICAL_LAYER_2500BASE_KX)
- ifmedia_add(adapter->media, IFM_ETHER | IFM_2500_KX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_2500_KX, 0, NULL);
#else
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR) {
device_printf(dev, "Media supported: 10GbaseKR\n");
device_printf(dev, "10GbaseKR mapped to 10GbaseSR\n");
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_SR, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_SR, 0, NULL);
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4) {
device_printf(dev, "Media supported: 10GbaseKX4\n");
device_printf(dev, "10GbaseKX4 mapped to 10GbaseCX4\n");
- ifmedia_add(adapter->media, IFM_ETHER | IFM_10G_CX4, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_10G_CX4, 0, NULL);
}
if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX) {
device_printf(dev, "Media supported: 1000baseKX\n");
device_printf(dev, "1000baseKX mapped to 1000baseCX\n");
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_CX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_CX, 0, NULL);
}
if (layer & IXGBE_PHYSICAL_LAYER_2500BASE_KX) {
device_printf(dev, "Media supported: 2500baseKX\n");
device_printf(dev, "2500baseKX mapped to 2500baseSX\n");
- ifmedia_add(adapter->media, IFM_ETHER | IFM_2500_SX, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_2500_SX, 0, NULL);
}
#endif
if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_BX)
device_printf(dev, "Media supported: 1000baseBX\n");
if (hw->device_id == IXGBE_DEV_ID_82598AT) {
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_T | IFM_FDX,
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_T | IFM_FDX,
0, NULL);
- ifmedia_add(adapter->media, IFM_ETHER | IFM_1000_T, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_1000_T, 0, NULL);
}
- ifmedia_add(adapter->media, IFM_ETHER | IFM_AUTO, 0, NULL);
+ ifmedia_add(sc->media, IFM_ETHER | IFM_AUTO, 0, NULL);
} /* ixgbe_add_media_types */
/************************************************************************
@@ -1392,20 +1387,20 @@
static void
ixgbe_config_link(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
u32 autoneg, err = 0;
bool sfp, negotiate;
sfp = ixgbe_is_sfp(hw);
if (sfp) {
- adapter->task_requests |= IXGBE_REQUEST_TASK_MOD;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MOD;
iflib_admin_intr_deferred(ctx);
} else {
if (hw->mac.ops.check_link)
- err = ixgbe_check_link(hw, &adapter->link_speed,
- &adapter->link_up, false);
+ err = ixgbe_check_link(hw, &sc->link_speed,
+ &sc->link_up, false);
if (err)
return;
autoneg = hw->phy.autoneg_advertised;
@@ -1416,7 +1411,7 @@
return;
if (hw->mac.ops.setup_link)
err = hw->mac.ops.setup_link(hw, autoneg,
- adapter->link_up);
+ sc->link_up);
}
} /* ixgbe_config_link */
@@ -1424,10 +1419,10 @@
* ixgbe_update_stats_counters - Update board statistics counters.
************************************************************************/
static void
-ixgbe_update_stats_counters(struct adapter *adapter)
+ixgbe_update_stats_counters(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
- struct ixgbe_hw_stats *stats = &adapter->stats.pf;
+ struct ixgbe_hw *hw = &sc->hw;
+ struct ixgbe_hw_stats *stats = &sc->stats.pf;
u32 missed_rx = 0, bprc, lxon, lxoff, total;
u32 lxoffrxc;
u64 total_missed_rx = 0;
@@ -1476,7 +1471,7 @@
* during the last interval, so capture that here.
*/
if (lxoffrxc)
- adapter->shared->isc_pause_frames = 1;
+ sc->shared->isc_pause_frames = 1;
/*
* Workaround: mprc hardware is incorrectly counting
@@ -1537,14 +1532,14 @@
}
/* Fill out the OS statistics structure */
- IXGBE_SET_IPACKETS(adapter, stats->gprc);
- IXGBE_SET_OPACKETS(adapter, stats->gptc);
- IXGBE_SET_IBYTES(adapter, stats->gorc);
- IXGBE_SET_OBYTES(adapter, stats->gotc);
- IXGBE_SET_IMCASTS(adapter, stats->mprc);
- IXGBE_SET_OMCASTS(adapter, stats->mptc);
- IXGBE_SET_COLLISIONS(adapter, 0);
- IXGBE_SET_IQDROPS(adapter, total_missed_rx);
+ IXGBE_SET_IPACKETS(sc, stats->gprc);
+ IXGBE_SET_OPACKETS(sc, stats->gptc);
+ IXGBE_SET_IBYTES(sc, stats->gorc);
+ IXGBE_SET_OBYTES(sc, stats->gotc);
+ IXGBE_SET_IMCASTS(sc, stats->mprc);
+ IXGBE_SET_OMCASTS(sc, stats->mptc);
+ IXGBE_SET_COLLISIONS(sc, 0);
+ IXGBE_SET_IQDROPS(sc, total_missed_rx);
/*
* Aggregate following types of errors as RX errors:
@@ -1558,7 +1553,7 @@
* - oversized packets count,
* - jabber count.
*/
- IXGBE_SET_IERRORS(adapter, stats->crcerrs + stats->illerrc + stats->xec +
+ IXGBE_SET_IERRORS(sc, stats->crcerrs + stats->illerrc + stats->xec +
stats->mpc[0] + stats->rlec + stats->ruc + stats->rfc + stats->roc +
stats->rjc);
} /* ixgbe_update_stats_counters */
@@ -1569,15 +1564,15 @@
* Add sysctl variables, one per statistic, to the system.
************************************************************************/
static void
-ixgbe_add_hw_stats(struct adapter *adapter)
+ixgbe_add_hw_stats(struct ixgbe_softc *sc)
{
- device_t dev = iflib_get_dev(adapter->ctx);
+ device_t dev = iflib_get_dev(sc->ctx);
struct ix_rx_queue *rx_que;
struct ix_tx_queue *tx_que;
struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(dev);
struct sysctl_oid *tree = device_get_sysctl_tree(dev);
struct sysctl_oid_list *child = SYSCTL_CHILDREN(tree);
- struct ixgbe_hw_stats *stats = &adapter->stats.pf;
+ struct ixgbe_hw_stats *stats = &sc->stats.pf;
struct sysctl_oid *stat_node, *queue_node;
struct sysctl_oid_list *stat_list, *queue_list;
int i;
@@ -1587,13 +1582,13 @@
/* Driver Statistics */
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "dropped",
- CTLFLAG_RD, &adapter->dropped_pkts, "Driver dropped packets");
+ CTLFLAG_RD, &sc->dropped_pkts, "Driver dropped packets");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "watchdog_events",
- CTLFLAG_RD, &adapter->watchdog_events, "Watchdog timeouts");
+ CTLFLAG_RD, &sc->watchdog_events, "Watchdog timeouts");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
- CTLFLAG_RD, &adapter->link_irq, "Link MSI-X IRQ Handled");
+ CTLFLAG_RD, &sc->link_irq, "Link MSI-X IRQ Handled");
- for (i = 0, tx_que = adapter->tx_queues; i < adapter->num_tx_queues; i++, tx_que++) {
+ for (i = 0, tx_que = sc->tx_queues; i < sc->num_tx_queues; i++, tx_que++) {
struct tx_ring *txr = &tx_que->txr;
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i);
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf,
@@ -1613,7 +1608,7 @@
"Queue Packets Transmitted");
}
- for (i = 0, rx_que = adapter->rx_queues; i < adapter->num_rx_queues; i++, rx_que++) {
+ for (i = 0, rx_que = sc->rx_queues; i < sc->num_rx_queues; i++, rx_que++) {
struct rx_ring *rxr = &rx_que->rxr;
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i);
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf,
@@ -1622,11 +1617,11 @@
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "interrupt_rate",
CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- &adapter->rx_queues[i], 0,
+ &sc->rx_queues[i], 0,
ixgbe_sysctl_interrupt_rate_handler, "IU",
"Interrupt Rate");
SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "irqs",
- CTLFLAG_RD, &(adapter->rx_queues[i].irqs),
+ CTLFLAG_RD, &(sc->rx_queues[i].irqs),
"irqs on this queue");
SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head",
CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, rxr, 0,
@@ -1651,7 +1646,7 @@
stat_list = SYSCTL_CHILDREN(stat_node);
SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "rx_errs",
- CTLFLAG_RD, &adapter->ierrors, IXGBE_SYSCTL_DESC_RX_ERRS);
+ CTLFLAG_RD, &sc->ierrors, IXGBE_SYSCTL_DESC_RX_ERRS);
SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "crc_errs",
CTLFLAG_RD, &stats->crcerrs, "CRC Errors");
SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "ill_errs",
@@ -1761,7 +1756,7 @@
if (!txr)
return (0);
- val = IXGBE_READ_REG(&txr->adapter->hw, IXGBE_TDH(txr->me));
+ val = IXGBE_READ_REG(&txr->sc->hw, IXGBE_TDH(txr->me));
error = sysctl_handle_int(oidp, &val, 0, req);
if (error || !req->newptr)
return error;
@@ -1784,7 +1779,7 @@
if (!txr)
return (0);
- val = IXGBE_READ_REG(&txr->adapter->hw, IXGBE_TDT(txr->me));
+ val = IXGBE_READ_REG(&txr->sc->hw, IXGBE_TDT(txr->me));
error = sysctl_handle_int(oidp, &val, 0, req);
if (error || !req->newptr)
return error;
@@ -1807,7 +1802,7 @@
if (!rxr)
return (0);
- val = IXGBE_READ_REG(&rxr->adapter->hw, IXGBE_RDH(rxr->me));
+ val = IXGBE_READ_REG(&rxr->sc->hw, IXGBE_RDH(rxr->me));
error = sysctl_handle_int(oidp, &val, 0, req);
if (error || !req->newptr)
return error;
@@ -1830,7 +1825,7 @@
if (!rxr)
return (0);
- val = IXGBE_READ_REG(&rxr->adapter->hw, IXGBE_RDT(rxr->me));
+ val = IXGBE_READ_REG(&rxr->sc->hw, IXGBE_RDT(rxr->me));
error = sysctl_handle_int(oidp, &val, 0, req);
if (error || !req->newptr)
return error;
@@ -1849,13 +1844,13 @@
static void
ixgbe_if_vlan_register(if_ctx_t ctx, u16 vtag)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
u16 index, bit;
index = (vtag >> 5) & 0x7F;
bit = vtag & 0x1F;
- adapter->shadow_vfta[index] |= (1 << bit);
- ++adapter->num_vlans;
+ sc->shadow_vfta[index] |= (1 << bit);
+ ++sc->num_vlans;
ixgbe_setup_vlan_hw_support(ctx);
} /* ixgbe_if_vlan_register */
@@ -1867,13 +1862,13 @@
static void
ixgbe_if_vlan_unregister(if_ctx_t ctx, u16 vtag)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
u16 index, bit;
index = (vtag >> 5) & 0x7F;
bit = vtag & 0x1F;
- adapter->shadow_vfta[index] &= ~(1 << bit);
- --adapter->num_vlans;
+ sc->shadow_vfta[index] &= ~(1 << bit);
+ --sc->num_vlans;
/* Re-init to load the changes */
ixgbe_setup_vlan_hw_support(ctx);
} /* ixgbe_if_vlan_unregister */
@@ -1885,8 +1880,8 @@
ixgbe_setup_vlan_hw_support(if_ctx_t ctx)
{
struct ifnet *ifp = iflib_get_ifp(ctx);
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
struct rx_ring *rxr;
int i;
u32 ctrl;
@@ -1898,13 +1893,13 @@
* the VFTA and other state, so if there
* have been no vlan's registered do nothing.
*/
- if (adapter->num_vlans == 0)
+ if (sc->num_vlans == 0)
return;
/* Setup the queues for vlans */
if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
- for (i = 0; i < adapter->num_rx_queues; i++) {
- rxr = &adapter->rx_queues[i].rxr;
+ for (i = 0; i < sc->num_rx_queues; i++) {
+ rxr = &sc->rx_queues[i].rxr;
/* On 82599 the VLAN enable is per/queue in RXDCTL */
if (hw->mac.type != ixgbe_mac_82598EB) {
ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me));
@@ -1922,9 +1917,9 @@
* we need to repopulate it now.
*/
for (i = 0; i < IXGBE_VFTA_SIZE; i++)
- if (adapter->shadow_vfta[i] != 0)
+ if (sc->shadow_vfta[i] != 0)
IXGBE_WRITE_REG(hw, IXGBE_VFTA(i),
- adapter->shadow_vfta[i]);
+ sc->shadow_vfta[i]);
ctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
/* Enable the Filter Table if enabled */
@@ -1944,10 +1939,10 @@
* the slot this adapter is plugged into.
************************************************************************/
static void
-ixgbe_get_slot_info(struct adapter *adapter)
+ixgbe_get_slot_info(struct ixgbe_softc *sc)
{
- device_t dev = iflib_get_dev(adapter->ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ device_t dev = iflib_get_dev(sc->ctx);
+ struct ixgbe_hw *hw = &sc->hw;
int bus_info_valid = true;
u32 offset;
u16 link;
@@ -2043,8 +2038,8 @@
static int
ixgbe_if_msix_intr_assign(if_ctx_t ctx, int msix)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_rx_queue *rx_que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_rx_queue *rx_que = sc->rx_queues;
struct ix_tx_queue *tx_que;
int error, rid, vector = 0;
int cpu_id = 0;
@@ -2052,7 +2047,7 @@
/* Admin Que is vector 0*/
rid = vector + 1;
- for (int i = 0; i < adapter->num_rx_queues; i++, vector++, rx_que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, vector++, rx_que++) {
rid = vector + 1;
snprintf(buf, sizeof(buf), "rxq%d", i);
@@ -2062,12 +2057,12 @@
if (error) {
device_printf(iflib_get_dev(ctx),
"Failed to allocate que int %d err: %d", i, error);
- adapter->num_rx_queues = i + 1;
+ sc->num_rx_queues = i + 1;
goto fail;
}
rx_que->msix = vector;
- if (adapter->feat_en & IXGBE_FEATURE_RSS) {
+ if (sc->feat_en & IXGBE_FEATURE_RSS) {
/*
* The queue ID is used as the RSS layer bucket ID.
* We look up the queue ID -> RSS CPU ID and select
@@ -2082,42 +2077,42 @@
* This just happens to match the default RSS
* round-robin bucket -> queue -> CPU allocation.
*/
- if (adapter->num_rx_queues > 1)
+ if (sc->num_rx_queues > 1)
cpu_id = i;
}
}
- for (int i = 0; i < adapter->num_tx_queues; i++) {
+ for (int i = 0; i < sc->num_tx_queues; i++) {
snprintf(buf, sizeof(buf), "txq%d", i);
- tx_que = &adapter->tx_queues[i];
- tx_que->msix = i % adapter->num_rx_queues;
+ tx_que = &sc->tx_queues[i];
+ tx_que->msix = i % sc->num_rx_queues;
iflib_softirq_alloc_generic(ctx,
- &adapter->rx_queues[tx_que->msix].que_irq,
+ &sc->rx_queues[tx_que->msix].que_irq,
IFLIB_INTR_TX, tx_que, tx_que->txr.me, buf);
}
rid = vector + 1;
- error = iflib_irq_alloc_generic(ctx, &adapter->irq, rid,
- IFLIB_INTR_ADMIN, ixgbe_msix_link, adapter, 0, "aq");
+ error = iflib_irq_alloc_generic(ctx, &sc->irq, rid,
+ IFLIB_INTR_ADMIN, ixgbe_msix_link, sc, 0, "aq");
if (error) {
device_printf(iflib_get_dev(ctx),
"Failed to register admin handler");
return (error);
}
- adapter->vector = vector;
+ sc->vector = vector;
return (0);
fail:
- iflib_irq_free(ctx, &adapter->irq);
- rx_que = adapter->rx_queues;
- for (int i = 0; i < adapter->num_rx_queues; i++, rx_que++)
+ iflib_irq_free(ctx, &sc->irq);
+ rx_que = sc->rx_queues;
+ for (int i = 0; i < sc->num_rx_queues; i++, rx_que++)
iflib_irq_free(ctx, &rx_que->que_irq);
return (error);
} /* ixgbe_if_msix_intr_assign */
static inline void
-ixgbe_perform_aim(struct adapter *adapter, struct ix_rx_queue *que)
+ixgbe_perform_aim(struct ixgbe_softc *sc, struct ix_rx_queue *que)
{
uint32_t newitr = 0;
struct rx_ring *rxr = &que->rxr;
@@ -2129,7 +2124,7 @@
* the last interval.
*/
if (que->eitr_setting) {
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITR(que->msix),
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EITR(que->msix),
que->eitr_setting);
}
@@ -2154,7 +2149,7 @@
newitr = (newitr / 2);
}
- if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
+ if (sc->hw.mac.type == ixgbe_mac_82598EB) {
newitr |= newitr << 16;
} else {
newitr |= IXGBE_EITR_CNT_WDIS;
@@ -2177,19 +2172,19 @@
ixgbe_msix_que(void *arg)
{
struct ix_rx_queue *que = arg;
- struct adapter *adapter = que->adapter;
- struct ifnet *ifp = iflib_get_ifp(que->adapter->ctx);
+ struct ixgbe_softc *sc = que->sc;
+ struct ifnet *ifp = iflib_get_ifp(que->sc->ctx);
/* Protect against spurious interrupts */
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return (FILTER_HANDLED);
- ixgbe_disable_queue(adapter, que->msix);
+ ixgbe_disable_queue(sc, que->msix);
++que->irqs;
/* Check for AIM */
- if (adapter->enable_aim) {
- ixgbe_perform_aim(adapter, que);
+ if (sc->enable_aim) {
+ ixgbe_perform_aim(sc, que);
}
return (FILTER_SCHEDULE_THREAD);
@@ -2204,8 +2199,8 @@
static void
ixgbe_if_media_status(if_ctx_t ctx, struct ifmediareq * ifmr)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
int layer;
INIT_DEBUGOUT("ixgbe_if_media_status: begin");
@@ -2213,17 +2208,17 @@
ifmr->ifm_status = IFM_AVALID;
ifmr->ifm_active = IFM_ETHER;
- if (!adapter->link_active)
+ if (!sc->link_active)
return;
ifmr->ifm_status |= IFM_ACTIVE;
- layer = adapter->phy_layer;
+ layer = sc->phy_layer;
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_T ||
layer & IXGBE_PHYSICAL_LAYER_1000BASE_T ||
layer & IXGBE_PHYSICAL_LAYER_100BASE_TX ||
layer & IXGBE_PHYSICAL_LAYER_10BASE_T)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_T | IFM_FDX;
break;
@@ -2239,13 +2234,13 @@
}
if (layer & IXGBE_PHYSICAL_LAYER_SFP_PLUS_CU ||
layer & IXGBE_PHYSICAL_LAYER_SFP_ACTIVE_DA)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_TWINAX | IFM_FDX;
break;
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_LR)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_LR | IFM_FDX;
break;
@@ -2254,7 +2249,7 @@
break;
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_LRM)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_LRM | IFM_FDX;
break;
@@ -2264,7 +2259,7 @@
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_SR ||
layer & IXGBE_PHYSICAL_LAYER_1000BASE_SX)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_SR | IFM_FDX;
break;
@@ -2273,7 +2268,7 @@
break;
}
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_CX4)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_CX4 | IFM_FDX;
break;
@@ -2284,7 +2279,7 @@
*/
#ifndef IFM_ETH_XTYPE
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_SR | IFM_FDX;
break;
@@ -2298,7 +2293,7 @@
else if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4 ||
layer & IXGBE_PHYSICAL_LAYER_2500BASE_KX ||
layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_CX4 | IFM_FDX;
break;
@@ -2311,7 +2306,7 @@
}
#else
if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_KR | IFM_FDX;
break;
@@ -2325,7 +2320,7 @@
else if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4 ||
layer & IXGBE_PHYSICAL_LAYER_2500BASE_KX ||
layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX)
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_10GB_FULL:
ifmr->ifm_active |= IFM_10G_KX4 | IFM_FDX;
break;
@@ -2360,9 +2355,9 @@
static int
ixgbe_if_media_change(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifmedia *ifm = iflib_get_media(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
ixgbe_link_speed speed = 0;
INIT_DEBUGOUT("ixgbe_if_media_change: begin");
@@ -2425,7 +2420,7 @@
hw->mac.autotry_restart = true;
hw->mac.ops.setup_link(hw, speed, true);
- adapter->advertise =
+ sc->advertise =
((speed & IXGBE_LINK_SPEED_10GB_FULL) ? 4 : 0) |
((speed & IXGBE_LINK_SPEED_1GB_FULL) ? 2 : 0) |
((speed & IXGBE_LINK_SPEED_100_FULL) ? 1 : 0) |
@@ -2445,12 +2440,12 @@
static int
ixgbe_if_promisc_set(if_ctx_t ctx, int flags)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
u32 rctl;
int mcnt = 0;
- rctl = IXGBE_READ_REG(&adapter->hw, IXGBE_FCTRL);
+ rctl = IXGBE_READ_REG(&sc->hw, IXGBE_FCTRL);
rctl &= (~IXGBE_FCTRL_UPE);
if (ifp->if_flags & IFF_ALLMULTI)
mcnt = MAX_NUM_MULTICAST_ADDRESSES;
@@ -2459,15 +2454,15 @@
}
if (mcnt < MAX_NUM_MULTICAST_ADDRESSES)
rctl &= (~IXGBE_FCTRL_MPE);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_FCTRL, rctl);
if (ifp->if_flags & IFF_PROMISC) {
rctl |= (IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_FCTRL, rctl);
} else if (ifp->if_flags & IFF_ALLMULTI) {
rctl |= IXGBE_FCTRL_MPE;
rctl &= ~IXGBE_FCTRL_UPE;
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, rctl);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_FCTRL, rctl);
}
return (0);
} /* ixgbe_if_promisc_set */
@@ -2478,12 +2473,12 @@
static int
ixgbe_msix_link(void *arg)
{
- struct adapter *adapter = arg;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = arg;
+ struct ixgbe_hw *hw = &sc->hw;
u32 eicr, eicr_mask;
s32 retval;
- ++adapter->link_irq;
+ ++sc->link_irq;
/* Pause other interrupts */
IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_EIMC_OTHER);
@@ -2498,28 +2493,28 @@
/* Link status change */
if (eicr & IXGBE_EICR_LSC) {
IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_EIMC_LSC);
- adapter->task_requests |= IXGBE_REQUEST_TASK_LSC;
+ sc->task_requests |= IXGBE_REQUEST_TASK_LSC;
}
- if (adapter->hw.mac.type != ixgbe_mac_82598EB) {
- if ((adapter->feat_en & IXGBE_FEATURE_FDIR) &&
+ if (sc->hw.mac.type != ixgbe_mac_82598EB) {
+ if ((sc->feat_en & IXGBE_FEATURE_FDIR) &&
(eicr & IXGBE_EICR_FLOW_DIR)) {
/* This is probably overkill :) */
- if (!atomic_cmpset_int(&adapter->fdir_reinit, 0, 1))
+ if (!atomic_cmpset_int(&sc->fdir_reinit, 0, 1))
return (FILTER_HANDLED);
/* Disable the interrupt */
IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_EICR_FLOW_DIR);
- adapter->task_requests |= IXGBE_REQUEST_TASK_FDIR;
+ sc->task_requests |= IXGBE_REQUEST_TASK_FDIR;
} else
if (eicr & IXGBE_EICR_ECC) {
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"\nCRITICAL: ECC ERROR!! Please Reboot!!\n");
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_ECC);
}
/* Check for over temp condition */
- if (adapter->feat_en & IXGBE_FEATURE_TEMP_SENSOR) {
- switch (adapter->hw.mac.type) {
+ if (sc->feat_en & IXGBE_FEATURE_TEMP_SENSOR) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_X550EM_a:
if (!(eicr & IXGBE_EICR_GPI_SDP0_X550EM_a))
break;
@@ -2530,9 +2525,9 @@
retval = hw->phy.ops.check_overtemp(hw);
if (retval != IXGBE_ERR_OVERTEMP)
break;
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"\nCRITICAL: OVER TEMP!! PHY IS SHUT DOWN!!\n");
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"System shutdown required!\n");
break;
default:
@@ -2541,9 +2536,9 @@
retval = hw->phy.ops.check_overtemp(hw);
if (retval != IXGBE_ERR_OVERTEMP)
break;
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"\nCRITICAL: OVER TEMP!! PHY IS SHUT DOWN!!\n");
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"System shutdown required!\n");
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_TS);
break;
@@ -2551,9 +2546,9 @@
}
/* Check for VF message */
- if ((adapter->feat_en & IXGBE_FEATURE_SRIOV) &&
+ if ((sc->feat_en & IXGBE_FEATURE_SRIOV) &&
(eicr & IXGBE_EICR_MAILBOX))
- adapter->task_requests |= IXGBE_REQUEST_TASK_MBX;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MBX;
}
if (ixgbe_is_sfp(hw)) {
@@ -2565,20 +2560,20 @@
if (eicr & eicr_mask) {
IXGBE_WRITE_REG(hw, IXGBE_EICR, eicr_mask);
- adapter->task_requests |= IXGBE_REQUEST_TASK_MOD;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MOD;
}
if ((hw->mac.type == ixgbe_mac_82599EB) &&
(eicr & IXGBE_EICR_GPI_SDP1_BY_MAC(hw))) {
IXGBE_WRITE_REG(hw, IXGBE_EICR,
IXGBE_EICR_GPI_SDP1_BY_MAC(hw));
- adapter->task_requests |= IXGBE_REQUEST_TASK_MSF;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MSF;
}
}
/* Check for fan failure */
- if (adapter->feat_en & IXGBE_FEATURE_FAN_FAIL) {
- ixgbe_check_fan_failure(adapter, eicr, true);
+ if (sc->feat_en & IXGBE_FEATURE_FAN_FAIL) {
+ ixgbe_check_fan_failure(sc, eicr, true);
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1_BY_MAC(hw));
}
@@ -2586,10 +2581,10 @@
if ((hw->phy.type == ixgbe_phy_x550em_ext_t) &&
(eicr & IXGBE_EICR_GPI_SDP0_X540)) {
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP0_X540);
- adapter->task_requests |= IXGBE_REQUEST_TASK_PHY;
+ sc->task_requests |= IXGBE_REQUEST_TASK_PHY;
}
- return (adapter->task_requests != 0) ? FILTER_SCHEDULE_THREAD : FILTER_HANDLED;
+ return (sc->task_requests != 0) ? FILTER_SCHEDULE_THREAD : FILTER_HANDLED;
} /* ixgbe_msix_link */
/************************************************************************
@@ -2602,7 +2597,7 @@
int error;
unsigned int reg, usec, rate;
- reg = IXGBE_READ_REG(&que->adapter->hw, IXGBE_EITR(que->msix));
+ reg = IXGBE_READ_REG(&que->sc->hw, IXGBE_EITR(que->msix));
usec = ((reg & 0x0FF8) >> 3);
if (usec > 0)
rate = 500000 / usec;
@@ -2619,7 +2614,7 @@
ixgbe_max_interrupt_rate = rate;
reg |= ((4000000/rate) & 0xff8);
}
- IXGBE_WRITE_REG(&que->adapter->hw, IXGBE_EITR(que->msix), reg);
+ IXGBE_WRITE_REG(&que->sc->hw, IXGBE_EITR(que->msix), reg);
return (0);
} /* ixgbe_sysctl_interrupt_rate_handler */
@@ -2630,9 +2625,9 @@
static void
ixgbe_add_device_sysctls(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct sysctl_oid_list *child;
struct sysctl_ctx_list *ctx_list;
@@ -2642,49 +2637,49 @@
/* Sysctls for all devices */
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_flowcntl, "I",
+ sc, 0, ixgbe_sysctl_flowcntl, "I",
IXGBE_SYSCTL_DESC_SET_FC);
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "advertise_speed",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_advertise, "I",
+ sc, 0, ixgbe_sysctl_advertise, "I",
IXGBE_SYSCTL_DESC_ADV_SPEED);
- adapter->enable_aim = ixgbe_enable_aim;
+ sc->enable_aim = ixgbe_enable_aim;
SYSCTL_ADD_INT(ctx_list, child, OID_AUTO, "enable_aim", CTLFLAG_RW,
- &adapter->enable_aim, 0, "Interrupt Moderation");
+ &sc->enable_aim, 0, "Interrupt Moderation");
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fw_version",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
ixgbe_sysctl_print_fw_version, "A", "Prints FW/NVM Versions");
#ifdef IXGBE_DEBUG
/* testing sysctls (for all devices) */
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "power_state",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_power_state,
+ sc, 0, ixgbe_sysctl_power_state,
"I", "PCI Power State");
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "print_rss_config",
- CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
ixgbe_sysctl_print_rss_config, "A", "Prints RSS Configuration");
#endif
/* for X550 series devices */
if (hw->mac.type >= ixgbe_mac_X550)
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "dmac",
CTLTYPE_U16 | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_dmac,
+ sc, 0, ixgbe_sysctl_dmac,
"I", "DMA Coalesce");
/* for WoL-capable devices */
if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) {
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wol_enable",
- CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
ixgbe_sysctl_wol_enable, "I", "Enable/Disable Wake on LAN");
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wufc",
CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_wufc,
+ sc, 0, ixgbe_sysctl_wufc,
"I", "Enable/Disable Wake Up Filters");
}
@@ -2699,19 +2694,19 @@
SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, "temp",
CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
- adapter, 0, ixgbe_sysctl_phy_temp,
+ sc, 0, ixgbe_sysctl_phy_temp,
"I", "Current External PHY Temperature (Celsius)");
SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO,
"overtemp_occurred",
- CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0,
+ CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
ixgbe_sysctl_phy_overtemp_occurred, "I",
"External PHY High Temperature Event Occurred");
}
- if (adapter->feat_cap & IXGBE_FEATURE_EEE) {
+ if (sc->feat_cap & IXGBE_FEATURE_EEE) {
SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "eee_state",
- CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0,
ixgbe_sysctl_eee_state, "I", "EEE Power Save State");
}
} /* ixgbe_add_device_sysctls */
@@ -2722,25 +2717,25 @@
static int
ixgbe_allocate_pci_resources(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
int rid;
rid = PCIR_BAR(0);
- adapter->pci_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+ sc->pci_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
RF_ACTIVE);
- if (!(adapter->pci_mem)) {
+ if (!(sc->pci_mem)) {
device_printf(dev, "Unable to allocate bus resource: memory\n");
return (ENXIO);
}
/* Save bus_space values for READ/WRITE_REG macros */
- adapter->osdep.mem_bus_space_tag = rman_get_bustag(adapter->pci_mem);
- adapter->osdep.mem_bus_space_handle =
- rman_get_bushandle(adapter->pci_mem);
+ sc->osdep.mem_bus_space_tag = rman_get_bustag(sc->pci_mem);
+ sc->osdep.mem_bus_space_handle =
+ rman_get_bushandle(sc->pci_mem);
/* Set hw values for shared code */
- adapter->hw.hw_addr = (u8 *)&adapter->osdep.mem_bus_space_handle;
+ sc->hw.hw_addr = (u8 *)&sc->osdep.mem_bus_space_handle;
return (0);
} /* ixgbe_allocate_pci_resources */
@@ -2757,7 +2752,7 @@
static int
ixgbe_if_detach(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
u32 ctrl_ext;
@@ -2771,12 +2766,12 @@
ixgbe_setup_low_power_mode(ctx);
/* let hardware know driver is unloading */
- ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT);
+ ctrl_ext = IXGBE_READ_REG(&sc->hw, IXGBE_CTRL_EXT);
ctrl_ext &= ~IXGBE_CTRL_EXT_DRV_LOAD;
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_CTRL_EXT, ctrl_ext);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_CTRL_EXT, ctrl_ext);
ixgbe_free_pci_resources(ctx);
- free(adapter->mta, M_IXGBE);
+ free(sc->mta, M_IXGBE);
return (0);
} /* ixgbe_if_detach */
@@ -2789,8 +2784,8 @@
static int
ixgbe_setup_low_power_mode(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
device_t dev = iflib_get_dev(ctx);
s32 error = 0;
@@ -2814,7 +2809,7 @@
* Program the Wakeup Filter Control register with user filter
* settings
*/
- IXGBE_WRITE_REG(hw, IXGBE_WUFC, adapter->wufc);
+ IXGBE_WRITE_REG(hw, IXGBE_WUFC, sc->wufc);
/* Enable wakeups and power management in Wakeup Control */
IXGBE_WRITE_REG(hw, IXGBE_WUC,
@@ -2875,10 +2870,10 @@
static int
ixgbe_if_resume(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 wus;
INIT_DEBUGOUT("ixgbe_resume: begin");
@@ -2910,7 +2905,7 @@
static int
ixgbe_if_mtu_set(if_ctx_t ctx, uint32_t mtu)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
int error = 0;
IOCTL_DEBUGOUT("ioctl: SIOCIFMTU (Set Interface MTU)");
@@ -2918,7 +2913,7 @@
if (mtu > IXGBE_MAX_MTU) {
error = EINVAL;
} else {
- adapter->max_frame_size = mtu + IXGBE_MTU_HDR;
+ sc->max_frame_size = mtu + IXGBE_MTU_HDR;
}
return error;
@@ -2930,7 +2925,7 @@
static void
ixgbe_if_crcstrip_set(if_ctx_t ctx, int onoff, int crcstrip)
{
- struct adapter *sc = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ixgbe_hw *hw = &sc->hw;
/* crc stripping is set in two places:
* IXGBE_HLREG0 (modified on init_locked and hw reset)
@@ -2983,10 +2978,10 @@
void
ixgbe_if_init(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
device_t dev = iflib_get_dev(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct ix_rx_queue *rx_que;
struct ix_tx_queue *tx_que;
u32 txdctl, mhadd;
@@ -2998,19 +2993,19 @@
INIT_DEBUGOUT("ixgbe_if_init: begin");
/* Queue indices may change with IOV mode */
- ixgbe_align_all_queue_indices(adapter);
+ ixgbe_align_all_queue_indices(sc);
/* reprogram the RAR[0] in case user changed it. */
- ixgbe_set_rar(hw, 0, hw->mac.addr, adapter->pool, IXGBE_RAH_AV);
+ ixgbe_set_rar(hw, 0, hw->mac.addr, sc->pool, IXGBE_RAH_AV);
/* Get the latest mac address, User can use a LAA */
bcopy(IF_LLADDR(ifp), hw->mac.addr, IXGBE_ETH_LENGTH_OF_ADDRESS);
- ixgbe_set_rar(hw, 0, hw->mac.addr, adapter->pool, 1);
+ ixgbe_set_rar(hw, 0, hw->mac.addr, sc->pool, 1);
hw->addr_ctrl.rar_used_count = 1;
ixgbe_init_hw(hw);
- ixgbe_initialize_iov(adapter);
+ ixgbe_initialize_iov(sc);
ixgbe_initialize_transmit_units(ctx);
@@ -3018,7 +3013,7 @@
ixgbe_if_multi_set(ctx);
/* Determine the correct mbuf pool, based on frame size */
- adapter->rx_mbuf_sz = iflib_get_rx_mbuf_sz(ctx);
+ sc->rx_mbuf_sz = iflib_get_rx_mbuf_sz(ctx);
/* Configure RX settings */
ixgbe_initialize_receive_units(ctx);
@@ -3027,22 +3022,22 @@
* Initialize variable holding task enqueue requests
* from MSI-X interrupts
*/
- adapter->task_requests = 0;
+ sc->task_requests = 0;
/* Enable SDP & MSI-X interrupts based on adapter */
- ixgbe_config_gpie(adapter);
+ ixgbe_config_gpie(sc);
/* Set MTU size */
if (ifp->if_mtu > ETHERMTU) {
/* aka IXGBE_MAXFRS on 82599 and newer */
mhadd = IXGBE_READ_REG(hw, IXGBE_MHADD);
mhadd &= ~IXGBE_MHADD_MFS_MASK;
- mhadd |= adapter->max_frame_size << IXGBE_MHADD_MFS_SHIFT;
+ mhadd |= sc->max_frame_size << IXGBE_MHADD_MFS_SHIFT;
IXGBE_WRITE_REG(hw, IXGBE_MHADD, mhadd);
}
/* Now enable all the queues */
- for (i = 0, tx_que = adapter->tx_queues; i < adapter->num_tx_queues; i++, tx_que++) {
+ for (i = 0, tx_que = sc->tx_queues; i < sc->num_tx_queues; i++, tx_que++) {
struct tx_ring *txr = &tx_que->txr;
txdctl = IXGBE_READ_REG(hw, IXGBE_TXDCTL(txr->me));
@@ -3060,7 +3055,7 @@
IXGBE_WRITE_REG(hw, IXGBE_TXDCTL(txr->me), txdctl);
}
- for (i = 0, rx_que = adapter->rx_queues; i < adapter->num_rx_queues; i++, rx_que++) {
+ for (i = 0, rx_que = sc->rx_queues; i < sc->num_rx_queues; i++, rx_que++) {
struct rx_ring *rxr = &rx_que->rxr;
rxdctl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me));
@@ -3094,7 +3089,7 @@
/* Set up MSI/MSI-X routing */
if (ixgbe_enable_msix) {
- ixgbe_configure_ivars(adapter);
+ ixgbe_configure_ivars(sc);
/* Set up auto-mask */
if (hw->mac.type == ixgbe_mac_82598EB)
IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE);
@@ -3103,12 +3098,12 @@
IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(1), 0xFFFFFFFF);
}
} else { /* Simple settings for Legacy/MSI */
- ixgbe_set_ivar(adapter, 0, 0, 0);
- ixgbe_set_ivar(adapter, 0, 0, 1);
+ ixgbe_set_ivar(sc, 0, 0, 0);
+ ixgbe_set_ivar(sc, 0, 0, 1);
IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE);
}
- ixgbe_init_fdir(adapter);
+ ixgbe_init_fdir(sc);
/*
* Check on any SFP devices that
@@ -3124,7 +3119,7 @@
}
/* Set moderation on the Link interrupt */
- IXGBE_WRITE_REG(hw, IXGBE_EITR(adapter->vector), IXGBE_LINK_ITR);
+ IXGBE_WRITE_REG(hw, IXGBE_EITR(sc->vector), IXGBE_LINK_ITR);
/* Enable power to the phy. */
ixgbe_set_phy_power(hw, true);
@@ -3133,7 +3128,7 @@
ixgbe_config_link(ctx);
/* Hardware Packet Buffer & Flow Control setup */
- ixgbe_config_delay_values(adapter);
+ ixgbe_config_delay_values(sc);
/* Initialize the FC settings */
ixgbe_start_hw(hw);
@@ -3142,13 +3137,13 @@
ixgbe_setup_vlan_hw_support(ctx);
/* Setup DMA Coalescing */
- ixgbe_config_dmac(adapter);
+ ixgbe_config_dmac(sc);
/* And now turn on interrupts */
ixgbe_if_enable_intr(ctx);
/* Enable the use of the MBX by the VF's */
- if (adapter->feat_en & IXGBE_FEATURE_SRIOV) {
+ if (sc->feat_en & IXGBE_FEATURE_SRIOV) {
ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
ctrl_ext |= IXGBE_CTRL_EXT_PFRSTD;
IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext);
@@ -3166,9 +3161,9 @@
* - type is RX/TX/MISC
************************************************************************/
static void
-ixgbe_set_ivar(struct adapter *adapter, u8 entry, u8 vector, s8 type)
+ixgbe_set_ivar(struct ixgbe_softc *sc, u8 entry, u8 vector, s8 type)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 ivar, index;
vector |= IXGBE_IVAR_ALLOC_VAL;
@@ -3183,7 +3178,7 @@
ivar = IXGBE_READ_REG(hw, IXGBE_IVAR(index));
ivar &= ~(0xFF << (8 * (entry & 0x3)));
ivar |= (vector << (8 * (entry & 0x3)));
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_IVAR(index), ivar);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_IVAR(index), ivar);
break;
case ixgbe_mac_82599EB:
case ixgbe_mac_X540:
@@ -3212,10 +3207,10 @@
* ixgbe_configure_ivars
************************************************************************/
static void
-ixgbe_configure_ivars(struct adapter *adapter)
+ixgbe_configure_ivars(struct ixgbe_softc *sc)
{
- struct ix_rx_queue *rx_que = adapter->rx_queues;
- struct ix_tx_queue *tx_que = adapter->tx_queues;
+ struct ix_rx_queue *rx_que = sc->rx_queues;
+ struct ix_tx_queue *tx_que = sc->tx_queues;
u32 newitr;
if (ixgbe_max_interrupt_rate > 0)
@@ -3225,41 +3220,41 @@
* Disable DMA coalescing if interrupt moderation is
* disabled.
*/
- adapter->dmac = 0;
+ sc->dmac = 0;
newitr = 0;
}
- for (int i = 0; i < adapter->num_rx_queues; i++, rx_que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, rx_que++) {
struct rx_ring *rxr = &rx_que->rxr;
/* First the RX queue entry */
- ixgbe_set_ivar(adapter, rxr->me, rx_que->msix, 0);
+ ixgbe_set_ivar(sc, rxr->me, rx_que->msix, 0);
/* Set an Initial EITR value */
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EITR(rx_que->msix), newitr);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EITR(rx_que->msix), newitr);
}
- for (int i = 0; i < adapter->num_tx_queues; i++, tx_que++) {
+ for (int i = 0; i < sc->num_tx_queues; i++, tx_que++) {
struct tx_ring *txr = &tx_que->txr;
/* ... and the TX */
- ixgbe_set_ivar(adapter, txr->me, tx_que->msix, 1);
+ ixgbe_set_ivar(sc, txr->me, tx_que->msix, 1);
}
/* For the Link interrupt */
- ixgbe_set_ivar(adapter, 1, adapter->vector, -1);
+ ixgbe_set_ivar(sc, 1, sc->vector, -1);
} /* ixgbe_configure_ivars */
/************************************************************************
* ixgbe_config_gpie
************************************************************************/
static void
-ixgbe_config_gpie(struct adapter *adapter)
+ixgbe_config_gpie(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 gpie;
gpie = IXGBE_READ_REG(hw, IXGBE_GPIE);
- if (adapter->intr_type == IFLIB_INTR_MSIX) {
+ if (sc->intr_type == IFLIB_INTR_MSIX) {
/* Enable Enhanced MSI-X mode */
gpie |= IXGBE_GPIE_MSIX_MODE
| IXGBE_GPIE_EIAME
@@ -3268,11 +3263,11 @@
}
/* Fan Failure Interrupt */
- if (adapter->feat_en & IXGBE_FEATURE_FAN_FAIL)
+ if (sc->feat_en & IXGBE_FEATURE_FAN_FAIL)
gpie |= IXGBE_SDP1_GPIEN;
/* Thermal Sensor Interrupt */
- if (adapter->feat_en & IXGBE_FEATURE_TEMP_SENSOR)
+ if (sc->feat_en & IXGBE_FEATURE_TEMP_SENSOR)
gpie |= IXGBE_SDP0_GPIEN_X540;
/* Link detection */
@@ -3295,15 +3290,15 @@
/************************************************************************
* ixgbe_config_delay_values
*
- * Requires adapter->max_frame_size to be set.
+ * Requires sc->max_frame_size to be set.
************************************************************************/
static void
-ixgbe_config_delay_values(struct adapter *adapter)
+ixgbe_config_delay_values(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 rxpb, frame, size, tmp;
- frame = adapter->max_frame_size;
+ frame = sc->max_frame_size;
/* Calculate High Water */
switch (hw->mac.type) {
@@ -3347,13 +3342,13 @@
static u_int
ixgbe_mc_filter_apply(void *arg, struct sockaddr_dl *sdl, u_int idx)
{
- struct adapter *adapter = arg;
- struct ixgbe_mc_addr *mta = adapter->mta;
+ struct ixgbe_softc *sc = arg;
+ struct ixgbe_mc_addr *mta = sc->mta;
if (idx == MAX_NUM_MULTICAST_ADDRESSES)
return (0);
bcopy(LLADDR(sdl), mta[idx].addr, IXGBE_ETH_LENGTH_OF_ADDRESS);
- mta[idx].vmdq = adapter->pool;
+ mta[idx].vmdq = sc->pool;
return (1);
} /* ixgbe_mc_filter_apply */
@@ -3361,7 +3356,7 @@
static void
ixgbe_if_multi_set(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ixgbe_mc_addr *mta;
struct ifnet *ifp = iflib_get_ifp(ctx);
u8 *update_ptr;
@@ -3370,13 +3365,12 @@
IOCTL_DEBUGOUT("ixgbe_if_multi_set: begin");
- mta = adapter->mta;
+ mta = sc->mta;
bzero(mta, sizeof(*mta) * MAX_NUM_MULTICAST_ADDRESSES);
- mcnt = if_foreach_llmaddr(iflib_get_ifp(ctx), ixgbe_mc_filter_apply,
- adapter);
+ mcnt = if_foreach_llmaddr(iflib_get_ifp(ctx), ixgbe_mc_filter_apply, sc);
- fctrl = IXGBE_READ_REG(&adapter->hw, IXGBE_FCTRL);
+ fctrl = IXGBE_READ_REG(&sc->hw, IXGBE_FCTRL);
if (ifp->if_flags & IFF_PROMISC)
fctrl |= (IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE);
@@ -3387,11 +3381,11 @@
} else
fctrl &= ~(IXGBE_FCTRL_UPE | IXGBE_FCTRL_MPE);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, fctrl);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_FCTRL, fctrl);
if (mcnt < MAX_NUM_MULTICAST_ADDRESSES) {
update_ptr = (u8 *)mta;
- ixgbe_update_mc_addr_list(&adapter->hw, update_ptr, mcnt,
+ ixgbe_update_mc_addr_list(&sc->hw, update_ptr, mcnt,
ixgbe_mc_array_itr, true);
}
@@ -3426,18 +3420,17 @@
static void
ixgbe_if_timer(if_ctx_t ctx, uint16_t qid)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
if (qid != 0)
return;
/* Check for pluggable optics */
- if (adapter->sfp_probe)
+ if (sc->sfp_probe)
if (!ixgbe_sfp_probe(ctx))
return; /* Nothing to do */
- ixgbe_check_link(&adapter->hw, &adapter->link_speed,
- &adapter->link_up, 0);
+ ixgbe_check_link(&sc->hw, &sc->link_speed, &sc->link_up, 0);
/* Fire off the adminq task */
iflib_admin_intr_deferred(ctx);
@@ -3452,8 +3445,8 @@
static bool
ixgbe_sfp_probe(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
device_t dev = iflib_get_dev(ctx);
bool result = false;
@@ -3463,7 +3456,7 @@
if (ret)
goto out;
ret = hw->phy.ops.reset(hw);
- adapter->sfp_probe = false;
+ sc->sfp_probe = false;
if (ret == IXGBE_ERR_SFP_NOT_SUPPORTED) {
device_printf(dev, "Unsupported SFP+ module detected!");
device_printf(dev,
@@ -3486,12 +3479,12 @@
ixgbe_handle_mod(void *context)
{
if_ctx_t ctx = context;
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
device_t dev = iflib_get_dev(ctx);
u32 err, cage_full = 0;
- if (adapter->hw.need_crosstalk_fix) {
+ if (sc->hw.need_crosstalk_fix) {
switch (hw->mac.type) {
case ixgbe_mac_82599EB:
cage_full = IXGBE_READ_REG(hw, IXGBE_ESDP) &
@@ -3527,11 +3520,11 @@
"Setup failure - unsupported SFP+ module type.\n");
goto handle_mod_out;
}
- adapter->task_requests |= IXGBE_REQUEST_TASK_MSF;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MSF;
return;
handle_mod_out:
- adapter->task_requests &= ~(IXGBE_REQUEST_TASK_MSF);
+ sc->task_requests &= ~(IXGBE_REQUEST_TASK_MSF);
} /* ixgbe_handle_mod */
@@ -3542,13 +3535,13 @@
ixgbe_handle_msf(void *context)
{
if_ctx_t ctx = context;
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
u32 autoneg;
bool negotiate;
/* get_supported_phy_layer will call hw->phy.ops.identify_sfp() */
- adapter->phy_layer = ixgbe_get_supported_physical_layer(hw);
+ sc->phy_layer = ixgbe_get_supported_physical_layer(hw);
autoneg = hw->phy.autoneg_advertised;
if ((!autoneg) && (hw->mac.ops.get_link_capabilities))
@@ -3557,9 +3550,9 @@
hw->mac.ops.setup_link(hw, autoneg, true);
/* Adjust media types shown in ifconfig */
- ifmedia_removeall(adapter->media);
- ixgbe_add_media_types(adapter->ctx);
- ifmedia_set(adapter->media, IFM_ETHER | IFM_AUTO);
+ ifmedia_removeall(sc->media);
+ ixgbe_add_media_types(sc->ctx);
+ ifmedia_set(sc->media, IFM_ETHER | IFM_AUTO);
} /* ixgbe_handle_msf */
/************************************************************************
@@ -3569,15 +3562,15 @@
ixgbe_handle_phy(void *context)
{
if_ctx_t ctx = context;
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
int error;
error = hw->phy.ops.handle_lasi(hw);
if (error == IXGBE_ERR_OVERTEMP)
- device_printf(adapter->dev, "CRITICAL: EXTERNAL PHY OVER TEMP!! PHY will downshift to lower power state!\n");
+ device_printf(sc->dev, "CRITICAL: EXTERNAL PHY OVER TEMP!! PHY will downshift to lower power state!\n");
else if (error)
- device_printf(adapter->dev,
+ device_printf(sc->dev,
"Error handling LASI interrupt: %d\n", error);
} /* ixgbe_handle_phy */
@@ -3590,8 +3583,8 @@
static void
ixgbe_if_stop(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
INIT_DEBUGOUT("ixgbe_if_stop: begin\n");
@@ -3604,11 +3597,11 @@
ixgbe_disable_tx_laser(hw);
/* Update the stack */
- adapter->link_up = false;
+ sc->link_up = false;
ixgbe_if_update_admin_status(ctx);
/* reprogram the RAR[0] in case user changed it. */
- ixgbe_set_rar(&adapter->hw, 0, adapter->hw.mac.addr, 0, IXGBE_RAH_AV);
+ ixgbe_set_rar(&sc->hw, 0, sc->hw.mac.addr, 0, IXGBE_RAH_AV);
return;
} /* ixgbe_if_stop */
@@ -3623,70 +3616,70 @@
static void
ixgbe_if_update_admin_status(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
- if (adapter->link_up) {
- if (adapter->link_active == false) {
+ if (sc->link_up) {
+ if (sc->link_active == false) {
if (bootverbose)
device_printf(dev, "Link is up %d Gbps %s \n",
- ((adapter->link_speed == 128) ? 10 : 1),
+ ((sc->link_speed == 128) ? 10 : 1),
"Full Duplex");
- adapter->link_active = true;
+ sc->link_active = true;
/* Update any Flow Control changes */
- ixgbe_fc_enable(&adapter->hw);
+ ixgbe_fc_enable(&sc->hw);
/* Update DMA coalescing config */
- ixgbe_config_dmac(adapter);
+ ixgbe_config_dmac(sc);
/* should actually be negotiated value */
iflib_link_state_change(ctx, LINK_STATE_UP, IF_Gbps(10));
- if (adapter->feat_en & IXGBE_FEATURE_SRIOV)
- ixgbe_ping_all_vfs(adapter);
+ if (sc->feat_en & IXGBE_FEATURE_SRIOV)
+ ixgbe_ping_all_vfs(sc);
}
} else { /* Link down */
- if (adapter->link_active == true) {
+ if (sc->link_active == true) {
if (bootverbose)
device_printf(dev, "Link is Down\n");
iflib_link_state_change(ctx, LINK_STATE_DOWN, 0);
- adapter->link_active = false;
- if (adapter->feat_en & IXGBE_FEATURE_SRIOV)
- ixgbe_ping_all_vfs(adapter);
+ sc->link_active = false;
+ if (sc->feat_en & IXGBE_FEATURE_SRIOV)
+ ixgbe_ping_all_vfs(sc);
}
}
/* Handle task requests from msix_link() */
- if (adapter->task_requests & IXGBE_REQUEST_TASK_MOD)
+ if (sc->task_requests & IXGBE_REQUEST_TASK_MOD)
ixgbe_handle_mod(ctx);
- if (adapter->task_requests & IXGBE_REQUEST_TASK_MSF)
+ if (sc->task_requests & IXGBE_REQUEST_TASK_MSF)
ixgbe_handle_msf(ctx);
- if (adapter->task_requests & IXGBE_REQUEST_TASK_MBX)
+ if (sc->task_requests & IXGBE_REQUEST_TASK_MBX)
ixgbe_handle_mbx(ctx);
- if (adapter->task_requests & IXGBE_REQUEST_TASK_FDIR)
+ if (sc->task_requests & IXGBE_REQUEST_TASK_FDIR)
ixgbe_reinit_fdir(ctx);
- if (adapter->task_requests & IXGBE_REQUEST_TASK_PHY)
+ if (sc->task_requests & IXGBE_REQUEST_TASK_PHY)
ixgbe_handle_phy(ctx);
- adapter->task_requests = 0;
+ sc->task_requests = 0;
- ixgbe_update_stats_counters(adapter);
+ ixgbe_update_stats_counters(sc);
} /* ixgbe_if_update_admin_status */
/************************************************************************
* ixgbe_config_dmac - Configure DMA Coalescing
************************************************************************/
static void
-ixgbe_config_dmac(struct adapter *adapter)
+ixgbe_config_dmac(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct ixgbe_dmac_config *dcfg = &hw->mac.dmac_config;
if (hw->mac.type < ixgbe_mac_X550 || !hw->mac.ops.dmac_config)
return;
- if (dcfg->watchdog_timer ^ adapter->dmac ||
- dcfg->link_speed ^ adapter->link_speed) {
- dcfg->watchdog_timer = adapter->dmac;
+ if (dcfg->watchdog_timer ^ sc->dmac ||
+ dcfg->link_speed ^ sc->link_speed) {
+ dcfg->watchdog_timer = sc->dmac;
dcfg->fcoe_en = false;
- dcfg->link_speed = adapter->link_speed;
+ dcfg->link_speed = sc->link_speed;
dcfg->num_tcs = 1;
INIT_DEBUGOUT2("dmac settings: watchdog %d, link speed %d\n",
@@ -3702,17 +3695,17 @@
void
ixgbe_if_enable_intr(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
+ struct ix_rx_queue *que = sc->rx_queues;
u32 mask, fwsm;
mask = (IXGBE_EIMS_ENABLE_MASK & ~IXGBE_EIMS_RTX_QUEUE);
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_82599EB:
mask |= IXGBE_EIMS_ECC;
- /* Temperature sensor on some adapters */
+ /* Temperature sensor on some scs */
mask |= IXGBE_EIMS_GPI_SDP0;
/* SFP+ (RX_LOS_N & MOD_ABS_N) */
mask |= IXGBE_EIMS_GPI_SDP1;
@@ -3747,24 +3740,24 @@
}
/* Enable Fan Failure detection */
- if (adapter->feat_en & IXGBE_FEATURE_FAN_FAIL)
+ if (sc->feat_en & IXGBE_FEATURE_FAN_FAIL)
mask |= IXGBE_EIMS_GPI_SDP1;
/* Enable SR-IOV */
- if (adapter->feat_en & IXGBE_FEATURE_SRIOV)
+ if (sc->feat_en & IXGBE_FEATURE_SRIOV)
mask |= IXGBE_EIMS_MAILBOX;
/* Enable Flow Director */
- if (adapter->feat_en & IXGBE_FEATURE_FDIR)
+ if (sc->feat_en & IXGBE_FEATURE_FDIR)
mask |= IXGBE_EIMS_FLOW_DIR;
IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask);
/* With MSI-X we use auto clear */
- if (adapter->intr_type == IFLIB_INTR_MSIX) {
+ if (sc->intr_type == IFLIB_INTR_MSIX) {
mask = IXGBE_EIMS_ENABLE_MASK;
/* Don't autoclear Link */
mask &= ~IXGBE_EIMS_OTHER;
mask &= ~IXGBE_EIMS_LSC;
- if (adapter->feat_cap & IXGBE_FEATURE_SRIOV)
+ if (sc->feat_cap & IXGBE_FEATURE_SRIOV)
mask &= ~IXGBE_EIMS_MAILBOX;
IXGBE_WRITE_REG(hw, IXGBE_EIAC, mask);
}
@@ -3774,8 +3767,8 @@
* allow for handling the extended (beyond 32) MSI-X
* vectors that can be used by 82599
*/
- for (int i = 0; i < adapter->num_rx_queues; i++, que++)
- ixgbe_enable_queue(adapter, que->msix);
+ for (int i = 0; i < sc->num_rx_queues; i++, que++)
+ ixgbe_enable_queue(sc, que->msix);
IXGBE_WRITE_FLUSH(hw);
@@ -3787,18 +3780,18 @@
static void
ixgbe_if_disable_intr(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
- if (adapter->intr_type == IFLIB_INTR_MSIX)
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIAC, 0);
- if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, ~0);
+ if (sc->intr_type == IFLIB_INTR_MSIX)
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIAC, 0);
+ if (sc->hw.mac.type == ixgbe_mac_82598EB) {
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIMC, ~0);
} else {
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, 0xFFFF0000);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC_EX(0), ~0);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC_EX(1), ~0);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIMC, 0xFFFF0000);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIMC_EX(0), ~0);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_EIMC_EX(1), ~0);
}
- IXGBE_WRITE_FLUSH(&adapter->hw);
+ IXGBE_WRITE_FLUSH(&sc->hw);
} /* ixgbe_if_disable_intr */
@@ -3808,7 +3801,7 @@
static void
ixgbe_link_intr_enable(if_ctx_t ctx)
{
- struct ixgbe_hw *hw = &((struct adapter *)iflib_get_softc(ctx))->hw;
+ struct ixgbe_hw *hw = &((struct ixgbe_softc *)iflib_get_softc(ctx))->hw;
/* Re-enable other interrupts */
IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EIMS_OTHER | IXGBE_EIMS_LSC);
@@ -3820,10 +3813,10 @@
static int
ixgbe_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_rx_queue *que = &adapter->rx_queues[rxqid];
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_rx_queue *que = &sc->rx_queues[rxqid];
- ixgbe_enable_queue(adapter, que->msix);
+ ixgbe_enable_queue(sc, que->msix);
return (0);
} /* ixgbe_if_rx_queue_intr_enable */
@@ -3832,9 +3825,9 @@
* ixgbe_enable_queue
************************************************************************/
static void
-ixgbe_enable_queue(struct adapter *adapter, u32 vector)
+ixgbe_enable_queue(struct ixgbe_softc *sc, u32 vector)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u64 queue = 1ULL << vector;
u32 mask;
@@ -3855,9 +3848,9 @@
* ixgbe_disable_queue
************************************************************************/
static void
-ixgbe_disable_queue(struct adapter *adapter, u32 vector)
+ixgbe_disable_queue(struct ixgbe_softc *sc, u32 vector)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u64 queue = 1ULL << vector;
u32 mask;
@@ -3880,10 +3873,10 @@
int
ixgbe_intr(void *arg)
{
- struct adapter *adapter = arg;
- struct ix_rx_queue *que = adapter->rx_queues;
- struct ixgbe_hw *hw = &adapter->hw;
- if_ctx_t ctx = adapter->ctx;
+ struct ixgbe_softc *sc = arg;
+ struct ix_rx_queue *que = sc->rx_queues;
+ struct ixgbe_hw *hw = &sc->hw;
+ if_ctx_t ctx = sc->ctx;
u32 eicr, eicr_mask;
eicr = IXGBE_READ_REG(hw, IXGBE_EICR);
@@ -3897,7 +3890,7 @@
/* Check for fan failure */
if ((hw->device_id == IXGBE_DEV_ID_82598AT) &&
(eicr & IXGBE_EICR_GPI_SDP1)) {
- device_printf(adapter->dev,
+ device_printf(sc->dev,
"\nCRITICAL: FAN FAILURE!! REPLACE IMMEDIATELY!!\n");
IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EICR_GPI_SDP1_BY_MAC(hw));
}
@@ -3917,21 +3910,21 @@
if (eicr & eicr_mask) {
IXGBE_WRITE_REG(hw, IXGBE_EICR, eicr_mask);
- adapter->task_requests |= IXGBE_REQUEST_TASK_MOD;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MOD;
}
if ((hw->mac.type == ixgbe_mac_82599EB) &&
(eicr & IXGBE_EICR_GPI_SDP1_BY_MAC(hw))) {
IXGBE_WRITE_REG(hw, IXGBE_EICR,
IXGBE_EICR_GPI_SDP1_BY_MAC(hw));
- adapter->task_requests |= IXGBE_REQUEST_TASK_MSF;
+ sc->task_requests |= IXGBE_REQUEST_TASK_MSF;
}
}
/* External PHY interrupt */
if ((hw->phy.type == ixgbe_phy_x550em_ext_t) &&
(eicr & IXGBE_EICR_GPI_SDP0_X540))
- adapter->task_requests |= IXGBE_REQUEST_TASK_PHY;
+ sc->task_requests |= IXGBE_REQUEST_TASK_PHY;
return (FILTER_SCHEDULE_THREAD);
} /* ixgbe_intr */
@@ -3942,23 +3935,23 @@
static void
ixgbe_free_pci_resources(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_rx_queue *que = sc->rx_queues;
device_t dev = iflib_get_dev(ctx);
/* Release all MSI-X queue resources */
- if (adapter->intr_type == IFLIB_INTR_MSIX)
- iflib_irq_free(ctx, &adapter->irq);
+ if (sc->intr_type == IFLIB_INTR_MSIX)
+ iflib_irq_free(ctx, &sc->irq);
if (que != NULL) {
- for (int i = 0; i < adapter->num_rx_queues; i++, que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, que++) {
iflib_irq_free(ctx, &que->que_irq);
}
}
- if (adapter->pci_mem != NULL)
+ if (sc->pci_mem != NULL)
bus_release_resource(dev, SYS_RES_MEMORY,
- rman_get_rid(adapter->pci_mem), adapter->pci_mem);
+ rman_get_rid(sc->pci_mem), sc->pci_mem);
} /* ixgbe_free_pci_resources */
/************************************************************************
@@ -3969,21 +3962,21 @@
static int
ixgbe_sysctl_flowcntl(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
int error, fc;
- adapter = (struct adapter *)arg1;
- fc = adapter->hw.fc.current_mode;
+ sc = (struct ixgbe_softc *)arg1;
+ fc = sc->hw.fc.current_mode;
error = sysctl_handle_int(oidp, &fc, 0, req);
if ((error) || (req->newptr == NULL))
return (error);
/* Don't bother if it's not changed */
- if (fc == adapter->hw.fc.current_mode)
+ if (fc == sc->hw.fc.current_mode)
return (0);
- return ixgbe_set_flowcntl(adapter, fc);
+ return ixgbe_set_flowcntl(sc, fc);
} /* ixgbe_sysctl_flowcntl */
/************************************************************************
@@ -3996,28 +3989,28 @@
* 3 - full
************************************************************************/
static int
-ixgbe_set_flowcntl(struct adapter *adapter, int fc)
+ixgbe_set_flowcntl(struct ixgbe_softc *sc, int fc)
{
switch (fc) {
case ixgbe_fc_rx_pause:
case ixgbe_fc_tx_pause:
case ixgbe_fc_full:
- adapter->hw.fc.requested_mode = fc;
- if (adapter->num_rx_queues > 1)
- ixgbe_disable_rx_drop(adapter);
+ sc->hw.fc.requested_mode = fc;
+ if (sc->num_rx_queues > 1)
+ ixgbe_disable_rx_drop(sc);
break;
case ixgbe_fc_none:
- adapter->hw.fc.requested_mode = ixgbe_fc_none;
- if (adapter->num_rx_queues > 1)
- ixgbe_enable_rx_drop(adapter);
+ sc->hw.fc.requested_mode = ixgbe_fc_none;
+ if (sc->num_rx_queues > 1)
+ ixgbe_enable_rx_drop(sc);
break;
default:
return (EINVAL);
}
/* Don't autoneg if forcing a value */
- adapter->hw.fc.disable_fc_autoneg = true;
- ixgbe_fc_enable(&adapter->hw);
+ sc->hw.fc.disable_fc_autoneg = true;
+ ixgbe_fc_enable(&sc->hw);
return (0);
} /* ixgbe_set_flowcntl */
@@ -4032,21 +4025,21 @@
* is disabled.
************************************************************************/
static void
-ixgbe_enable_rx_drop(struct adapter *adapter)
+ixgbe_enable_rx_drop(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct rx_ring *rxr;
u32 srrctl;
- for (int i = 0; i < adapter->num_rx_queues; i++) {
- rxr = &adapter->rx_queues[i].rxr;
+ for (int i = 0; i < sc->num_rx_queues; i++) {
+ rxr = &sc->rx_queues[i].rxr;
srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(rxr->me));
srrctl |= IXGBE_SRRCTL_DROP_EN;
IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(rxr->me), srrctl);
}
/* enable drop for each vf */
- for (int i = 0; i < adapter->num_vfs; i++) {
+ for (int i = 0; i < sc->num_vfs; i++) {
IXGBE_WRITE_REG(hw, IXGBE_QDE,
(IXGBE_QDE_WRITE | (i << IXGBE_QDE_IDX_SHIFT) |
IXGBE_QDE_ENABLE));
@@ -4057,21 +4050,21 @@
* ixgbe_disable_rx_drop
************************************************************************/
static void
-ixgbe_disable_rx_drop(struct adapter *adapter)
+ixgbe_disable_rx_drop(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct rx_ring *rxr;
u32 srrctl;
- for (int i = 0; i < adapter->num_rx_queues; i++) {
- rxr = &adapter->rx_queues[i].rxr;
+ for (int i = 0; i < sc->num_rx_queues; i++) {
+ rxr = &sc->rx_queues[i].rxr;
srrctl = IXGBE_READ_REG(hw, IXGBE_SRRCTL(rxr->me));
srrctl &= ~IXGBE_SRRCTL_DROP_EN;
IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(rxr->me), srrctl);
}
/* disable drop for each vf */
- for (int i = 0; i < adapter->num_vfs; i++) {
+ for (int i = 0; i < sc->num_vfs; i++) {
IXGBE_WRITE_REG(hw, IXGBE_QDE,
(IXGBE_QDE_WRITE | (i << IXGBE_QDE_IDX_SHIFT)));
}
@@ -4085,17 +4078,17 @@
static int
ixgbe_sysctl_advertise(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
int error, advertise;
- adapter = (struct adapter *)arg1;
- advertise = adapter->advertise;
+ sc = (struct ixgbe_softc *)arg1;
+ advertise = sc->advertise;
error = sysctl_handle_int(oidp, &advertise, 0, req);
if ((error) || (req->newptr == NULL))
return (error);
- return ixgbe_set_advertise(adapter, advertise);
+ return ixgbe_set_advertise(sc, advertise);
} /* ixgbe_sysctl_advertise */
/************************************************************************
@@ -4108,9 +4101,9 @@
* 0x8 - advertise 10 Mb (yes, Mb)
************************************************************************/
static int
-ixgbe_set_advertise(struct adapter *adapter, int advertise)
+ixgbe_set_advertise(struct ixgbe_softc *sc, int advertise)
{
- device_t dev = iflib_get_dev(adapter->ctx);
+ device_t dev = iflib_get_dev(sc->ctx);
struct ixgbe_hw *hw;
ixgbe_link_speed speed = 0;
ixgbe_link_speed link_caps = 0;
@@ -4118,10 +4111,10 @@
bool negotiate = false;
/* Checks to validate new value */
- if (adapter->advertise == advertise) /* no change */
+ if (sc->advertise == advertise) /* no change */
return (0);
- hw = &adapter->hw;
+ hw = &sc->hw;
/* No speed changes for backplane media */
if (hw->phy.media_type == ixgbe_media_type_backplane)
@@ -4179,7 +4172,7 @@
hw->mac.autotry_restart = true;
hw->mac.ops.setup_link(hw, speed, true);
- adapter->advertise = advertise;
+ sc->advertise = advertise;
return (0);
} /* ixgbe_set_advertise */
@@ -4195,9 +4188,9 @@
* 0x8 - advertise 10 Mb (yes, Mb)
************************************************************************/
static int
-ixgbe_get_advertise(struct adapter *adapter)
+ixgbe_get_advertise(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
int speed;
ixgbe_link_speed link_caps = 0;
s32 err;
@@ -4238,12 +4231,12 @@
static int
ixgbe_sysctl_dmac(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ifnet *ifp = iflib_get_ifp(adapter->ctx);
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ifnet *ifp = iflib_get_ifp(sc->ctx);
int error;
u16 newval;
- newval = adapter->dmac;
+ newval = sc->dmac;
error = sysctl_handle_16(oidp, &newval, 0, req);
if ((error) || (req->newptr == NULL))
return (error);
@@ -4251,11 +4244,11 @@
switch (newval) {
case 0:
/* Disabled */
- adapter->dmac = 0;
+ sc->dmac = 0;
break;
case 1:
/* Enable and use default */
- adapter->dmac = 1000;
+ sc->dmac = 1000;
break;
case 50:
case 100:
@@ -4266,7 +4259,7 @@
case 5000:
case 10000:
/* Legal values - allow */
- adapter->dmac = newval;
+ sc->dmac = newval;
break;
default:
/* Do nothing, illegal value */
@@ -4293,8 +4286,8 @@
static int
ixgbe_sysctl_power_state(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- device_t dev = adapter->dev;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ device_t dev = sc->dev;
int curr_ps, new_ps, error = 0;
curr_ps = new_ps = pci_get_powerstate(dev);
@@ -4332,8 +4325,8 @@
static int
ixgbe_sysctl_wol_enable(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ixgbe_hw *hw = &sc->hw;
int new_wol_enabled;
int error = 0;
@@ -4345,7 +4338,7 @@
if (new_wol_enabled == hw->wol_enabled)
return (0);
- if (new_wol_enabled > 0 && !adapter->wol_support)
+ if (new_wol_enabled > 0 && !sc->wol_support)
return (ENODEV);
else
hw->wol_enabled = new_wol_enabled;
@@ -4373,24 +4366,24 @@
static int
ixgbe_sysctl_wufc(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
int error = 0;
u32 new_wufc;
- new_wufc = adapter->wufc;
+ new_wufc = sc->wufc;
error = sysctl_handle_32(oidp, &new_wufc, 0, req);
if ((error) || (req->newptr == NULL))
return (error);
- if (new_wufc == adapter->wufc)
+ if (new_wufc == sc->wufc)
return (0);
if (new_wufc & 0xffffff00)
return (EINVAL);
new_wufc &= 0xff;
- new_wufc |= (0xffffff & adapter->wufc);
- adapter->wufc = new_wufc;
+ new_wufc |= (0xffffff & sc->wufc);
+ sc->wufc = new_wufc;
return (0);
} /* ixgbe_sysctl_wufc */
@@ -4402,9 +4395,9 @@
static int
ixgbe_sysctl_print_rss_config(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ixgbe_hw *hw = &adapter->hw;
- device_t dev = adapter->dev;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ixgbe_hw *hw = &sc->hw;
+ device_t dev = sc->dev;
struct sbuf *buf;
int error = 0, reta_size;
u32 reg;
@@ -4417,7 +4410,7 @@
// TODO: use sbufs to make a string to print out
/* Set multiplier for RETA setup and table size based on MAC */
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_X550:
case ixgbe_mac_X550EM_x:
case ixgbe_mac_X550EM_a:
@@ -4460,19 +4453,19 @@
static int
ixgbe_sysctl_phy_temp(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ixgbe_hw *hw = &sc->hw;
u16 reg;
if (hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) {
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"Device has no supported external thermal sensor.\n");
return (ENODEV);
}
if (hw->phy.ops.read_reg(hw, IXGBE_PHY_CURRENT_TEMP,
IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, &reg)) {
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"Error reading from PHY's current temperature register\n");
return (EAGAIN);
}
@@ -4492,19 +4485,19 @@
static int
ixgbe_sysctl_phy_overtemp_occurred(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ixgbe_hw *hw = &sc->hw;
u16 reg;
if (hw->device_id != IXGBE_DEV_ID_X550EM_X_10G_T) {
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"Device has no supported external thermal sensor.\n");
return (ENODEV);
}
if (hw->phy.ops.read_reg(hw, IXGBE_PHY_OVERTEMP_STATUS,
IXGBE_MDIO_VENDOR_SPECIFIC_1_DEV_TYPE, &reg)) {
- device_printf(iflib_get_dev(adapter->ctx),
+ device_printf(iflib_get_dev(sc->ctx),
"Error reading from PHY's temperature status register\n");
return (EAGAIN);
}
@@ -4527,13 +4520,13 @@
static int
ixgbe_sysctl_eee_state(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- device_t dev = adapter->dev;
- struct ifnet *ifp = iflib_get_ifp(adapter->ctx);
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ device_t dev = sc->dev;
+ struct ifnet *ifp = iflib_get_ifp(sc->ctx);
int curr_eee, new_eee, error = 0;
s32 retval;
- curr_eee = new_eee = !!(adapter->feat_en & IXGBE_FEATURE_EEE);
+ curr_eee = new_eee = !!(sc->feat_en & IXGBE_FEATURE_EEE);
error = sysctl_handle_int(oidp, &new_eee, 0, req);
if ((error) || (req->newptr == NULL))
@@ -4544,14 +4537,14 @@
return (0);
/* Not supported */
- if (!(adapter->feat_cap & IXGBE_FEATURE_EEE))
+ if (!(sc->feat_cap & IXGBE_FEATURE_EEE))
return (EINVAL);
/* Bounds checking */
if ((new_eee < 0) || (new_eee > 1))
return (EINVAL);
- retval = ixgbe_setup_eee(&adapter->hw, new_eee);
+ retval = ixgbe_setup_eee(&sc->hw, new_eee);
if (retval) {
device_printf(dev, "Error in EEE setup: 0x%08X\n", retval);
return (EINVAL);
@@ -4564,9 +4557,9 @@
/* Cache new value */
if (new_eee)
- adapter->feat_en |= IXGBE_FEATURE_EEE;
+ sc->feat_en |= IXGBE_FEATURE_EEE;
else
- adapter->feat_en &= ~IXGBE_FEATURE_EEE;
+ sc->feat_en &= ~IXGBE_FEATURE_EEE;
return (error);
} /* ixgbe_sysctl_eee_state */
@@ -4575,54 +4568,54 @@
* ixgbe_init_device_features
************************************************************************/
static void
-ixgbe_init_device_features(struct adapter *adapter)
+ixgbe_init_device_features(struct ixgbe_softc *sc)
{
- adapter->feat_cap = IXGBE_FEATURE_NETMAP
+ sc->feat_cap = IXGBE_FEATURE_NETMAP
| IXGBE_FEATURE_RSS
| IXGBE_FEATURE_MSI
| IXGBE_FEATURE_MSIX
| IXGBE_FEATURE_LEGACY_IRQ;
/* Set capabilities first... */
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_82598EB:
- if (adapter->hw.device_id == IXGBE_DEV_ID_82598AT)
- adapter->feat_cap |= IXGBE_FEATURE_FAN_FAIL;
+ if (sc->hw.device_id == IXGBE_DEV_ID_82598AT)
+ sc->feat_cap |= IXGBE_FEATURE_FAN_FAIL;
break;
case ixgbe_mac_X540:
- adapter->feat_cap |= IXGBE_FEATURE_SRIOV;
- adapter->feat_cap |= IXGBE_FEATURE_FDIR;
- if ((adapter->hw.device_id == IXGBE_DEV_ID_X540_BYPASS) &&
- (adapter->hw.bus.func == 0))
- adapter->feat_cap |= IXGBE_FEATURE_BYPASS;
+ sc->feat_cap |= IXGBE_FEATURE_SRIOV;
+ sc->feat_cap |= IXGBE_FEATURE_FDIR;
+ if ((sc->hw.device_id == IXGBE_DEV_ID_X540_BYPASS) &&
+ (sc->hw.bus.func == 0))
+ sc->feat_cap |= IXGBE_FEATURE_BYPASS;
break;
case ixgbe_mac_X550:
- adapter->feat_cap |= IXGBE_FEATURE_TEMP_SENSOR;
- adapter->feat_cap |= IXGBE_FEATURE_SRIOV;
- adapter->feat_cap |= IXGBE_FEATURE_FDIR;
+ sc->feat_cap |= IXGBE_FEATURE_TEMP_SENSOR;
+ sc->feat_cap |= IXGBE_FEATURE_SRIOV;
+ sc->feat_cap |= IXGBE_FEATURE_FDIR;
break;
case ixgbe_mac_X550EM_x:
- adapter->feat_cap |= IXGBE_FEATURE_SRIOV;
- adapter->feat_cap |= IXGBE_FEATURE_FDIR;
+ sc->feat_cap |= IXGBE_FEATURE_SRIOV;
+ sc->feat_cap |= IXGBE_FEATURE_FDIR;
break;
case ixgbe_mac_X550EM_a:
- adapter->feat_cap |= IXGBE_FEATURE_SRIOV;
- adapter->feat_cap |= IXGBE_FEATURE_FDIR;
- adapter->feat_cap &= ~IXGBE_FEATURE_LEGACY_IRQ;
- if ((adapter->hw.device_id == IXGBE_DEV_ID_X550EM_A_1G_T) ||
- (adapter->hw.device_id == IXGBE_DEV_ID_X550EM_A_1G_T_L)) {
- adapter->feat_cap |= IXGBE_FEATURE_TEMP_SENSOR;
- adapter->feat_cap |= IXGBE_FEATURE_EEE;
+ sc->feat_cap |= IXGBE_FEATURE_SRIOV;
+ sc->feat_cap |= IXGBE_FEATURE_FDIR;
+ sc->feat_cap &= ~IXGBE_FEATURE_LEGACY_IRQ;
+ if ((sc->hw.device_id == IXGBE_DEV_ID_X550EM_A_1G_T) ||
+ (sc->hw.device_id == IXGBE_DEV_ID_X550EM_A_1G_T_L)) {
+ sc->feat_cap |= IXGBE_FEATURE_TEMP_SENSOR;
+ sc->feat_cap |= IXGBE_FEATURE_EEE;
}
break;
case ixgbe_mac_82599EB:
- adapter->feat_cap |= IXGBE_FEATURE_SRIOV;
- adapter->feat_cap |= IXGBE_FEATURE_FDIR;
- if ((adapter->hw.device_id == IXGBE_DEV_ID_82599_BYPASS) &&
- (adapter->hw.bus.func == 0))
- adapter->feat_cap |= IXGBE_FEATURE_BYPASS;
- if (adapter->hw.device_id == IXGBE_DEV_ID_82599_QSFP_SF_QP)
- adapter->feat_cap &= ~IXGBE_FEATURE_LEGACY_IRQ;
+ sc->feat_cap |= IXGBE_FEATURE_SRIOV;
+ sc->feat_cap |= IXGBE_FEATURE_FDIR;
+ if ((sc->hw.device_id == IXGBE_DEV_ID_82599_BYPASS) &&
+ (sc->hw.bus.func == 0))
+ sc->feat_cap |= IXGBE_FEATURE_BYPASS;
+ if (sc->hw.device_id == IXGBE_DEV_ID_82599_QSFP_SF_QP)
+ sc->feat_cap &= ~IXGBE_FEATURE_LEGACY_IRQ;
break;
default:
break;
@@ -4630,43 +4623,43 @@
/* Enabled by default... */
/* Fan failure detection */
- if (adapter->feat_cap & IXGBE_FEATURE_FAN_FAIL)
- adapter->feat_en |= IXGBE_FEATURE_FAN_FAIL;
+ if (sc->feat_cap & IXGBE_FEATURE_FAN_FAIL)
+ sc->feat_en |= IXGBE_FEATURE_FAN_FAIL;
/* Netmap */
- if (adapter->feat_cap & IXGBE_FEATURE_NETMAP)
- adapter->feat_en |= IXGBE_FEATURE_NETMAP;
+ if (sc->feat_cap & IXGBE_FEATURE_NETMAP)
+ sc->feat_en |= IXGBE_FEATURE_NETMAP;
/* EEE */
- if (adapter->feat_cap & IXGBE_FEATURE_EEE)
- adapter->feat_en |= IXGBE_FEATURE_EEE;
+ if (sc->feat_cap & IXGBE_FEATURE_EEE)
+ sc->feat_en |= IXGBE_FEATURE_EEE;
/* Thermal Sensor */
- if (adapter->feat_cap & IXGBE_FEATURE_TEMP_SENSOR)
- adapter->feat_en |= IXGBE_FEATURE_TEMP_SENSOR;
+ if (sc->feat_cap & IXGBE_FEATURE_TEMP_SENSOR)
+ sc->feat_en |= IXGBE_FEATURE_TEMP_SENSOR;
/* Enabled via global sysctl... */
/* Flow Director */
if (ixgbe_enable_fdir) {
- if (adapter->feat_cap & IXGBE_FEATURE_FDIR)
- adapter->feat_en |= IXGBE_FEATURE_FDIR;
+ if (sc->feat_cap & IXGBE_FEATURE_FDIR)
+ sc->feat_en |= IXGBE_FEATURE_FDIR;
else
- device_printf(adapter->dev, "Device does not support Flow Director. Leaving disabled.");
+ device_printf(sc->dev, "Device does not support Flow Director. Leaving disabled.");
}
/*
* Message Signal Interrupts - Extended (MSI-X)
* Normal MSI is only enabled if MSI-X calls fail.
*/
if (!ixgbe_enable_msix)
- adapter->feat_cap &= ~IXGBE_FEATURE_MSIX;
+ sc->feat_cap &= ~IXGBE_FEATURE_MSIX;
/* Receive-Side Scaling (RSS) */
- if ((adapter->feat_cap & IXGBE_FEATURE_RSS) && ixgbe_enable_rss)
- adapter->feat_en |= IXGBE_FEATURE_RSS;
+ if ((sc->feat_cap & IXGBE_FEATURE_RSS) && ixgbe_enable_rss)
+ sc->feat_en |= IXGBE_FEATURE_RSS;
/* Disable features with unmet dependencies... */
/* No MSI-X */
- if (!(adapter->feat_cap & IXGBE_FEATURE_MSIX)) {
- adapter->feat_cap &= ~IXGBE_FEATURE_RSS;
- adapter->feat_cap &= ~IXGBE_FEATURE_SRIOV;
- adapter->feat_en &= ~IXGBE_FEATURE_RSS;
- adapter->feat_en &= ~IXGBE_FEATURE_SRIOV;
+ if (!(sc->feat_cap & IXGBE_FEATURE_MSIX)) {
+ sc->feat_cap &= ~IXGBE_FEATURE_RSS;
+ sc->feat_cap &= ~IXGBE_FEATURE_SRIOV;
+ sc->feat_en &= ~IXGBE_FEATURE_RSS;
+ sc->feat_en &= ~IXGBE_FEATURE_SRIOV;
}
} /* ixgbe_init_device_features */
@@ -4674,15 +4667,15 @@
* ixgbe_check_fan_failure
************************************************************************/
static void
-ixgbe_check_fan_failure(struct adapter *adapter, u32 reg, bool in_interrupt)
+ixgbe_check_fan_failure(struct ixgbe_softc *sc, u32 reg, bool in_interrupt)
{
u32 mask;
- mask = (in_interrupt) ? IXGBE_EICR_GPI_SDP1_BY_MAC(&adapter->hw) :
+ mask = (in_interrupt) ? IXGBE_EICR_GPI_SDP1_BY_MAC(&sc->hw) :
IXGBE_ESDP_SDP1;
if (reg & mask)
- device_printf(adapter->dev, "\nCRITICAL: FAN FAILURE!! REPLACE IMMEDIATELY!!\n");
+ device_printf(sc->dev, "\nCRITICAL: FAN FAILURE!! REPLACE IMMEDIATELY!!\n");
} /* ixgbe_check_fan_failure */
/************************************************************************
@@ -4729,9 +4722,9 @@
static void
ixgbe_print_fw_version(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
- device_t dev = adapter->dev;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
+ device_t dev = sc->dev;
struct sbuf *buf;
int error = 0;
@@ -4758,9 +4751,9 @@
static int
ixgbe_sysctl_print_fw_version(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter = (struct adapter *)arg1;
- struct ixgbe_hw *hw = &adapter->hw;
- device_t dev = adapter->dev;
+ struct ixgbe_softc *sc = (struct ixgbe_softc *)arg1;
+ struct ixgbe_hw *hw = &sc->hw;
+ device_t dev = sc->dev;
struct sbuf *buf;
int error = 0;
diff --git a/sys/dev/ixgbe/if_ixv.c b/sys/dev/ixgbe/if_ixv.c
--- a/sys/dev/ixgbe/if_ixv.c
+++ b/sys/dev/ixgbe/if_ixv.c
@@ -71,40 +71,40 @@
/************************************************************************
* Function prototypes
************************************************************************/
-static void *ixv_register(device_t dev);
-static int ixv_if_attach_pre(if_ctx_t ctx);
-static int ixv_if_attach_post(if_ctx_t ctx);
-static int ixv_if_detach(if_ctx_t ctx);
-
-static int ixv_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t qid);
-static int ixv_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nqs, int nqsets);
-static int ixv_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nqs, int nqsets);
-static void ixv_if_queues_free(if_ctx_t ctx);
-static void ixv_identify_hardware(if_ctx_t ctx);
-static void ixv_init_device_features(struct adapter *);
-static int ixv_allocate_pci_resources(if_ctx_t ctx);
-static void ixv_free_pci_resources(if_ctx_t ctx);
-static int ixv_setup_interface(if_ctx_t ctx);
-static void ixv_if_media_status(if_ctx_t , struct ifmediareq *);
-static int ixv_if_media_change(if_ctx_t ctx);
-static void ixv_if_update_admin_status(if_ctx_t ctx);
-static int ixv_if_msix_intr_assign(if_ctx_t ctx, int msix);
-
-static int ixv_if_mtu_set(if_ctx_t ctx, uint32_t mtu);
-static void ixv_if_init(if_ctx_t ctx);
-static void ixv_if_local_timer(if_ctx_t ctx, uint16_t qid);
-static void ixv_if_stop(if_ctx_t ctx);
-static int ixv_negotiate_api(struct adapter *);
-
-static void ixv_initialize_transmit_units(if_ctx_t ctx);
-static void ixv_initialize_receive_units(if_ctx_t ctx);
-static void ixv_initialize_rss_mapping(struct adapter *);
-
-static void ixv_setup_vlan_support(if_ctx_t ctx);
-static void ixv_configure_ivars(struct adapter *);
-static void ixv_if_enable_intr(if_ctx_t ctx);
-static void ixv_if_disable_intr(if_ctx_t ctx);
-static void ixv_if_multi_set(if_ctx_t ctx);
+static void *ixv_register(device_t);
+static int ixv_if_attach_pre(if_ctx_t);
+static int ixv_if_attach_post(if_ctx_t);
+static int ixv_if_detach(if_ctx_t);
+
+static int ixv_if_rx_queue_intr_enable(if_ctx_t, uint16_t);
+static int ixv_if_tx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int);
+static int ixv_if_rx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int);
+static void ixv_if_queues_free(if_ctx_t);
+static void ixv_identify_hardware(if_ctx_t);
+static void ixv_init_device_features(struct ixgbe_softc *);
+static int ixv_allocate_pci_resources(if_ctx_t);
+static void ixv_free_pci_resources(if_ctx_t);
+static int ixv_setup_interface(if_ctx_t);
+static void ixv_if_media_status(if_ctx_t, struct ifmediareq *);
+static int ixv_if_media_change(if_ctx_t);
+static void ixv_if_update_admin_status(if_ctx_t);
+static int ixv_if_msix_intr_assign(if_ctx_t, int);
+
+static int ixv_if_mtu_set(if_ctx_t, uint32_t);
+static void ixv_if_init(if_ctx_t);
+static void ixv_if_local_timer(if_ctx_t, uint16_t);
+static void ixv_if_stop(if_ctx_t);
+static int ixv_negotiate_api(struct ixgbe_softc *);
+
+static void ixv_initialize_transmit_units(if_ctx_t);
+static void ixv_initialize_receive_units(if_ctx_t);
+static void ixv_initialize_rss_mapping(struct ixgbe_softc *);
+
+static void ixv_setup_vlan_support(if_ctx_t);
+static void ixv_configure_ivars(struct ixgbe_softc *);
+static void ixv_if_enable_intr(if_ctx_t);
+static void ixv_if_disable_intr(if_ctx_t);
+static void ixv_if_multi_set(if_ctx_t);
static void ixv_if_register_vlan(if_ctx_t, u16);
static void ixv_if_unregister_vlan(if_ctx_t, u16);
@@ -112,13 +112,13 @@
static uint64_t ixv_if_get_counter(if_ctx_t, ift_counter);
static bool ixv_if_needs_restart(if_ctx_t, enum iflib_restart_event);
-static void ixv_save_stats(struct adapter *);
-static void ixv_init_stats(struct adapter *);
-static void ixv_update_stats(struct adapter *);
-static void ixv_add_stats_sysctls(struct adapter *adapter);
+static void ixv_save_stats(struct ixgbe_softc *);
+static void ixv_init_stats(struct ixgbe_softc *);
+static void ixv_update_stats(struct ixgbe_softc *);
+static void ixv_add_stats_sysctls(struct ixgbe_softc *);
static int ixv_sysctl_debug(SYSCTL_HANDLER_ARGS);
-static void ixv_set_ivar(struct adapter *, u8, u8, s8);
+static void ixv_set_ivar(struct ixgbe_softc *, u8, u8, s8);
static u8 *ixv_mc_array_itr(struct ixgbe_hw *, u8 **, u32 *);
@@ -140,7 +140,7 @@
};
static driver_t ixv_driver = {
- "ixv", ixv_methods, sizeof(struct adapter),
+ "ixv", ixv_methods, sizeof(struct ixgbe_softc),
};
devclass_t ixv_devclass;
@@ -178,7 +178,7 @@
};
static driver_t ixv_if_driver = {
- "ixv_if", ixv_if_methods, sizeof(struct adapter)
+ "ixv_if", ixv_if_methods, sizeof(struct ixgbe_softc)
};
/*
@@ -246,29 +246,29 @@
ixv_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs,
int ntxqs, int ntxqsets)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- if_softc_ctx_t scctx = adapter->shared;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ if_softc_ctx_t scctx = sc->shared;
struct ix_tx_queue *que;
int i, j, error;
- MPASS(adapter->num_tx_queues == ntxqsets);
+ MPASS(sc->num_tx_queues == ntxqsets);
MPASS(ntxqs == 1);
/* Allocate queue structure memory */
- adapter->tx_queues =
+ sc->tx_queues =
(struct ix_tx_queue *)malloc(sizeof(struct ix_tx_queue) * ntxqsets,
M_DEVBUF, M_NOWAIT | M_ZERO);
- if (!adapter->tx_queues) {
+ if (!sc->tx_queues) {
device_printf(iflib_get_dev(ctx),
"Unable to allocate TX ring memory\n");
return (ENOMEM);
}
- for (i = 0, que = adapter->tx_queues; i < ntxqsets; i++, que++) {
+ for (i = 0, que = sc->tx_queues; i < ntxqsets; i++, que++) {
struct tx_ring *txr = &que->txr;
txr->me = i;
- txr->adapter = que->adapter = adapter;
+ txr->sc = que->sc = sc;
/* Allocate report status array */
if (!(txr->tx_rsq = (qidx_t *)malloc(sizeof(qidx_t) * scctx->isc_ntxd[0], M_DEVBUF, M_NOWAIT | M_ZERO))) {
@@ -288,7 +288,7 @@
}
device_printf(iflib_get_dev(ctx), "allocated for %d queues\n",
- adapter->num_tx_queues);
+ sc->num_tx_queues);
return (0);
@@ -305,28 +305,28 @@
ixv_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs,
int nrxqs, int nrxqsets)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ix_rx_queue *que;
int i, error;
- MPASS(adapter->num_rx_queues == nrxqsets);
+ MPASS(sc->num_rx_queues == nrxqsets);
MPASS(nrxqs == 1);
/* Allocate queue structure memory */
- adapter->rx_queues =
+ sc->rx_queues =
(struct ix_rx_queue *)malloc(sizeof(struct ix_rx_queue) * nrxqsets,
M_DEVBUF, M_NOWAIT | M_ZERO);
- if (!adapter->rx_queues) {
+ if (!sc->rx_queues) {
device_printf(iflib_get_dev(ctx),
"Unable to allocate TX ring memory\n");
error = ENOMEM;
goto fail;
}
- for (i = 0, que = adapter->rx_queues; i < nrxqsets; i++, que++) {
+ for (i = 0, que = sc->rx_queues; i < nrxqsets; i++, que++) {
struct rx_ring *rxr = &que->rxr;
rxr->me = i;
- rxr->adapter = que->adapter = adapter;
+ rxr->sc = que->sc = sc;
/* get the virtual and physical address of the hw queues */
@@ -338,7 +338,7 @@
}
device_printf(iflib_get_dev(ctx), "allocated for %d rx queues\n",
- adapter->num_rx_queues);
+ sc->num_rx_queues);
return (0);
@@ -354,14 +354,14 @@
static void
ixv_if_queues_free(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_tx_queue *que = adapter->tx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_tx_queue *que = sc->tx_queues;
int i;
if (que == NULL)
goto free;
- for (i = 0; i < adapter->num_tx_queues; i++, que++) {
+ for (i = 0; i < sc->num_tx_queues; i++, que++) {
struct tx_ring *txr = &que->txr;
if (txr->tx_rsq == NULL)
break;
@@ -369,13 +369,13 @@
free(txr->tx_rsq, M_DEVBUF);
txr->tx_rsq = NULL;
}
- if (adapter->tx_queues != NULL)
- free(adapter->tx_queues, M_DEVBUF);
+ if (sc->tx_queues != NULL)
+ free(sc->tx_queues, M_DEVBUF);
free:
- if (adapter->rx_queues != NULL)
- free(adapter->rx_queues, M_DEVBUF);
- adapter->tx_queues = NULL;
- adapter->rx_queues = NULL;
+ if (sc->rx_queues != NULL)
+ free(sc->rx_queues, M_DEVBUF);
+ sc->tx_queues = NULL;
+ sc->rx_queues = NULL;
} /* ixv_if_queues_free */
/************************************************************************
@@ -390,7 +390,7 @@
static int
ixv_if_attach_pre(if_ctx_t ctx)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
device_t dev;
if_softc_ctx_t scctx;
struct ixgbe_hw *hw;
@@ -398,15 +398,15 @@
INIT_DEBUGOUT("ixv_attach: begin");
- /* Allocate, clear, and link in our adapter structure */
+ /* Allocate, clear, and link in our sc structure */
dev = iflib_get_dev(ctx);
- adapter = iflib_get_softc(ctx);
- adapter->dev = dev;
- adapter->ctx = ctx;
- adapter->hw.back = adapter;
- scctx = adapter->shared = iflib_get_softc_ctx(ctx);
- adapter->media = iflib_get_media(ctx);
- hw = &adapter->hw;
+ sc = iflib_get_softc(ctx);
+ sc->dev = dev;
+ sc->ctx = ctx;
+ sc->hw.back = sc;
+ scctx = sc->shared = iflib_get_softc_ctx(ctx);
+ sc->media = iflib_get_media(ctx);
+ hw = &sc->hw;
/* Do base PCI setup - map BAR0 */
if (ixv_allocate_pci_resources(ctx)) {
@@ -419,11 +419,11 @@
SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "debug",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
- adapter, 0, ixv_sysctl_debug, "I", "Debug Info");
+ sc, 0, ixv_sysctl_debug, "I", "Debug Info");
/* Determine hardware revision */
ixv_identify_hardware(ctx);
- ixv_init_device_features(adapter);
+ ixv_init_device_features(sc);
/* Initialize the shared code */
error = ixgbe_init_ops_vf(hw);
@@ -456,7 +456,7 @@
}
/* Negotiate mailbox API version */
- error = ixv_negotiate_api(adapter);
+ error = ixv_negotiate_api(sc);
if (error) {
device_printf(dev,
"Mailbox API negotiation failed during attach!\n");
@@ -474,7 +474,7 @@
/* Most of the iflib initialization... */
iflib_set_mac(ctx, hw->mac.addr);
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_X550_vf:
case ixgbe_mac_X550EM_x_vf:
case ixgbe_mac_X550EM_a_vf:
@@ -522,7 +522,7 @@
static int
ixv_if_attach_post(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
int error = 0;
@@ -534,9 +534,9 @@
}
/* Do the stats setup */
- ixv_save_stats(adapter);
- ixv_init_stats(adapter);
- ixv_add_stats_sysctls(adapter);
+ ixv_save_stats(sc);
+ ixv_init_stats(sc);
+ ixv_add_stats_sysctls(sc);
end:
return error;
@@ -567,7 +567,7 @@
static int
ixv_if_mtu_set(if_ctx_t ctx, uint32_t mtu)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
int error = 0;
@@ -576,7 +576,7 @@
error = EINVAL;
} else {
ifp->if_mtu = mtu;
- adapter->max_frame_size = ifp->if_mtu + IXGBE_MTU_HDR;
+ sc->max_frame_size = ifp->if_mtu + IXGBE_MTU_HDR;
}
return error;
@@ -595,10 +595,10 @@
static void
ixv_if_init(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifnet *ifp = iflib_get_ifp(ctx);
device_t dev = iflib_get_dev(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
int error = 0;
INIT_DEBUGOUT("ixv_if_init: begin");
@@ -615,7 +615,7 @@
/* Reset VF and renegotiate mailbox API version */
hw->mac.ops.reset_hw(hw);
hw->mac.ops.start_hw(hw);
- error = ixv_negotiate_api(adapter);
+ error = ixv_negotiate_api(sc);
if (error) {
device_printf(dev,
"Mailbox API negotiation failed in if_init!\n");
@@ -627,7 +627,7 @@
/* Setup Multicast table */
ixv_if_multi_set(ctx);
- adapter->rx_mbuf_sz = iflib_get_rx_mbuf_sz(ctx);
+ sc->rx_mbuf_sz = iflib_get_rx_mbuf_sz(ctx);
/* Configure RX settings */
ixv_initialize_receive_units(ctx);
@@ -636,19 +636,19 @@
ixv_setup_vlan_support(ctx);
/* Set up MSI-X routing */
- ixv_configure_ivars(adapter);
+ ixv_configure_ivars(sc);
/* Set up auto-mask */
IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, IXGBE_EICS_RTX_QUEUE);
/* Set moderation on the Link interrupt */
- IXGBE_WRITE_REG(hw, IXGBE_VTEITR(adapter->vector), IXGBE_LINK_ITR);
+ IXGBE_WRITE_REG(hw, IXGBE_VTEITR(sc->vector), IXGBE_LINK_ITR);
/* Stats init */
- ixv_init_stats(adapter);
+ ixv_init_stats(sc);
/* Config/Enable Link */
- hw->mac.ops.check_link(hw, &adapter->link_speed, &adapter->link_up,
+ hw->mac.ops.check_link(hw, &sc->link_speed, &sc->link_up,
false);
/* And now turn on interrupts */
@@ -661,9 +661,9 @@
* ixv_enable_queue
************************************************************************/
static inline void
-ixv_enable_queue(struct adapter *adapter, u32 vector)
+ixv_enable_queue(struct ixgbe_softc *sc, u32 vector)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 queue = 1 << vector;
u32 mask;
@@ -675,9 +675,9 @@
* ixv_disable_queue
************************************************************************/
static inline void
-ixv_disable_queue(struct adapter *adapter, u32 vector)
+ixv_disable_queue(struct ixgbe_softc *sc, u32 vector)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u64 queue = (u64)(1 << vector);
u32 mask;
@@ -693,9 +693,9 @@
ixv_msix_que(void *arg)
{
struct ix_rx_queue *que = arg;
- struct adapter *adapter = que->adapter;
+ struct ixgbe_softc *sc = que->sc;
- ixv_disable_queue(adapter, que->msix);
+ ixv_disable_queue(sc, que->msix);
++que->irqs;
return (FILTER_SCHEDULE_THREAD);
@@ -707,11 +707,11 @@
static int
ixv_msix_mbx(void *arg)
{
- struct adapter *adapter = arg;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = arg;
+ struct ixgbe_hw *hw = &sc->hw;
u32 reg;
- ++adapter->link_irq;
+ ++sc->link_irq;
/* First get the cause */
reg = IXGBE_READ_REG(hw, IXGBE_VTEICS);
@@ -720,7 +720,7 @@
/* Link status change */
if (reg & IXGBE_EICR_LSC)
- iflib_admin_intr_deferred(adapter->ctx);
+ iflib_admin_intr_deferred(sc->ctx);
IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, IXGBE_EIMS_OTHER);
@@ -736,7 +736,7 @@
static void
ixv_if_media_status(if_ctx_t ctx, struct ifmediareq * ifmr)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
INIT_DEBUGOUT("ixv_media_status: begin");
@@ -745,12 +745,12 @@
ifmr->ifm_status = IFM_AVALID;
ifmr->ifm_active = IFM_ETHER;
- if (!adapter->link_active)
+ if (!sc->link_active)
return;
ifmr->ifm_status |= IFM_ACTIVE;
- switch (adapter->link_speed) {
+ switch (sc->link_speed) {
case IXGBE_LINK_SPEED_1GB_FULL:
ifmr->ifm_active |= IFM_1000_T | IFM_FDX;
break;
@@ -775,7 +775,7 @@
static int
ixv_if_media_change(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ifmedia *ifm = iflib_get_media(ctx);
INIT_DEBUGOUT("ixv_media_change: begin");
@@ -787,7 +787,7 @@
case IFM_AUTO:
break;
default:
- device_printf(adapter->dev, "Only auto media type\n");
+ device_printf(sc->dev, "Only auto media type\n");
return (EINVAL);
}
@@ -802,9 +802,9 @@
* start with the most featured API first.
************************************************************************/
static int
-ixv_negotiate_api(struct adapter *adapter)
+ixv_negotiate_api(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
int mbx_api[] = { ixgbe_mbox_api_11,
ixgbe_mbox_api_10,
ixgbe_mbox_api_unknown };
@@ -829,7 +829,7 @@
ixv_if_multi_set(if_ctx_t ctx)
{
u8 mta[MAX_NUM_MULTICAST_ADDRESSES * IXGBE_ETH_LENGTH_OF_ADDRESS];
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
u8 *update_ptr;
struct ifmultiaddr *ifma;
if_t ifp = iflib_get_ifp(ctx);
@@ -848,7 +848,7 @@
update_ptr = mta;
- adapter->hw.mac.ops.update_mc_addr_list(&adapter->hw, update_ptr, mcnt,
+ sc->hw.mac.ops.update_mc_addr_list(&sc->hw, update_ptr, mcnt,
ixv_mc_array_itr, true);
} /* ixv_if_multi_set */
@@ -899,42 +899,42 @@
static void
ixv_if_update_admin_status(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
s32 status;
- adapter->hw.mac.get_link_status = true;
+ sc->hw.mac.get_link_status = true;
- status = ixgbe_check_link(&adapter->hw, &adapter->link_speed,
- &adapter->link_up, false);
+ status = ixgbe_check_link(&sc->hw, &sc->link_speed,
+ &sc->link_up, false);
- if (status != IXGBE_SUCCESS && adapter->hw.adapter_stopped == false) {
+ if (status != IXGBE_SUCCESS && sc->hw.adapter_stopped == false) {
/* Mailbox's Clear To Send status is lost or timeout occurred.
* We need reinitialization. */
iflib_get_ifp(ctx)->if_init(ctx);
}
- if (adapter->link_up) {
- if (adapter->link_active == false) {
+ if (sc->link_up) {
+ if (sc->link_active == false) {
if (bootverbose)
device_printf(dev, "Link is up %d Gbps %s \n",
- ((adapter->link_speed == 128) ? 10 : 1),
+ ((sc->link_speed == 128) ? 10 : 1),
"Full Duplex");
- adapter->link_active = true;
+ sc->link_active = true;
iflib_link_state_change(ctx, LINK_STATE_UP,
IF_Gbps(10));
}
} else { /* Link down */
- if (adapter->link_active == true) {
+ if (sc->link_active == true) {
if (bootverbose)
device_printf(dev, "Link is Down\n");
iflib_link_state_change(ctx, LINK_STATE_DOWN, 0);
- adapter->link_active = false;
+ sc->link_active = false;
}
}
/* Stats Update */
- ixv_update_stats(adapter);
+ ixv_update_stats(sc);
} /* ixv_if_update_admin_status */
@@ -947,19 +947,19 @@
static void
ixv_if_stop(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
INIT_DEBUGOUT("ixv_stop: begin\n");
ixv_if_disable_intr(ctx);
hw->mac.ops.reset_hw(hw);
- adapter->hw.adapter_stopped = false;
+ sc->hw.adapter_stopped = false;
hw->mac.ops.stop_adapter(hw);
/* Update the stack */
- adapter->link_up = false;
+ sc->link_up = false;
ixv_if_update_admin_status(ctx);
/* reprogram the RAR[0] in case user changed it. */
@@ -973,9 +973,9 @@
static void
ixv_identify_hardware(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
/* Save off the information about this board */
hw->vendor_id = pci_get_vendor(dev);
@@ -1014,14 +1014,14 @@
static int
ixv_if_msix_intr_assign(if_ctx_t ctx, int msix)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
- struct ix_rx_queue *rx_que = adapter->rx_queues;
+ struct ix_rx_queue *rx_que = sc->rx_queues;
struct ix_tx_queue *tx_que;
int error, rid, vector = 0;
char buf[16];
- for (int i = 0; i < adapter->num_rx_queues; i++, vector++, rx_que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, vector++, rx_que++) {
rid = vector + 1;
snprintf(buf, sizeof(buf), "rxq%d", i);
@@ -1031,31 +1031,31 @@
if (error) {
device_printf(iflib_get_dev(ctx),
"Failed to allocate que int %d err: %d", i, error);
- adapter->num_rx_queues = i + 1;
+ sc->num_rx_queues = i + 1;
goto fail;
}
rx_que->msix = vector;
}
- for (int i = 0; i < adapter->num_tx_queues; i++) {
+ for (int i = 0; i < sc->num_tx_queues; i++) {
snprintf(buf, sizeof(buf), "txq%d", i);
- tx_que = &adapter->tx_queues[i];
- tx_que->msix = i % adapter->num_rx_queues;
+ tx_que = &sc->tx_queues[i];
+ tx_que->msix = i % sc->num_rx_queues;
iflib_softirq_alloc_generic(ctx,
- &adapter->rx_queues[tx_que->msix].que_irq,
+ &sc->rx_queues[tx_que->msix].que_irq,
IFLIB_INTR_TX, tx_que, tx_que->txr.me, buf);
}
rid = vector + 1;
- error = iflib_irq_alloc_generic(ctx, &adapter->irq, rid,
- IFLIB_INTR_ADMIN, ixv_msix_mbx, adapter, 0, "aq");
+ error = iflib_irq_alloc_generic(ctx, &sc->irq, rid,
+ IFLIB_INTR_ADMIN, ixv_msix_mbx, sc, 0, "aq");
if (error) {
device_printf(iflib_get_dev(ctx),
"Failed to register admin handler");
return (error);
}
- adapter->vector = vector;
+ sc->vector = vector;
/*
* Due to a broken design QEMU will fail to properly
* enable the guest for MSIX unless the vectors in
@@ -1063,7 +1063,7 @@
* ENABLE in the MSIX control register again at this
* point to cause it to successfully initialize us.
*/
- if (adapter->hw.mac.type == ixgbe_mac_82599_vf) {
+ if (sc->hw.mac.type == ixgbe_mac_82599_vf) {
int msix_ctrl;
pci_find_cap(dev, PCIY_MSIX, &rid);
rid += PCIR_MSIX_CTRL;
@@ -1075,9 +1075,9 @@
return (0);
fail:
- iflib_irq_free(ctx, &adapter->irq);
- rx_que = adapter->rx_queues;
- for (int i = 0; i < adapter->num_rx_queues; i++, rx_que++)
+ iflib_irq_free(ctx, &sc->irq);
+ rx_que = sc->rx_queues;
+ for (int i = 0; i < sc->num_rx_queues; i++, rx_que++)
iflib_irq_free(ctx, &rx_que->que_irq);
return (error);
@@ -1089,23 +1089,23 @@
static int
ixv_allocate_pci_resources(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
device_t dev = iflib_get_dev(ctx);
int rid;
rid = PCIR_BAR(0);
- adapter->pci_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+ sc->pci_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
RF_ACTIVE);
- if (!(adapter->pci_mem)) {
+ if (!(sc->pci_mem)) {
device_printf(dev, "Unable to allocate bus resource: memory\n");
return (ENXIO);
}
- adapter->osdep.mem_bus_space_tag = rman_get_bustag(adapter->pci_mem);
- adapter->osdep.mem_bus_space_handle =
- rman_get_bushandle(adapter->pci_mem);
- adapter->hw.hw_addr = (u8 *)&adapter->osdep.mem_bus_space_handle;
+ sc->osdep.mem_bus_space_tag = rman_get_bustag(sc->pci_mem);
+ sc->osdep.mem_bus_space_handle =
+ rman_get_bushandle(sc->pci_mem);
+ sc->hw.hw_addr = (u8 *)&sc->osdep.mem_bus_space_handle;
return (0);
} /* ixv_allocate_pci_resources */
@@ -1116,23 +1116,23 @@
static void
ixv_free_pci_resources(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_rx_queue *que = sc->rx_queues;
device_t dev = iflib_get_dev(ctx);
/* Release all MSI-X queue resources */
- if (adapter->intr_type == IFLIB_INTR_MSIX)
- iflib_irq_free(ctx, &adapter->irq);
+ if (sc->intr_type == IFLIB_INTR_MSIX)
+ iflib_irq_free(ctx, &sc->irq);
if (que != NULL) {
- for (int i = 0; i < adapter->num_rx_queues; i++, que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, que++) {
iflib_irq_free(ctx, &que->que_irq);
}
}
- if (adapter->pci_mem != NULL)
+ if (sc->pci_mem != NULL)
bus_release_resource(dev, SYS_RES_MEMORY,
- rman_get_rid(adapter->pci_mem), adapter->pci_mem);
+ rman_get_rid(sc->pci_mem), sc->pci_mem);
} /* ixv_free_pci_resources */
/************************************************************************
@@ -1143,8 +1143,8 @@
static int
ixv_setup_interface(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- if_softc_ctx_t scctx = adapter->shared;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ if_softc_ctx_t scctx = sc->shared;
struct ifnet *ifp = iflib_get_ifp(ctx);
INIT_DEBUGOUT("ixv_setup_interface: begin");
@@ -1153,9 +1153,9 @@
ifp->if_snd.ifq_maxlen = scctx->isc_ntxd[0] - 2;
- adapter->max_frame_size = ifp->if_mtu + IXGBE_MTU_HDR;
- ifmedia_add(adapter->media, IFM_ETHER | IFM_AUTO, 0, NULL);
- ifmedia_set(adapter->media, IFM_ETHER | IFM_AUTO);
+ sc->max_frame_size = ifp->if_mtu + IXGBE_MTU_HDR;
+ ifmedia_add(sc->media, IFM_ETHER | IFM_AUTO, 0, NULL);
+ ifmedia_set(sc->media, IFM_ETHER | IFM_AUTO);
return 0;
} /* ixv_setup_interface */
@@ -1166,20 +1166,20 @@
static uint64_t
ixv_if_get_counter(if_ctx_t ctx, ift_counter cnt)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
if_t ifp = iflib_get_ifp(ctx);
switch (cnt) {
case IFCOUNTER_IPACKETS:
- return (adapter->ipackets);
+ return (sc->ipackets);
case IFCOUNTER_OPACKETS:
- return (adapter->opackets);
+ return (sc->opackets);
case IFCOUNTER_IBYTES:
- return (adapter->ibytes);
+ return (sc->ibytes);
case IFCOUNTER_OBYTES:
- return (adapter->obytes);
+ return (sc->obytes);
case IFCOUNTER_IMCASTS:
- return (adapter->imcasts);
+ return (sc->imcasts);
default:
return (if_get_counter_default(ifp, cnt));
}
@@ -1210,13 +1210,13 @@
static void
ixv_initialize_transmit_units(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
- if_softc_ctx_t scctx = adapter->shared;
- struct ix_tx_queue *que = adapter->tx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
+ if_softc_ctx_t scctx = sc->shared;
+ struct ix_tx_queue *que = sc->tx_queues;
int i;
- for (i = 0; i < adapter->num_tx_queues; i++, que++) {
+ for (i = 0; i < sc->num_tx_queues; i++, que++) {
struct tx_ring *txr = &que->txr;
u64 tdba = txr->tx_paddr;
u32 txctrl, txdctl;
@@ -1228,8 +1228,8 @@
IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(j), txdctl);
/* Set the HW Tx Head and Tail indices */
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VFTDH(j), 0);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VFTDT(j), 0);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VFTDH(j), 0);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VFTDT(j), 0);
/* Set Tx Tail register */
txr->tail = IXGBE_VFTDT(j);
@@ -1267,15 +1267,15 @@
* ixv_initialize_rss_mapping
************************************************************************/
static void
-ixv_initialize_rss_mapping(struct adapter *adapter)
+ixv_initialize_rss_mapping(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 reta = 0, mrqc, rss_key[10];
int queue_id;
int i, j;
u32 rss_hash_config;
- if (adapter->feat_en & IXGBE_FEATURE_RSS) {
+ if (sc->feat_en & IXGBE_FEATURE_RSS) {
/* Fetch the configured RSS key */
rss_getkey((uint8_t *)&rss_key);
} else {
@@ -1289,17 +1289,17 @@
/* Set up the redirection table */
for (i = 0, j = 0; i < 64; i++, j++) {
- if (j == adapter->num_rx_queues)
+ if (j == sc->num_rx_queues)
j = 0;
- if (adapter->feat_en & IXGBE_FEATURE_RSS) {
+ if (sc->feat_en & IXGBE_FEATURE_RSS) {
/*
* Fetch the RSS bucket id for the given indirection
* entry. Cap it at the number of configured buckets
* (which is num_rx_queues.)
*/
queue_id = rss_get_indirection_to_bucket(i);
- queue_id = queue_id % adapter->num_rx_queues;
+ queue_id = queue_id % sc->num_rx_queues;
} else
queue_id = j;
@@ -1316,7 +1316,7 @@
}
/* Perform hash on these packet types */
- if (adapter->feat_en & IXGBE_FEATURE_RSS)
+ if (sc->feat_en & IXGBE_FEATURE_RSS)
rss_hash_config = rss_gethashconfig();
else {
/*
@@ -1340,17 +1340,17 @@
if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6)
mrqc |= IXGBE_MRQC_RSS_FIELD_IPV6_TCP;
if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6_EX)
- device_printf(adapter->dev, "%s: RSS_HASHTYPE_RSS_IPV6_EX defined, but not supported\n",
+ device_printf(sc->dev, "%s: RSS_HASHTYPE_RSS_IPV6_EX defined, but not supported\n",
__func__);
if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6_EX)
- device_printf(adapter->dev, "%s: RSS_HASHTYPE_RSS_TCP_IPV6_EX defined, but not supported\n",
+ device_printf(sc->dev, "%s: RSS_HASHTYPE_RSS_TCP_IPV6_EX defined, but not supported\n",
__func__);
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV4)
mrqc |= IXGBE_MRQC_RSS_FIELD_IPV4_UDP;
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6)
mrqc |= IXGBE_MRQC_RSS_FIELD_IPV6_UDP;
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6_EX)
- device_printf(adapter->dev, "%s: RSS_HASHTYPE_RSS_UDP_IPV6_EX defined, but not supported\n",
+ device_printf(sc->dev, "%s: RSS_HASHTYPE_RSS_UDP_IPV6_EX defined, but not supported\n",
__func__);
IXGBE_WRITE_REG(hw, IXGBE_VFMRQC, mrqc);
} /* ixv_initialize_rss_mapping */
@@ -1362,11 +1362,11 @@
static void
ixv_initialize_receive_units(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
if_softc_ctx_t scctx;
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
struct ifnet *ifp = iflib_get_ifp(ctx);
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ix_rx_queue *que = sc->rx_queues;
u32 bufsz, psrtype;
if (ifp->if_mtu > ETHERMTU)
@@ -1380,18 +1380,18 @@
| IXGBE_PSRTYPE_IPV6HDR
| IXGBE_PSRTYPE_L2HDR;
- if (adapter->num_rx_queues > 1)
+ if (sc->num_rx_queues > 1)
psrtype |= 1 << 29;
IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, psrtype);
/* Tell PF our max_frame size */
- if (ixgbevf_rlpml_set_vf(hw, adapter->max_frame_size) != 0) {
- device_printf(adapter->dev, "There is a problem with the PF setup. It is likely the receive unit for this VF will not function correctly.\n");
+ if (ixgbevf_rlpml_set_vf(hw, sc->max_frame_size) != 0) {
+ device_printf(sc->dev, "There is a problem with the PF setup. It is likely the receive unit for this VF will not function correctly.\n");
}
- scctx = adapter->shared;
+ scctx = sc->shared;
- for (int i = 0; i < adapter->num_rx_queues; i++, que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, que++) {
struct rx_ring *rxr = &que->rxr;
u64 rdba = rxr->rx_paddr;
u32 reg, rxdctl;
@@ -1476,8 +1476,8 @@
* Do not touch RSS and RETA settings for older hardware
* as those are shared among PF and all VF.
*/
- if (adapter->hw.mac.type >= ixgbe_mac_X550_vf)
- ixv_initialize_rss_mapping(adapter);
+ if (sc->hw.mac.type >= ixgbe_mac_X550_vf)
+ ixv_initialize_rss_mapping(sc);
} /* ixv_initialize_receive_units */
/************************************************************************
@@ -1487,8 +1487,8 @@
ixv_setup_vlan_support(if_ctx_t ctx)
{
struct ifnet *ifp = iflib_get_ifp(ctx);
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
u32 ctrl, vid, vfta, retry;
/*
@@ -1497,12 +1497,12 @@
* the VFTA and other state, so if there
* have been no vlan's registered do nothing.
*/
- if (adapter->num_vlans == 0)
+ if (sc->num_vlans == 0)
return;
if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
/* Enable the queues */
- for (int i = 0; i < adapter->num_rx_queues; i++) {
+ for (int i = 0; i < sc->num_rx_queues; i++) {
ctrl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(i));
ctrl |= IXGBE_RXDCTL_VME;
IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(i), ctrl);
@@ -1510,7 +1510,7 @@
* Let Rx path know that it needs to store VLAN tag
* as part of extra mbuf info.
*/
- adapter->rx_queues[i].rxr.vtag_strip = true;
+ sc->rx_queues[i].rxr.vtag_strip = true;
}
}
@@ -1559,13 +1559,13 @@
static void
ixv_if_register_vlan(if_ctx_t ctx, u16 vtag)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
u16 index, bit;
index = (vtag >> 5) & 0x7F;
bit = vtag & 0x1F;
ixv_shadow_vfta[index] |= (1 << bit);
- ++adapter->num_vlans;
+ ++sc->num_vlans;
} /* ixv_if_register_vlan */
/************************************************************************
@@ -1577,13 +1577,13 @@
static void
ixv_if_unregister_vlan(if_ctx_t ctx, u16 vtag)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
u16 index, bit;
index = (vtag >> 5) & 0x7F;
bit = vtag & 0x1F;
ixv_shadow_vfta[index] &= ~(1 << bit);
- --adapter->num_vlans;
+ --sc->num_vlans;
} /* ixv_if_unregister_vlan */
/************************************************************************
@@ -1592,9 +1592,9 @@
static void
ixv_if_enable_intr(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ixgbe_hw *hw = &adapter->hw;
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ixgbe_hw *hw = &sc->hw;
+ struct ix_rx_queue *que = sc->rx_queues;
u32 mask = (IXGBE_EIMS_ENABLE_MASK & ~IXGBE_EIMS_RTX_QUEUE);
IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, mask);
@@ -1603,8 +1603,8 @@
mask &= ~(IXGBE_EIMS_OTHER | IXGBE_EIMS_LSC);
IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, mask);
- for (int i = 0; i < adapter->num_rx_queues; i++, que++)
- ixv_enable_queue(adapter, que->msix);
+ for (int i = 0; i < sc->num_rx_queues; i++, que++)
+ ixv_enable_queue(sc, que->msix);
IXGBE_WRITE_FLUSH(hw);
} /* ixv_if_enable_intr */
@@ -1615,10 +1615,10 @@
static void
ixv_if_disable_intr(if_ctx_t ctx)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VTEIAC, 0);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VTEIMC, ~0);
- IXGBE_WRITE_FLUSH(&adapter->hw);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VTEIAC, 0);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VTEIMC, ~0);
+ IXGBE_WRITE_FLUSH(&sc->hw);
} /* ixv_if_disable_intr */
/************************************************************************
@@ -1627,10 +1627,10 @@
static int
ixv_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid)
{
- struct adapter *adapter = iflib_get_softc(ctx);
- struct ix_rx_queue *que = &adapter->rx_queues[rxqid];
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
+ struct ix_rx_queue *que = &sc->rx_queues[rxqid];
- ixv_enable_queue(adapter, que->rxr.me);
+ ixv_enable_queue(sc, que->rxr.me);
return (0);
} /* ixv_if_rx_queue_intr_enable */
@@ -1644,9 +1644,9 @@
* - type is RX/TX/MISC
************************************************************************/
static void
-ixv_set_ivar(struct adapter *adapter, u8 entry, u8 vector, s8 type)
+ixv_set_ivar(struct ixgbe_softc *sc, u8 entry, u8 vector, s8 type)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
u32 ivar, index;
vector |= IXGBE_IVAR_ALLOC_VAL;
@@ -1669,24 +1669,24 @@
* ixv_configure_ivars
************************************************************************/
static void
-ixv_configure_ivars(struct adapter *adapter)
+ixv_configure_ivars(struct ixgbe_softc *sc)
{
- struct ix_rx_queue *que = adapter->rx_queues;
+ struct ix_rx_queue *que = sc->rx_queues;
- MPASS(adapter->num_rx_queues == adapter->num_tx_queues);
+ MPASS(sc->num_rx_queues == sc->num_tx_queues);
- for (int i = 0; i < adapter->num_rx_queues; i++, que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, que++) {
/* First the RX queue entry */
- ixv_set_ivar(adapter, i, que->msix, 0);
+ ixv_set_ivar(sc, i, que->msix, 0);
/* ... and the TX */
- ixv_set_ivar(adapter, i, que->msix, 1);
+ ixv_set_ivar(sc, i, que->msix, 1);
/* Set an initial value in EITR */
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VTEITR(que->msix),
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VTEITR(que->msix),
IXGBE_EITR_DEFAULT);
}
/* For the mailbox interrupt */
- ixv_set_ivar(adapter, 1, adapter->vector, -1);
+ ixv_set_ivar(sc, 1, sc->vector, -1);
} /* ixv_configure_ivars */
/************************************************************************
@@ -1698,19 +1698,19 @@
* it were.
************************************************************************/
static void
-ixv_save_stats(struct adapter *adapter)
+ixv_save_stats(struct ixgbe_softc *sc)
{
- if (adapter->stats.vf.vfgprc || adapter->stats.vf.vfgptc) {
- adapter->stats.vf.saved_reset_vfgprc +=
- adapter->stats.vf.vfgprc - adapter->stats.vf.base_vfgprc;
- adapter->stats.vf.saved_reset_vfgptc +=
- adapter->stats.vf.vfgptc - adapter->stats.vf.base_vfgptc;
- adapter->stats.vf.saved_reset_vfgorc +=
- adapter->stats.vf.vfgorc - adapter->stats.vf.base_vfgorc;
- adapter->stats.vf.saved_reset_vfgotc +=
- adapter->stats.vf.vfgotc - adapter->stats.vf.base_vfgotc;
- adapter->stats.vf.saved_reset_vfmprc +=
- adapter->stats.vf.vfmprc - adapter->stats.vf.base_vfmprc;
+ if (sc->stats.vf.vfgprc || sc->stats.vf.vfgptc) {
+ sc->stats.vf.saved_reset_vfgprc +=
+ sc->stats.vf.vfgprc - sc->stats.vf.base_vfgprc;
+ sc->stats.vf.saved_reset_vfgptc +=
+ sc->stats.vf.vfgptc - sc->stats.vf.base_vfgptc;
+ sc->stats.vf.saved_reset_vfgorc +=
+ sc->stats.vf.vfgorc - sc->stats.vf.base_vfgorc;
+ sc->stats.vf.saved_reset_vfgotc +=
+ sc->stats.vf.vfgotc - sc->stats.vf.base_vfgotc;
+ sc->stats.vf.saved_reset_vfmprc +=
+ sc->stats.vf.vfmprc - sc->stats.vf.base_vfmprc;
}
} /* ixv_save_stats */
@@ -1718,27 +1718,27 @@
* ixv_init_stats
************************************************************************/
static void
-ixv_init_stats(struct adapter *adapter)
+ixv_init_stats(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
- adapter->stats.vf.last_vfgprc = IXGBE_READ_REG(hw, IXGBE_VFGPRC);
- adapter->stats.vf.last_vfgorc = IXGBE_READ_REG(hw, IXGBE_VFGORC_LSB);
- adapter->stats.vf.last_vfgorc |=
+ sc->stats.vf.last_vfgprc = IXGBE_READ_REG(hw, IXGBE_VFGPRC);
+ sc->stats.vf.last_vfgorc = IXGBE_READ_REG(hw, IXGBE_VFGORC_LSB);
+ sc->stats.vf.last_vfgorc |=
(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGORC_MSB))) << 32);
- adapter->stats.vf.last_vfgptc = IXGBE_READ_REG(hw, IXGBE_VFGPTC);
- adapter->stats.vf.last_vfgotc = IXGBE_READ_REG(hw, IXGBE_VFGOTC_LSB);
- adapter->stats.vf.last_vfgotc |=
+ sc->stats.vf.last_vfgptc = IXGBE_READ_REG(hw, IXGBE_VFGPTC);
+ sc->stats.vf.last_vfgotc = IXGBE_READ_REG(hw, IXGBE_VFGOTC_LSB);
+ sc->stats.vf.last_vfgotc |=
(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGOTC_MSB))) << 32);
- adapter->stats.vf.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC);
+ sc->stats.vf.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC);
- adapter->stats.vf.base_vfgprc = adapter->stats.vf.last_vfgprc;
- adapter->stats.vf.base_vfgorc = adapter->stats.vf.last_vfgorc;
- adapter->stats.vf.base_vfgptc = adapter->stats.vf.last_vfgptc;
- adapter->stats.vf.base_vfgotc = adapter->stats.vf.last_vfgotc;
- adapter->stats.vf.base_vfmprc = adapter->stats.vf.last_vfmprc;
+ sc->stats.vf.base_vfgprc = sc->stats.vf.last_vfgprc;
+ sc->stats.vf.base_vfgorc = sc->stats.vf.last_vfgorc;
+ sc->stats.vf.base_vfgptc = sc->stats.vf.last_vfgptc;
+ sc->stats.vf.base_vfgotc = sc->stats.vf.last_vfgotc;
+ sc->stats.vf.base_vfmprc = sc->stats.vf.last_vfmprc;
} /* ixv_init_stats */
#define UPDATE_STAT_32(reg, last, count) \
@@ -1767,43 +1767,43 @@
* ixv_update_stats - Update the board statistics counters.
************************************************************************/
void
-ixv_update_stats(struct adapter *adapter)
+ixv_update_stats(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
- struct ixgbevf_hw_stats *stats = &adapter->stats.vf;
+ struct ixgbe_hw *hw = &sc->hw;
+ struct ixgbevf_hw_stats *stats = &sc->stats.vf;
- UPDATE_STAT_32(IXGBE_VFGPRC, adapter->stats.vf.last_vfgprc,
- adapter->stats.vf.vfgprc);
- UPDATE_STAT_32(IXGBE_VFGPTC, adapter->stats.vf.last_vfgptc,
- adapter->stats.vf.vfgptc);
+ UPDATE_STAT_32(IXGBE_VFGPRC, sc->stats.vf.last_vfgprc,
+ sc->stats.vf.vfgprc);
+ UPDATE_STAT_32(IXGBE_VFGPTC, sc->stats.vf.last_vfgptc,
+ sc->stats.vf.vfgptc);
UPDATE_STAT_36(IXGBE_VFGORC_LSB, IXGBE_VFGORC_MSB,
- adapter->stats.vf.last_vfgorc, adapter->stats.vf.vfgorc);
+ sc->stats.vf.last_vfgorc, sc->stats.vf.vfgorc);
UPDATE_STAT_36(IXGBE_VFGOTC_LSB, IXGBE_VFGOTC_MSB,
- adapter->stats.vf.last_vfgotc, adapter->stats.vf.vfgotc);
- UPDATE_STAT_32(IXGBE_VFMPRC, adapter->stats.vf.last_vfmprc,
- adapter->stats.vf.vfmprc);
+ sc->stats.vf.last_vfgotc, sc->stats.vf.vfgotc);
+ UPDATE_STAT_32(IXGBE_VFMPRC, sc->stats.vf.last_vfmprc,
+ sc->stats.vf.vfmprc);
/* Fill out the OS statistics structure */
- IXGBE_SET_IPACKETS(adapter, stats->vfgprc);
- IXGBE_SET_OPACKETS(adapter, stats->vfgptc);
- IXGBE_SET_IBYTES(adapter, stats->vfgorc);
- IXGBE_SET_OBYTES(adapter, stats->vfgotc);
- IXGBE_SET_IMCASTS(adapter, stats->vfmprc);
+ IXGBE_SET_IPACKETS(sc, stats->vfgprc);
+ IXGBE_SET_OPACKETS(sc, stats->vfgptc);
+ IXGBE_SET_IBYTES(sc, stats->vfgorc);
+ IXGBE_SET_OBYTES(sc, stats->vfgotc);
+ IXGBE_SET_IMCASTS(sc, stats->vfmprc);
} /* ixv_update_stats */
/************************************************************************
* ixv_add_stats_sysctls - Add statistic sysctls for the VF.
************************************************************************/
static void
-ixv_add_stats_sysctls(struct adapter *adapter)
+ixv_add_stats_sysctls(struct ixgbe_softc *sc)
{
- device_t dev = adapter->dev;
- struct ix_tx_queue *tx_que = adapter->tx_queues;
- struct ix_rx_queue *rx_que = adapter->rx_queues;
+ device_t dev = sc->dev;
+ struct ix_tx_queue *tx_que = sc->tx_queues;
+ struct ix_rx_queue *rx_que = sc->rx_queues;
struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(dev);
struct sysctl_oid *tree = device_get_sysctl_tree(dev);
struct sysctl_oid_list *child = SYSCTL_CHILDREN(tree);
- struct ixgbevf_hw_stats *stats = &adapter->stats.vf;
+ struct ixgbevf_hw_stats *stats = &sc->stats.vf;
struct sysctl_oid *stat_node, *queue_node;
struct sysctl_oid_list *stat_list, *queue_list;
@@ -1812,11 +1812,11 @@
/* Driver Statistics */
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "watchdog_events",
- CTLFLAG_RD, &adapter->watchdog_events, "Watchdog timeouts");
+ CTLFLAG_RD, &sc->watchdog_events, "Watchdog timeouts");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
- CTLFLAG_RD, &adapter->link_irq, "Link MSI-X IRQ Handled");
+ CTLFLAG_RD, &sc->link_irq, "Link MSI-X IRQ Handled");
- for (int i = 0; i < adapter->num_tx_queues; i++, tx_que++) {
+ for (int i = 0; i < sc->num_tx_queues; i++, tx_que++) {
struct tx_ring *txr = &tx_que->txr;
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i);
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf,
@@ -1829,7 +1829,7 @@
CTLFLAG_RD, &(txr->total_packets), "TX Packets");
}
- for (int i = 0; i < adapter->num_rx_queues; i++, rx_que++) {
+ for (int i = 0; i < sc->num_rx_queues; i++, rx_que++) {
struct rx_ring *rxr = &rx_que->rxr;
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i);
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf,
@@ -1871,15 +1871,15 @@
* maintained by the driver and hardware.
************************************************************************/
static void
-ixv_print_debug_info(struct adapter *adapter)
+ixv_print_debug_info(struct ixgbe_softc *sc)
{
- device_t dev = adapter->dev;
- struct ixgbe_hw *hw = &adapter->hw;
+ device_t dev = sc->dev;
+ struct ixgbe_hw *hw = &sc->hw;
device_printf(dev, "Error Byte Count = %u \n",
IXGBE_READ_REG(hw, IXGBE_ERRBC));
- device_printf(dev, "MBX IRQ Handled: %lu\n", (long)adapter->link_irq);
+ device_printf(dev, "MBX IRQ Handled: %lu\n", (long)sc->link_irq);
} /* ixv_print_debug_info */
/************************************************************************
@@ -1888,8 +1888,8 @@
static int
ixv_sysctl_debug(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter;
- int error, result;
+ struct ixgbe_softc *sc;
+ int error, result;
result = -1;
error = sysctl_handle_int(oidp, &result, 0, req);
@@ -1898,8 +1898,8 @@
return (error);
if (result == 1) {
- adapter = (struct adapter *)arg1;
- ixv_print_debug_info(adapter);
+ sc = (struct ixgbe_softc *)arg1;
+ ixv_print_debug_info(sc);
}
return error;
@@ -1909,14 +1909,14 @@
* ixv_init_device_features
************************************************************************/
static void
-ixv_init_device_features(struct adapter *adapter)
+ixv_init_device_features(struct ixgbe_softc *sc)
{
- adapter->feat_cap = IXGBE_FEATURE_NETMAP
- | IXGBE_FEATURE_VF
- | IXGBE_FEATURE_LEGACY_TX;
+ sc->feat_cap = IXGBE_FEATURE_NETMAP
+ | IXGBE_FEATURE_VF
+ | IXGBE_FEATURE_LEGACY_TX;
/* A tad short on feature flags for VFs, atm. */
- switch (adapter->hw.mac.type) {
+ switch (sc->hw.mac.type) {
case ixgbe_mac_82599_vf:
break;
case ixgbe_mac_X540_vf:
@@ -1924,8 +1924,8 @@
case ixgbe_mac_X550_vf:
case ixgbe_mac_X550EM_x_vf:
case ixgbe_mac_X550EM_a_vf:
- adapter->feat_cap |= IXGBE_FEATURE_NEEDS_CTXD;
- adapter->feat_cap |= IXGBE_FEATURE_RSS;
+ sc->feat_cap |= IXGBE_FEATURE_NEEDS_CTXD;
+ sc->feat_cap |= IXGBE_FEATURE_RSS;
break;
default:
break;
@@ -1933,16 +1933,16 @@
/* Enabled by default... */
/* Is a virtual function (VF) */
- if (adapter->feat_cap & IXGBE_FEATURE_VF)
- adapter->feat_en |= IXGBE_FEATURE_VF;
+ if (sc->feat_cap & IXGBE_FEATURE_VF)
+ sc->feat_en |= IXGBE_FEATURE_VF;
/* Netmap */
- if (adapter->feat_cap & IXGBE_FEATURE_NETMAP)
- adapter->feat_en |= IXGBE_FEATURE_NETMAP;
+ if (sc->feat_cap & IXGBE_FEATURE_NETMAP)
+ sc->feat_en |= IXGBE_FEATURE_NETMAP;
/* Receive-Side Scaling (RSS) */
- if (adapter->feat_cap & IXGBE_FEATURE_RSS)
- adapter->feat_en |= IXGBE_FEATURE_RSS;
+ if (sc->feat_cap & IXGBE_FEATURE_RSS)
+ sc->feat_en |= IXGBE_FEATURE_RSS;
/* Needs advanced context descriptor regardless of offloads req'd */
- if (adapter->feat_cap & IXGBE_FEATURE_NEEDS_CTXD)
- adapter->feat_en |= IXGBE_FEATURE_NEEDS_CTXD;
+ if (sc->feat_cap & IXGBE_FEATURE_NEEDS_CTXD)
+ sc->feat_en |= IXGBE_FEATURE_NEEDS_CTXD;
} /* ixv_init_device_features */
diff --git a/sys/dev/ixgbe/if_sriov.c b/sys/dev/ixgbe/if_sriov.c
--- a/sys/dev/ixgbe/if_sriov.c
+++ b/sys/dev/ixgbe/if_sriov.c
@@ -78,51 +78,51 @@
* ixgbe_align_all_queue_indices
************************************************************************/
inline void
-ixgbe_align_all_queue_indices(struct adapter *adapter)
+ixgbe_align_all_queue_indices(struct ixgbe_softc *sc)
{
int i;
int index;
- for (i = 0; i < adapter->num_rx_queues; i++) {
- index = ixgbe_vf_que_index(adapter->iov_mode, adapter->pool, i);
- adapter->rx_queues[i].rxr.me = index;
+ for (i = 0; i < sc->num_rx_queues; i++) {
+ index = ixgbe_vf_que_index(sc->iov_mode, sc->pool, i);
+ sc->rx_queues[i].rxr.me = index;
}
- for (i = 0; i < adapter->num_tx_queues; i++) {
- index = ixgbe_vf_que_index(adapter->iov_mode, adapter->pool, i);
- adapter->tx_queues[i].txr.me = index;
+ for (i = 0; i < sc->num_tx_queues; i++) {
+ index = ixgbe_vf_que_index(sc->iov_mode, sc->pool, i);
+ sc->tx_queues[i].txr.me = index;
}
}
/* Support functions for SR-IOV/VF management */
static inline void
-ixgbe_send_vf_msg(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
+ixgbe_send_vf_msg(struct ixgbe_softc *sc, struct ixgbe_vf *vf, u32 msg)
{
if (vf->flags & IXGBE_VF_CTS)
msg |= IXGBE_VT_MSGTYPE_CTS;
- adapter->hw.mbx.ops.write(&adapter->hw, &msg, 1, vf->pool);
+ sc->hw.mbx.ops.write(&sc->hw, &msg, 1, vf->pool);
}
static inline void
-ixgbe_send_vf_ack(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
+ixgbe_send_vf_ack(struct ixgbe_softc *sc, struct ixgbe_vf *vf, u32 msg)
{
msg &= IXGBE_VT_MSG_MASK;
- ixgbe_send_vf_msg(adapter, vf, msg | IXGBE_VT_MSGTYPE_ACK);
+ ixgbe_send_vf_msg(sc, vf, msg | IXGBE_VT_MSGTYPE_ACK);
}
static inline void
-ixgbe_send_vf_nack(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
+ixgbe_send_vf_nack(struct ixgbe_softc *sc, struct ixgbe_vf *vf, u32 msg)
{
msg &= IXGBE_VT_MSG_MASK;
- ixgbe_send_vf_msg(adapter, vf, msg | IXGBE_VT_MSGTYPE_NACK);
+ ixgbe_send_vf_msg(sc, vf, msg | IXGBE_VT_MSGTYPE_NACK);
}
static inline void
-ixgbe_process_vf_ack(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_process_vf_ack(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
if (!(vf->flags & IXGBE_VF_CTS))
- ixgbe_send_vf_nack(adapter, vf, 0);
+ ixgbe_send_vf_nack(sc, vf, 0);
}
static inline boolean_t
@@ -152,10 +152,10 @@
}
static inline void
-ixgbe_update_max_frame(struct adapter * adapter, int max_frame)
+ixgbe_update_max_frame(struct ixgbe_softc * sc, int max_frame)
{
- if (adapter->max_frame_size < max_frame)
- adapter->max_frame_size = max_frame;
+ if (sc->max_frame_size < max_frame)
+ sc->max_frame_size = max_frame;
}
inline u32
@@ -204,26 +204,26 @@
}
void
-ixgbe_ping_all_vfs(struct adapter *adapter)
+ixgbe_ping_all_vfs(struct ixgbe_softc *sc)
{
struct ixgbe_vf *vf;
- for (int i = 0; i < adapter->num_vfs; i++) {
- vf = &adapter->vfs[i];
+ for (int i = 0; i < sc->num_vfs; i++) {
+ vf = &sc->vfs[i];
if (vf->flags & IXGBE_VF_ACTIVE)
- ixgbe_send_vf_msg(adapter, vf, IXGBE_PF_CONTROL_MSG);
+ ixgbe_send_vf_msg(sc, vf, IXGBE_PF_CONTROL_MSG);
}
} /* ixgbe_ping_all_vfs */
static void
-ixgbe_vf_set_default_vlan(struct adapter *adapter, struct ixgbe_vf *vf,
+ixgbe_vf_set_default_vlan(struct ixgbe_softc *sc, struct ixgbe_vf *vf,
uint16_t tag)
{
struct ixgbe_hw *hw;
uint32_t vmolr, vmvir;
- hw = &adapter->hw;
+ hw = &sc->hw;
vf->vlan_tag = tag;
@@ -257,7 +257,7 @@
static boolean_t
-ixgbe_vf_frame_size_compatible(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_vf_frame_size_compatible(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
/*
@@ -265,7 +265,7 @@
* 82599-based cards. X540 and later support any combination of jumbo
* frames on PFs and VFs.
*/
- if (adapter->hw.mac.type != ixgbe_mac_82599EB)
+ if (sc->hw.mac.type != ixgbe_mac_82599EB)
return (true);
switch (vf->api_ver) {
@@ -275,7 +275,7 @@
* On legacy (1.0 and older) VF versions, we don't support jumbo
* frames on either the PF or the VF.
*/
- if (adapter->max_frame_size > ETHER_MAX_LEN ||
+ if (sc->max_frame_size > ETHER_MAX_LEN ||
vf->maximum_frame_size > ETHER_MAX_LEN)
return (false);
@@ -295,7 +295,7 @@
* Jumbo frames only work with VFs if the PF is also using jumbo
* frames.
*/
- if (adapter->max_frame_size <= ETHER_MAX_LEN)
+ if (sc->max_frame_size <= ETHER_MAX_LEN)
return (true);
return (false);
@@ -304,25 +304,25 @@
static void
-ixgbe_process_vf_reset(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_process_vf_reset(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
- ixgbe_vf_set_default_vlan(adapter, vf, vf->default_vlan);
+ ixgbe_vf_set_default_vlan(sc, vf, vf->default_vlan);
// XXX clear multicast addresses
- ixgbe_clear_rar(&adapter->hw, vf->rar_index);
+ ixgbe_clear_rar(&sc->hw, vf->rar_index);
vf->api_ver = IXGBE_API_VER_UNKNOWN;
} /* ixgbe_process_vf_reset */
static void
-ixgbe_vf_enable_transmit(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_vf_enable_transmit(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
struct ixgbe_hw *hw;
uint32_t vf_index, vfte;
- hw = &adapter->hw;
+ hw = &sc->hw;
vf_index = IXGBE_VF_INDEX(vf->pool);
vfte = IXGBE_READ_REG(hw, IXGBE_VFTE(vf_index));
@@ -332,16 +332,16 @@
static void
-ixgbe_vf_enable_receive(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_vf_enable_receive(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
struct ixgbe_hw *hw;
uint32_t vf_index, vfre;
- hw = &adapter->hw;
+ hw = &sc->hw;
vf_index = IXGBE_VF_INDEX(vf->pool);
vfre = IXGBE_READ_REG(hw, IXGBE_VFRE(vf_index));
- if (ixgbe_vf_frame_size_compatible(adapter, vf))
+ if (ixgbe_vf_frame_size_compatible(sc, vf))
vfre |= IXGBE_VF_BIT(vf->pool);
else
vfre &= ~IXGBE_VF_BIT(vf->pool);
@@ -350,25 +350,25 @@
static void
-ixgbe_vf_reset_msg(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
+ixgbe_vf_reset_msg(struct ixgbe_softc *sc, struct ixgbe_vf *vf, uint32_t *msg)
{
struct ixgbe_hw *hw;
uint32_t ack;
uint32_t resp[IXGBE_VF_PERMADDR_MSG_LEN];
- hw = &adapter->hw;
+ hw = &sc->hw;
- ixgbe_process_vf_reset(adapter, vf);
+ ixgbe_process_vf_reset(sc, vf);
if (ixgbe_validate_mac_addr(vf->ether_addr) == 0) {
- ixgbe_set_rar(&adapter->hw, vf->rar_index, vf->ether_addr,
+ ixgbe_set_rar(&sc->hw, vf->rar_index, vf->ether_addr,
vf->pool, true);
ack = IXGBE_VT_MSGTYPE_ACK;
} else
ack = IXGBE_VT_MSGTYPE_NACK;
- ixgbe_vf_enable_transmit(adapter, vf);
- ixgbe_vf_enable_receive(adapter, vf);
+ ixgbe_vf_enable_transmit(sc, vf);
+ ixgbe_vf_enable_receive(sc, vf);
vf->flags |= IXGBE_VF_CTS;
@@ -380,7 +380,7 @@
static void
-ixgbe_vf_set_mac(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
+ixgbe_vf_set_mac(struct ixgbe_softc *sc, struct ixgbe_vf *vf, uint32_t *msg)
{
uint8_t *mac;
@@ -388,21 +388,21 @@
/* Check that the VF has permission to change the MAC address. */
if (!(vf->flags & IXGBE_VF_CAP_MAC) && ixgbe_vf_mac_changed(vf, mac)) {
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
if (ixgbe_validate_mac_addr(mac) != 0) {
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
bcopy(mac, vf->ether_addr, ETHER_ADDR_LEN);
- ixgbe_set_rar(&adapter->hw, vf->rar_index, vf->ether_addr, vf->pool,
+ ixgbe_set_rar(&sc->hw, vf->rar_index, vf->ether_addr, vf->pool,
true);
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
} /* ixgbe_vf_set_mac */
@@ -411,7 +411,7 @@
* 1 of 128 32 bit addresses (4096 possible).
*/
static void
-ixgbe_vf_set_mc_addr(struct adapter *adapter, struct ixgbe_vf *vf, u32 *msg)
+ixgbe_vf_set_mc_addr(struct ixgbe_softc *sc, struct ixgbe_vf *vf, u32 *msg)
{
u16 *list = (u16*)&msg[1];
int entries;
@@ -420,7 +420,7 @@
entries = (msg[0] & IXGBE_VT_MSGINFO_MASK) >> IXGBE_VT_MSGINFO_SHIFT;
entries = min(entries, IXGBE_MAX_VF_MC);
- vmolr = IXGBE_READ_REG(&adapter->hw, IXGBE_VMOLR(vf->pool));
+ vmolr = IXGBE_READ_REG(&sc->hw, IXGBE_VMOLR(vf->pool));
vf->num_mc_hashes = entries;
@@ -429,56 +429,56 @@
vf->mc_hash[i] = list[i];
vec_reg = (vf->mc_hash[i] >> 5) & 0x7F;
vec_bit = vf->mc_hash[i] & 0x1F;
- mta_reg = IXGBE_READ_REG(&adapter->hw, IXGBE_MTA(vec_reg));
+ mta_reg = IXGBE_READ_REG(&sc->hw, IXGBE_MTA(vec_reg));
mta_reg |= (1 << vec_bit);
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_MTA(vec_reg), mta_reg);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_MTA(vec_reg), mta_reg);
}
vmolr |= IXGBE_VMOLR_ROMPE;
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_VMOLR(vf->pool), vmolr);
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ IXGBE_WRITE_REG(&sc->hw, IXGBE_VMOLR(vf->pool), vmolr);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
} /* ixgbe_vf_set_mc_addr */
static void
-ixgbe_vf_set_vlan(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
+ixgbe_vf_set_vlan(struct ixgbe_softc *sc, struct ixgbe_vf *vf, uint32_t *msg)
{
struct ixgbe_hw *hw;
int enable;
uint16_t tag;
- hw = &adapter->hw;
+ hw = &sc->hw;
enable = IXGBE_VT_MSGINFO(msg[0]);
tag = msg[1] & IXGBE_VLVF_VLANID_MASK;
if (!(vf->flags & IXGBE_VF_CAP_VLAN)) {
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
/* It is illegal to enable vlan tag 0. */
if (tag == 0 && enable != 0) {
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
ixgbe_set_vfta(hw, tag, vf->pool, enable, false);
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
} /* ixgbe_vf_set_vlan */
static void
-ixgbe_vf_set_lpe(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
+ixgbe_vf_set_lpe(struct ixgbe_softc *sc, struct ixgbe_vf *vf, uint32_t *msg)
{
struct ixgbe_hw *hw;
uint32_t vf_max_size, pf_max_size, mhadd;
- hw = &adapter->hw;
+ hw = &sc->hw;
vf_max_size = msg[1];
if (vf_max_size < ETHER_CRC_LEN) {
/* We intentionally ACK invalid LPE requests. */
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
return;
}
@@ -486,43 +486,43 @@
if (vf_max_size > IXGBE_MAX_FRAME_SIZE) {
/* We intentionally ACK invalid LPE requests. */
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
return;
}
vf->maximum_frame_size = vf_max_size;
- ixgbe_update_max_frame(adapter, vf->maximum_frame_size);
+ ixgbe_update_max_frame(sc, vf->maximum_frame_size);
/*
* We might have to disable reception to this VF if the frame size is
* not compatible with the config on the PF.
*/
- ixgbe_vf_enable_receive(adapter, vf);
+ ixgbe_vf_enable_receive(sc, vf);
mhadd = IXGBE_READ_REG(hw, IXGBE_MHADD);
pf_max_size = (mhadd & IXGBE_MHADD_MFS_MASK) >> IXGBE_MHADD_MFS_SHIFT;
- if (pf_max_size < adapter->max_frame_size) {
+ if (pf_max_size < sc->max_frame_size) {
mhadd &= ~IXGBE_MHADD_MFS_MASK;
- mhadd |= adapter->max_frame_size << IXGBE_MHADD_MFS_SHIFT;
+ mhadd |= sc->max_frame_size << IXGBE_MHADD_MFS_SHIFT;
IXGBE_WRITE_REG(hw, IXGBE_MHADD, mhadd);
}
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
} /* ixgbe_vf_set_lpe */
static void
-ixgbe_vf_set_macvlan(struct adapter *adapter, struct ixgbe_vf *vf,
+ixgbe_vf_set_macvlan(struct ixgbe_softc *sc, struct ixgbe_vf *vf,
uint32_t *msg)
{
//XXX implement this
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
} /* ixgbe_vf_set_macvlan */
static void
-ixgbe_vf_api_negotiate(struct adapter *adapter, struct ixgbe_vf *vf,
+ixgbe_vf_api_negotiate(struct ixgbe_softc *sc, struct ixgbe_vf *vf,
uint32_t *msg)
{
@@ -530,37 +530,37 @@
case IXGBE_API_VER_1_0:
case IXGBE_API_VER_1_1:
vf->api_ver = msg[1];
- ixgbe_send_vf_ack(adapter, vf, msg[0]);
+ ixgbe_send_vf_ack(sc, vf, msg[0]);
break;
default:
vf->api_ver = IXGBE_API_VER_UNKNOWN;
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
break;
}
} /* ixgbe_vf_api_negotiate */
static void
-ixgbe_vf_get_queues(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
+ixgbe_vf_get_queues(struct ixgbe_softc *sc, struct ixgbe_vf *vf, uint32_t *msg)
{
struct ixgbe_hw *hw;
uint32_t resp[IXGBE_VF_GET_QUEUES_RESP_LEN];
int num_queues;
- hw = &adapter->hw;
+ hw = &sc->hw;
/* GET_QUEUES is not supported on pre-1.1 APIs. */
switch (msg[0]) {
case IXGBE_API_VER_1_0:
case IXGBE_API_VER_UNKNOWN:
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
resp[0] = IXGBE_VF_GET_QUEUES | IXGBE_VT_MSGTYPE_ACK |
IXGBE_VT_MSGTYPE_CTS;
- num_queues = ixgbe_vf_queues(adapter->iov_mode);
+ num_queues = ixgbe_vf_queues(sc->iov_mode);
resp[IXGBE_VF_TX_QUEUES] = num_queues;
resp[IXGBE_VF_RX_QUEUES] = num_queues;
resp[IXGBE_VF_TRANS_VLAN] = (vf->default_vlan != 0);
@@ -573,7 +573,7 @@
static void
ixgbe_process_vf_msg(if_ctx_t ctx, struct ixgbe_vf *vf)
{
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
#ifdef KTR
struct ifnet *ifp = iflib_get_ifp(ctx);
#endif
@@ -581,7 +581,7 @@
uint32_t msg[IXGBE_VFMAILBOX_SIZE];
int error;
- hw = &adapter->hw;
+ hw = &sc->hw;
error = hw->mbx.ops.read(hw, msg, IXGBE_VFMAILBOX_SIZE, vf->pool);
@@ -591,39 +591,39 @@
CTR3(KTR_MALLOC, "%s: received msg %x from %d", ifp->if_xname,
msg[0], vf->pool);
if (msg[0] == IXGBE_VF_RESET) {
- ixgbe_vf_reset_msg(adapter, vf, msg);
+ ixgbe_vf_reset_msg(sc, vf, msg);
return;
}
if (!(vf->flags & IXGBE_VF_CTS)) {
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
return;
}
switch (msg[0] & IXGBE_VT_MSG_MASK) {
case IXGBE_VF_SET_MAC_ADDR:
- ixgbe_vf_set_mac(adapter, vf, msg);
+ ixgbe_vf_set_mac(sc, vf, msg);
break;
case IXGBE_VF_SET_MULTICAST:
- ixgbe_vf_set_mc_addr(adapter, vf, msg);
+ ixgbe_vf_set_mc_addr(sc, vf, msg);
break;
case IXGBE_VF_SET_VLAN:
- ixgbe_vf_set_vlan(adapter, vf, msg);
+ ixgbe_vf_set_vlan(sc, vf, msg);
break;
case IXGBE_VF_SET_LPE:
- ixgbe_vf_set_lpe(adapter, vf, msg);
+ ixgbe_vf_set_lpe(sc, vf, msg);
break;
case IXGBE_VF_SET_MACVLAN:
- ixgbe_vf_set_macvlan(adapter, vf, msg);
+ ixgbe_vf_set_macvlan(sc, vf, msg);
break;
case IXGBE_VF_API_NEGOTIATE:
- ixgbe_vf_api_negotiate(adapter, vf, msg);
+ ixgbe_vf_api_negotiate(sc, vf, msg);
break;
case IXGBE_VF_GET_QUEUES:
- ixgbe_vf_get_queues(adapter, vf, msg);
+ ixgbe_vf_get_queues(sc, vf, msg);
break;
default:
- ixgbe_send_vf_nack(adapter, vf, msg[0]);
+ ixgbe_send_vf_nack(sc, vf, msg[0]);
}
} /* ixgbe_process_vf_msg */
@@ -633,25 +633,25 @@
ixgbe_handle_mbx(void *context)
{
if_ctx_t ctx = context;
- struct adapter *adapter = iflib_get_softc(ctx);
+ struct ixgbe_softc *sc = iflib_get_softc(ctx);
struct ixgbe_hw *hw;
struct ixgbe_vf *vf;
int i;
- hw = &adapter->hw;
+ hw = &sc->hw;
- for (i = 0; i < adapter->num_vfs; i++) {
- vf = &adapter->vfs[i];
+ for (i = 0; i < sc->num_vfs; i++) {
+ vf = &sc->vfs[i];
if (vf->flags & IXGBE_VF_ACTIVE) {
if (hw->mbx.ops.check_for_rst(hw, vf->pool) == 0)
- ixgbe_process_vf_reset(adapter, vf);
+ ixgbe_process_vf_reset(sc, vf);
if (hw->mbx.ops.check_for_msg(hw, vf->pool) == 0)
ixgbe_process_vf_msg(ctx, vf);
if (hw->mbx.ops.check_for_ack(hw, vf->pool) == 0)
- ixgbe_process_vf_ack(adapter, vf);
+ ixgbe_process_vf_ack(sc, vf);
}
}
} /* ixgbe_handle_mbx */
@@ -659,11 +659,11 @@
int
ixgbe_if_iov_init(if_ctx_t ctx, u16 num_vfs, const nvlist_t *config)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
int retval = 0;
- adapter = iflib_get_softc(ctx);
- adapter->iov_mode = IXGBE_NO_VM;
+ sc = iflib_get_softc(ctx);
+ sc->iov_mode = IXGBE_NO_VM;
if (num_vfs == 0) {
/* Would we ever get num_vfs = 0? */
@@ -678,36 +678,36 @@
* With 32 VFs, you can have up to four queues per VF.
*/
if (num_vfs >= IXGBE_32_VM)
- adapter->iov_mode = IXGBE_64_VM;
+ sc->iov_mode = IXGBE_64_VM;
else
- adapter->iov_mode = IXGBE_32_VM;
+ sc->iov_mode = IXGBE_32_VM;
/* Again, reserving 1 VM's worth of queues for the PF */
- adapter->pool = adapter->iov_mode - 1;
+ sc->pool = sc->iov_mode - 1;
- if ((num_vfs > adapter->pool) || (num_vfs >= IXGBE_64_VM)) {
+ if ((num_vfs > sc->pool) || (num_vfs >= IXGBE_64_VM)) {
retval = ENOSPC;
goto err_init_iov;
}
- adapter->vfs = malloc(sizeof(*adapter->vfs) * num_vfs, M_IXGBE_SRIOV,
+ sc->vfs = malloc(sizeof(*sc->vfs) * num_vfs, M_IXGBE_SRIOV,
M_NOWAIT | M_ZERO);
- if (adapter->vfs == NULL) {
+ if (sc->vfs == NULL) {
retval = ENOMEM;
goto err_init_iov;
}
- adapter->num_vfs = num_vfs;
- ixgbe_if_init(adapter->ctx);
- adapter->feat_en |= IXGBE_FEATURE_SRIOV;
+ sc->num_vfs = num_vfs;
+ ixgbe_if_init(sc->ctx);
+ sc->feat_en |= IXGBE_FEATURE_SRIOV;
return (retval);
err_init_iov:
- adapter->num_vfs = 0;
- adapter->pool = 0;
- adapter->iov_mode = IXGBE_NO_VM;
+ sc->num_vfs = 0;
+ sc->pool = 0;
+ sc->iov_mode = IXGBE_NO_VM;
return (retval);
} /* ixgbe_if_iov_init */
@@ -716,16 +716,16 @@
ixgbe_if_iov_uninit(if_ctx_t ctx)
{
struct ixgbe_hw *hw;
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
uint32_t pf_reg, vf_reg;
- adapter = iflib_get_softc(ctx);
- hw = &adapter->hw;
+ sc = iflib_get_softc(ctx);
+ hw = &sc->hw;
/* Enable rx/tx for the PF and disable it for all VFs. */
- pf_reg = IXGBE_VF_INDEX(adapter->pool);
- IXGBE_WRITE_REG(hw, IXGBE_VFRE(pf_reg), IXGBE_VF_BIT(adapter->pool));
- IXGBE_WRITE_REG(hw, IXGBE_VFTE(pf_reg), IXGBE_VF_BIT(adapter->pool));
+ pf_reg = IXGBE_VF_INDEX(sc->pool);
+ IXGBE_WRITE_REG(hw, IXGBE_VFRE(pf_reg), IXGBE_VF_BIT(sc->pool));
+ IXGBE_WRITE_REG(hw, IXGBE_VFTE(pf_reg), IXGBE_VF_BIT(sc->pool));
if (pf_reg == 0)
vf_reg = 1;
@@ -736,19 +736,19 @@
IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, 0);
- free(adapter->vfs, M_IXGBE_SRIOV);
- adapter->vfs = NULL;
- adapter->num_vfs = 0;
- adapter->feat_en &= ~IXGBE_FEATURE_SRIOV;
+ free(sc->vfs, M_IXGBE_SRIOV);
+ sc->vfs = NULL;
+ sc->num_vfs = 0;
+ sc->feat_en &= ~IXGBE_FEATURE_SRIOV;
} /* ixgbe_if_iov_uninit */
static void
-ixgbe_init_vf(struct adapter *adapter, struct ixgbe_vf *vf)
+ixgbe_init_vf(struct ixgbe_softc *sc, struct ixgbe_vf *vf)
{
struct ixgbe_hw *hw;
uint32_t vf_index, pfmbimr;
- hw = &adapter->hw;
+ hw = &sc->hw;
if (!(vf->flags & IXGBE_VF_ACTIVE))
return;
@@ -758,29 +758,29 @@
pfmbimr |= IXGBE_VF_BIT(vf->pool);
IXGBE_WRITE_REG(hw, IXGBE_PFMBIMR(vf_index), pfmbimr);
- ixgbe_vf_set_default_vlan(adapter, vf, vf->vlan_tag);
+ ixgbe_vf_set_default_vlan(sc, vf, vf->vlan_tag);
// XXX multicast addresses
if (ixgbe_validate_mac_addr(vf->ether_addr) == 0) {
- ixgbe_set_rar(&adapter->hw, vf->rar_index,
+ ixgbe_set_rar(&sc->hw, vf->rar_index,
vf->ether_addr, vf->pool, true);
}
- ixgbe_vf_enable_transmit(adapter, vf);
- ixgbe_vf_enable_receive(adapter, vf);
+ ixgbe_vf_enable_transmit(sc, vf);
+ ixgbe_vf_enable_receive(sc, vf);
- ixgbe_send_vf_msg(adapter, vf, IXGBE_PF_CONTROL_MSG);
+ ixgbe_send_vf_msg(sc, vf, IXGBE_PF_CONTROL_MSG);
} /* ixgbe_init_vf */
void
-ixgbe_initialize_iov(struct adapter *adapter)
+ixgbe_initialize_iov(struct ixgbe_softc *sc)
{
- struct ixgbe_hw *hw = &adapter->hw;
+ struct ixgbe_hw *hw = &sc->hw;
uint32_t mrqc, mtqc, vt_ctl, vf_reg, gcr_ext, gpie;
int i;
- if (adapter->iov_mode == IXGBE_NO_VM)
+ if (sc->iov_mode == IXGBE_NO_VM)
return;
/* RMW appropriate registers based on IOV mode */
@@ -794,7 +794,7 @@
gcr_ext |= IXGBE_GCR_EXT_MSIX_EN;
gcr_ext &= ~IXGBE_GCR_EXT_VT_MODE_MASK;
gpie &= ~IXGBE_GPIE_VTMODE_MASK;
- switch (adapter->iov_mode) {
+ switch (sc->iov_mode) {
case IXGBE_64_VM:
mrqc |= IXGBE_MRQC_VMDQRSS64EN;
mtqc |= IXGBE_MTQC_64VF;
@@ -808,7 +808,7 @@
gpie |= IXGBE_GPIE_VTMODE_32;
break;
default:
- panic("Unexpected SR-IOV mode %d", adapter->iov_mode);
+ panic("Unexpected SR-IOV mode %d", sc->iov_mode);
}
/* Write... */
IXGBE_WRITE_REG(hw, IXGBE_MRQC, mrqc);
@@ -817,55 +817,55 @@
IXGBE_WRITE_REG(hw, IXGBE_GPIE, gpie);
/* Enable rx/tx for the PF. */
- vf_reg = IXGBE_VF_INDEX(adapter->pool);
- IXGBE_WRITE_REG(hw, IXGBE_VFRE(vf_reg), IXGBE_VF_BIT(adapter->pool));
- IXGBE_WRITE_REG(hw, IXGBE_VFTE(vf_reg), IXGBE_VF_BIT(adapter->pool));
+ vf_reg = IXGBE_VF_INDEX(sc->pool);
+ IXGBE_WRITE_REG(hw, IXGBE_VFRE(vf_reg), IXGBE_VF_BIT(sc->pool));
+ IXGBE_WRITE_REG(hw, IXGBE_VFTE(vf_reg), IXGBE_VF_BIT(sc->pool));
/* Allow VM-to-VM communication. */
IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN);
vt_ctl = IXGBE_VT_CTL_VT_ENABLE | IXGBE_VT_CTL_REPLEN;
- vt_ctl |= (adapter->pool << IXGBE_VT_CTL_POOL_SHIFT);
+ vt_ctl |= (sc->pool << IXGBE_VT_CTL_POOL_SHIFT);
IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vt_ctl);
- for (i = 0; i < adapter->num_vfs; i++)
- ixgbe_init_vf(adapter, &adapter->vfs[i]);
+ for (i = 0; i < sc->num_vfs; i++)
+ ixgbe_init_vf(sc, &sc->vfs[i]);
} /* ixgbe_initialize_iov */
/* Check the max frame setting of all active VF's */
void
-ixgbe_recalculate_max_frame(struct adapter *adapter)
+ixgbe_recalculate_max_frame(struct ixgbe_softc *sc)
{
struct ixgbe_vf *vf;
- for (int i = 0; i < adapter->num_vfs; i++) {
- vf = &adapter->vfs[i];
+ for (int i = 0; i < sc->num_vfs; i++) {
+ vf = &sc->vfs[i];
if (vf->flags & IXGBE_VF_ACTIVE)
- ixgbe_update_max_frame(adapter, vf->maximum_frame_size);
+ ixgbe_update_max_frame(sc, vf->maximum_frame_size);
}
} /* ixgbe_recalculate_max_frame */
int
ixgbe_if_iov_vf_add(if_ctx_t ctx, u16 vfnum, const nvlist_t *config)
{
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
struct ixgbe_vf *vf;
const void *mac;
- adapter = iflib_get_softc(ctx);
+ sc = iflib_get_softc(ctx);
- KASSERT(vfnum < adapter->num_vfs, ("VF index %d is out of range %d",
- vfnum, adapter->num_vfs));
+ KASSERT(vfnum < sc->num_vfs, ("VF index %d is out of range %d",
+ vfnum, sc->num_vfs));
- vf = &adapter->vfs[vfnum];
+ vf = &sc->vfs[vfnum];
vf->pool= vfnum;
/* RAR[0] is used by the PF so use vfnum + 1 for VF RAR. */
vf->rar_index = vfnum + 1;
vf->default_vlan = 0;
vf->maximum_frame_size = ETHER_MAX_LEN;
- ixgbe_update_max_frame(adapter, vf->maximum_frame_size);
+ ixgbe_update_max_frame(sc, vf->maximum_frame_size);
if (nvlist_exists_binary(config, "mac-addr")) {
mac = nvlist_get_binary(config, "mac-addr", NULL);
@@ -881,7 +881,7 @@
vf->flags |= IXGBE_VF_ACTIVE;
- ixgbe_init_vf(adapter, vf);
+ ixgbe_init_vf(sc, vf);
return (0);
} /* ixgbe_if_iov_vf_add */
diff --git a/sys/dev/ixgbe/ix_txrx.c b/sys/dev/ixgbe/ix_txrx.c
--- a/sys/dev/ixgbe/ix_txrx.c
+++ b/sys/dev/ixgbe/ix_txrx.c
@@ -45,19 +45,16 @@
/************************************************************************
* Local Function prototypes
************************************************************************/
-static int ixgbe_isc_txd_encap(void *arg, if_pkt_info_t pi);
-static void ixgbe_isc_txd_flush(void *arg, uint16_t txqid, qidx_t pidx);
-static int ixgbe_isc_txd_credits_update(void *arg, uint16_t txqid, bool clear);
-
-static void ixgbe_isc_rxd_refill(void *arg, if_rxd_update_t iru);
-static void ixgbe_isc_rxd_flush(void *arg, uint16_t qsidx,
- uint8_t flidx __unused, qidx_t pidx);
-static int ixgbe_isc_rxd_available(void *arg, uint16_t qsidx, qidx_t pidx,
- qidx_t budget);
-static int ixgbe_isc_rxd_pkt_get(void *arg, if_rxd_info_t ri);
-
-static void ixgbe_rx_checksum(uint32_t staterr, if_rxd_info_t ri,
- uint32_t ptype);
+static int ixgbe_isc_txd_encap(void *, if_pkt_info_t);
+static void ixgbe_isc_txd_flush(void *, uint16_t, qidx_t);
+static int ixgbe_isc_txd_credits_update(void *, uint16_t, bool);
+
+static void ixgbe_isc_rxd_refill(void *, if_rxd_update_t);
+static void ixgbe_isc_rxd_flush(void *, uint16_t, uint8_t, qidx_t);
+static int ixgbe_isc_rxd_available(void *, uint16_t, qidx_t, qidx_t);
+static int ixgbe_isc_rxd_pkt_get(void *, if_rxd_info_t);
+
+static void ixgbe_rx_checksum(uint32_t, if_rxd_info_t, uint32_t);
static int ixgbe_tx_ctx_setup(struct ixgbe_adv_tx_context_desc *,
if_pkt_info_t);
@@ -174,7 +171,7 @@
static int
ixgbe_isc_txd_encap(void *arg, if_pkt_info_t pi)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
if_softc_ctx_t scctx = sc->shared;
struct ix_tx_queue *que = &sc->tx_queues[pi->ipi_qsidx];
struct tx_ring *txr = &que->txr;
@@ -255,7 +252,7 @@
static void
ixgbe_isc_txd_flush(void *arg, uint16_t txqid, qidx_t pidx)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
struct ix_tx_queue *que = &sc->tx_queues[txqid];
struct tx_ring *txr = &que->txr;
@@ -268,7 +265,7 @@
static int
ixgbe_isc_txd_credits_update(void *arg, uint16_t txqid, bool clear)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
if_softc_ctx_t scctx = sc->shared;
struct ix_tx_queue *que = &sc->tx_queues[txqid];
struct tx_ring *txr = &que->txr;
@@ -325,7 +322,7 @@
static void
ixgbe_isc_rxd_refill(void *arg, if_rxd_update_t iru)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
struct ix_rx_queue *que = &sc->rx_queues[iru->iru_qsidx];
struct rx_ring *rxr = &que->rxr;
uint64_t *paddrs;
@@ -350,7 +347,7 @@
static void
ixgbe_isc_rxd_flush(void *arg, uint16_t qsidx, uint8_t flidx __unused, qidx_t pidx)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
struct ix_rx_queue *que = &sc->rx_queues[qsidx];
struct rx_ring *rxr = &que->rxr;
@@ -363,7 +360,7 @@
static int
ixgbe_isc_rxd_available(void *arg, uint16_t qsidx, qidx_t pidx, qidx_t budget)
{
- struct adapter *sc = arg;
+ struct ixgbe_softc *sc = arg;
struct ix_rx_queue *que = &sc->rx_queues[qsidx];
struct rx_ring *rxr = &que->rxr;
union ixgbe_adv_rx_desc *rxd;
@@ -397,10 +394,10 @@
static int
ixgbe_isc_rxd_pkt_get(void *arg, if_rxd_info_t ri)
{
- struct adapter *adapter = arg;
- struct ix_rx_queue *que = &adapter->rx_queues[ri->iri_qsidx];
+ struct ixgbe_softc *sc = arg;
+ struct ix_rx_queue *que = &sc->rx_queues[ri->iri_qsidx];
struct rx_ring *rxr = &que->rxr;
- struct ifnet *ifp = iflib_get_ifp(adapter->ctx);
+ struct ifnet *ifp = iflib_get_ifp(sc->ctx);
union ixgbe_adv_rx_desc *rxd;
uint16_t pkt_info, len, cidx, i;
@@ -437,7 +434,7 @@
/* Make sure bad packets are discarded */
if (eop && (staterr & IXGBE_RXDADV_ERR_FRAME_ERR_MASK) != 0) {
- if (adapter->feat_en & IXGBE_FEATURE_VF)
+ if (sc->feat_en & IXGBE_FEATURE_VF)
if_inc_counter(ifp, IFCOUNTER_IERRORS, 1);
rxr->rx_discarded++;
@@ -446,7 +443,7 @@
ri->iri_frags[i].irf_flid = 0;
ri->iri_frags[i].irf_idx = cidx;
ri->iri_frags[i].irf_len = len;
- if (++cidx == adapter->shared->isc_nrxd[0])
+ if (++cidx == sc->shared->isc_nrxd[0])
cidx = 0;
i++;
/* even a 16K packet shouldn't consume more than 8 clusters */
@@ -462,7 +459,7 @@
ri->iri_flowid = le32toh(rxd->wb.lower.hi_dword.rss);
ri->iri_rsstype = ixgbe_determine_rsstype(pkt_info);
- if ((adapter->feat_en & IXGBE_FEATURE_RSS) == 0) {
+ if ((sc->feat_en & IXGBE_FEATURE_RSS) == 0) {
if (ri->iri_rsstype == M_HASHTYPE_OPAQUE)
ri->iri_rsstype = M_HASHTYPE_NONE;
else
diff --git a/sys/dev/ixgbe/ixgbe.h b/sys/dev/ixgbe/ixgbe.h
--- a/sys/dev/ixgbe/ixgbe.h
+++ b/sys/dev/ixgbe/ixgbe.h
@@ -279,7 +279,7 @@
* The transmit ring, one per queue
*/
struct tx_ring {
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
union ixgbe_adv_tx_desc *tx_base;
uint64_t tx_paddr;
u32 tail;
@@ -306,7 +306,7 @@
*/
struct rx_ring {
struct ix_rx_queue *que;
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
u32 me;
u32 tail;
union ixgbe_adv_rx_desc *rx_base;
@@ -335,7 +335,7 @@
* for the associated tx and rx ring.
*/
struct ix_rx_queue {
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
u32 msix; /* This queue's MSIX vector */
u32 eitr_setting;
struct resource *res;
@@ -347,7 +347,7 @@
};
struct ix_tx_queue {
- struct adapter *adapter;
+ struct ixgbe_softc *sc;
u32 msix; /* This queue's MSIX vector */
struct tx_ring txr;
};
@@ -367,8 +367,8 @@
uint16_t api_ver;
};
-/* Our adapter structure */
-struct adapter {
+/* Our softc structure */
+struct ixgbe_softc {
struct ixgbe_hw hw;
struct ixgbe_osdep osdep;
if_ctx_t ctx;
@@ -580,11 +580,11 @@
/* Shared Prototypes */
-int ixgbe_allocate_queues(struct adapter *);
-int ixgbe_setup_transmit_structures(struct adapter *);
-void ixgbe_free_transmit_structures(struct adapter *);
-int ixgbe_setup_receive_structures(struct adapter *);
-void ixgbe_free_receive_structures(struct adapter *);
+int ixgbe_allocate_queues(struct ixgbe_softc *);
+int ixgbe_setup_transmit_structures(struct ixgbe_softc *);
+void ixgbe_free_transmit_structures(struct ixgbe_softc *);
+int ixgbe_setup_receive_structures(struct ixgbe_softc *);
+void ixgbe_free_receive_structures(struct ixgbe_softc *);
int ixgbe_get_regs(SYSCTL_HANDLER_ARGS);
#include "ixgbe_bypass.h"
diff --git a/sys/dev/ixgbe/ixgbe_bypass.h b/sys/dev/ixgbe/ixgbe_bypass.h
--- a/sys/dev/ixgbe/ixgbe_bypass.h
+++ b/sys/dev/ixgbe/ixgbe_bypass.h
@@ -46,6 +46,6 @@
#define LEAP_YR(y) ((y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)))
#define SEC_THIS_YEAR(y) (LEAP_YR(y) ? SEC_PER_LYEAR : SEC_PER_YEAR)
-void ixgbe_bypass_init(struct adapter *);
+void ixgbe_bypass_init(struct ixgbe_softc *);
#endif /* _IXGBE_BYPASS_H_ */
diff --git a/sys/dev/ixgbe/ixgbe_fdir.h b/sys/dev/ixgbe/ixgbe_fdir.h
--- a/sys/dev/ixgbe/ixgbe_fdir.h
+++ b/sys/dev/ixgbe/ixgbe_fdir.h
@@ -44,7 +44,7 @@
*/
int fdir_pballoc = 1;
-void ixgbe_init_fdir(struct adapter *);
+void ixgbe_init_fdir(struct ixgbe_softc *);
#else
diff --git a/sys/dev/ixgbe/ixgbe_osdep.c b/sys/dev/ixgbe/ixgbe_osdep.c
--- a/sys/dev/ixgbe/ixgbe_osdep.c
+++ b/sys/dev/ixgbe/ixgbe_osdep.c
@@ -37,42 +37,42 @@
inline u16
ixgbe_read_pci_cfg(struct ixgbe_hw *hw, u32 reg)
{
- return pci_read_config(((struct adapter *)hw->back)->dev, reg, 2);
+ return pci_read_config(((struct ixgbe_softc *)hw->back)->dev, reg, 2);
}
inline void
ixgbe_write_pci_cfg(struct ixgbe_hw *hw, u32 reg, u16 value)
{
- pci_write_config(((struct adapter *)hw->back)->dev, reg, value, 2);
+ pci_write_config(((struct ixgbe_softc *)hw->back)->dev, reg, value, 2);
}
inline u32
ixgbe_read_reg(struct ixgbe_hw *hw, u32 reg)
{
- return bus_space_read_4(((struct adapter *)hw->back)->osdep.mem_bus_space_tag,
- ((struct adapter *)hw->back)->osdep.mem_bus_space_handle, reg);
+ return bus_space_read_4(((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_tag,
+ ((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_handle, reg);
}
inline void
ixgbe_write_reg(struct ixgbe_hw *hw, u32 reg, u32 val)
{
- bus_space_write_4(((struct adapter *)hw->back)->osdep.mem_bus_space_tag,
- ((struct adapter *)hw->back)->osdep.mem_bus_space_handle,
+ bus_space_write_4(((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_tag,
+ ((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_handle,
reg, val);
}
inline u32
ixgbe_read_reg_array(struct ixgbe_hw *hw, u32 reg, u32 offset)
{
- return bus_space_read_4(((struct adapter *)hw->back)->osdep.mem_bus_space_tag,
- ((struct adapter *)hw->back)->osdep.mem_bus_space_handle,
+ return bus_space_read_4(((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_tag,
+ ((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_handle,
reg + (offset << 2));
}
inline void
ixgbe_write_reg_array(struct ixgbe_hw *hw, u32 reg, u32 offset, u32 val)
{
- bus_space_write_4(((struct adapter *)hw->back)->osdep.mem_bus_space_tag,
- ((struct adapter *)hw->back)->osdep.mem_bus_space_handle,
+ bus_space_write_4(((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_tag,
+ ((struct ixgbe_softc *)hw->back)->osdep.mem_bus_space_handle,
reg + (offset << 2), val);
}
diff --git a/sys/dev/ixgbe/ixgbe_sriov.h b/sys/dev/ixgbe/ixgbe_sriov.h
--- a/sys/dev/ixgbe/ixgbe_sriov.h
+++ b/sys/dev/ixgbe/ixgbe_sriov.h
@@ -70,12 +70,12 @@
int ixgbe_if_iov_vf_add(if_ctx_t, u16, const nvlist_t *);
int ixgbe_if_iov_init(if_ctx_t, u16, const nvlist_t *);
void ixgbe_if_iov_uninit(if_ctx_t);
-void ixgbe_initialize_iov(struct adapter *);
-void ixgbe_recalculate_max_frame(struct adapter *);
-void ixgbe_ping_all_vfs(struct adapter *);
+void ixgbe_initialize_iov(struct ixgbe_softc *);
+void ixgbe_recalculate_max_frame(struct ixgbe_softc *);
+void ixgbe_ping_all_vfs(struct ixgbe_softc *);
int ixgbe_pci_iov_detach(device_t);
void ixgbe_define_iov_schemas(device_t, int *);
-void ixgbe_align_all_queue_indices(struct adapter *);
+void ixgbe_align_all_queue_indices(struct ixgbe_softc *);
int ixgbe_vf_que_index(int, int, int);
u32 ixgbe_get_mtqc(int);
u32 ixgbe_get_mrqc(int);

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 7, 4:35 PM (21 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14516950
Default Alt Text
D32131.diff (202 KB)

Event Timeline