Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ixl/if_ixl.c
Show First 20 Lines • Show All 992 Lines • ▼ Show 20 Lines | if (ifp->if_drv_flags & IFF_DRV_RUNNING) { | ||||
ixl_disable_intr(vsi); | ixl_disable_intr(vsi); | ||||
ixl_del_multi(vsi); | ixl_del_multi(vsi); | ||||
ixl_enable_intr(vsi); | ixl_enable_intr(vsi); | ||||
IXL_PF_UNLOCK(pf); | IXL_PF_UNLOCK(pf); | ||||
} | } | ||||
break; | break; | ||||
case SIOCSIFMEDIA: | case SIOCSIFMEDIA: | ||||
case SIOCGIFMEDIA: | case SIOCGIFMEDIA: | ||||
#ifdef SIOCGIFXMEDIA | |||||
case SIOCGIFXMEDIA: | |||||
#endif | |||||
IOCTL_DEBUGOUT("ioctl: SIOCxIFMEDIA (Get/Set Interface Media)"); | IOCTL_DEBUGOUT("ioctl: SIOCxIFMEDIA (Get/Set Interface Media)"); | ||||
error = ifmedia_ioctl(ifp, ifr, &vsi->media, command); | error = ifmedia_ioctl(ifp, ifr, &vsi->media, command); | ||||
break; | break; | ||||
case SIOCSIFCAP: | case SIOCSIFCAP: | ||||
{ | { | ||||
int mask = ifr->ifr_reqcap ^ ifp->if_capenable; | int mask = ifr->ifr_reqcap ^ ifp->if_capenable; | ||||
IOCTL_DEBUGOUT("ioctl: SIOCSIFCAP (Set Capabilities)"); | IOCTL_DEBUGOUT("ioctl: SIOCSIFCAP (Set Capabilities)"); | ||||
▲ Show 20 Lines • Show All 375 Lines • ▼ Show 20 Lines | case I40E_PHY_TYPE_1000BASE_T: | ||||
break; | break; | ||||
case I40E_PHY_TYPE_1000BASE_SX: | case I40E_PHY_TYPE_1000BASE_SX: | ||||
ifmr->ifm_active |= IFM_1000_SX; | ifmr->ifm_active |= IFM_1000_SX; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_1000BASE_LX: | case I40E_PHY_TYPE_1000BASE_LX: | ||||
ifmr->ifm_active |= IFM_1000_LX; | ifmr->ifm_active |= IFM_1000_LX; | ||||
break; | break; | ||||
/* 10 G */ | /* 10 G */ | ||||
case I40E_PHY_TYPE_10GBASE_CR1: | |||||
case I40E_PHY_TYPE_10GBASE_CR1_CU: | |||||
case I40E_PHY_TYPE_10GBASE_SFPP_CU: | case I40E_PHY_TYPE_10GBASE_SFPP_CU: | ||||
/* Using this until a real KR media type */ | |||||
case I40E_PHY_TYPE_10GBASE_KR: | |||||
case I40E_PHY_TYPE_10GBASE_KX4: | |||||
ifmr->ifm_active |= IFM_10G_TWINAX; | ifmr->ifm_active |= IFM_10G_TWINAX; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_10GBASE_SR: | case I40E_PHY_TYPE_10GBASE_SR: | ||||
ifmr->ifm_active |= IFM_10G_SR; | ifmr->ifm_active |= IFM_10G_SR; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_10GBASE_LR: | case I40E_PHY_TYPE_10GBASE_LR: | ||||
ifmr->ifm_active |= IFM_10G_LR; | ifmr->ifm_active |= IFM_10G_LR; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_10GBASE_T: | case I40E_PHY_TYPE_10GBASE_T: | ||||
ifmr->ifm_active |= IFM_10G_T; | ifmr->ifm_active |= IFM_10G_T; | ||||
break; | break; | ||||
/* 40 G */ | /* 40 G */ | ||||
case I40E_PHY_TYPE_40GBASE_CR4: | case I40E_PHY_TYPE_40GBASE_CR4: | ||||
case I40E_PHY_TYPE_40GBASE_CR4_CU: | case I40E_PHY_TYPE_40GBASE_CR4_CU: | ||||
ifmr->ifm_active |= IFM_40G_CR4; | ifmr->ifm_active |= IFM_40G_CR4; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_40GBASE_SR4: | case I40E_PHY_TYPE_40GBASE_SR4: | ||||
ifmr->ifm_active |= IFM_40G_SR4; | ifmr->ifm_active |= IFM_40G_SR4; | ||||
break; | break; | ||||
case I40E_PHY_TYPE_40GBASE_LR4: | case I40E_PHY_TYPE_40GBASE_LR4: | ||||
ifmr->ifm_active |= IFM_40G_LR4; | ifmr->ifm_active |= IFM_40G_LR4; | ||||
break; | break; | ||||
#ifndef XSUBTYPE | |||||
/* | /* | ||||
** Set these to CR4 because OS does not | * If there's no extended media support, try to map | ||||
** have types available yet. | * media status display to use the closest type | ||||
* available. | |||||
*/ | */ | ||||
case I40E_PHY_TYPE_1000BASE_KX: | |||||
ifmr->ifm_active |= IFM_1000_CX; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_CR1_CU: | |||||
case I40E_PHY_TYPE_10GBASE_CR1: | |||||
case I40E_PHY_TYPE_10GBASE_AOC: | |||||
case I40E_PHY_TYPE_XAUI: | |||||
case I40E_PHY_TYPE_XFI: | |||||
case I40E_PHY_TYPE_SFI: | |||||
ifmr->ifm_active |= IFM_10G_TWINAX; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_KX4: | |||||
ifmr->ifm_active |= IFM_10G_CX4; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_KR: | |||||
ifmr->ifm_active |= IFM_10G_SR; | |||||
break; | |||||
case I40E_PHY_TYPE_40GBASE_KR4: | case I40E_PHY_TYPE_40GBASE_KR4: | ||||
case I40E_PHY_TYPE_XLAUI: | ifmr->ifm_active |= IFM_40G_SR4; | ||||
break; | |||||
case I40E_PHY_TYPE_XLPPI: | case I40E_PHY_TYPE_XLPPI: | ||||
case I40E_PHY_TYPE_40GBASE_AOC: | case I40E_PHY_TYPE_40GBASE_AOC: | ||||
case I40E_PHY_TYPE_XLAUI: | |||||
ifmr->ifm_active |= IFM_40G_CR4; | ifmr->ifm_active |= IFM_40G_CR4; | ||||
break; | break; | ||||
#else | |||||
case I40E_PHY_TYPE_1000BASE_KX: | |||||
ifmr->ifm_active |= IFM_1000_KX; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_CR1_CU: | |||||
case I40E_PHY_TYPE_10GBASE_CR1: | |||||
case I40E_PHY_TYPE_10GBASE_AOC: | |||||
case I40E_PHY_TYPE_XAUI: | |||||
case I40E_PHY_TYPE_XFI: | |||||
case I40E_PHY_TYPE_SFI: | |||||
ifmr->ifm_active |= IFM_10G_CR1; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_KX4: | |||||
ifmr->ifm_active |= IFM_10G_KX4; | |||||
break; | |||||
case I40E_PHY_TYPE_10GBASE_KR: | |||||
ifmr->ifm_active |= IFM_10G_KR; | |||||
break; | |||||
case I40E_PHY_TYPE_20GBASE_KR2: | |||||
ifmr->ifm_active |= IFM_20G_KR2; | |||||
break; | |||||
case I40E_PHY_TYPE_40GBASE_KR4: | |||||
ifmr->ifm_active |= IFM_40G_KR4; | |||||
break; | |||||
case I40E_PHY_TYPE_XLPPI: | |||||
case I40E_PHY_TYPE_40GBASE_AOC: | |||||
case I40E_PHY_TYPE_XLAUI: | |||||
ifmr->ifm_active |= IFM_XLPPI; | |||||
break; | |||||
#endif | |||||
default: | default: | ||||
ifmr->ifm_active |= IFM_UNKNOWN; | ifmr->ifm_active |= IFM_UNKNOWN; | ||||
break; | break; | ||||
} | } | ||||
/* Report flow control status as well */ | /* Report flow control status as well */ | ||||
if (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) | if (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) | ||||
ifmr->ifm_active |= IFM_ETH_TXPAUSE; | ifmr->ifm_active |= IFM_ETH_TXPAUSE; | ||||
if (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) | if (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) | ||||
▲ Show 20 Lines • Show All 888 Lines • ▼ Show 20 Lines | |||||
ixl_add_ifmedia(struct ixl_vsi *vsi, u32 phy_type) | ixl_add_ifmedia(struct ixl_vsi *vsi, u32 phy_type) | ||||
{ | { | ||||
/* Display supported media types */ | /* Display supported media types */ | ||||
if (phy_type & (1 << I40E_PHY_TYPE_100BASE_TX)) | if (phy_type & (1 << I40E_PHY_TYPE_100BASE_TX)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_100_TX, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_100_TX, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_T)) | if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_T)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_T, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_T, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_SX)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_SX, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_LX)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_LX, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_CR1_CU) || | if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_SFPP_CU)) | ||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_KX4) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_KR) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XAUI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XFI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_SFI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_SFPP_CU)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_TWINAX, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_TWINAX, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_SR)) | if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_SR)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_SR, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_SR, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_LR)) | if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_LR)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_LR, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_LR, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_T)) | if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_T)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_T, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_T, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_CR4) || | if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_CR4) || | ||||
phy_type & (1 << I40E_PHY_TYPE_40GBASE_CR4_CU) || | phy_type & (1 << I40E_PHY_TYPE_40GBASE_CR4_CU)) | ||||
phy_type & (1 << I40E_PHY_TYPE_40GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XLAUI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XLPPI) || | |||||
/* KR4 uses CR4 until the OS has the real media type */ | |||||
phy_type & (1 << I40E_PHY_TYPE_40GBASE_KR4)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_CR4, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_CR4, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_SR4)) | if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_SR4)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_SR4, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_SR4, 0, NULL); | ||||
if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_LR4)) | if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_LR4)) | ||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_LR4, 0, NULL); | ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_LR4, 0, NULL); | ||||
#ifndef XSUBTYPE | |||||
/* | |||||
* If there's no extended media support, try to map media types to | |||||
* closest ones that are available. | |||||
*/ | |||||
if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_KX)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_CX, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_CR1_CU) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_CR1) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XAUI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XFI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_SFI)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_TWINAX, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_KX4)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_CX4, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_KR)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_SR, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_KR4)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_SR4, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_XLPPI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_40GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XLAUI)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_CR4, 0, NULL); | |||||
#else | |||||
if (phy_type & (1 << I40E_PHY_TYPE_1000BASE_KX)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_1000_KX, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_CR1_CU) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_CR1) || | |||||
phy_type & (1 << I40E_PHY_TYPE_10GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XAUI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XFI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_SFI)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_CR1, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_KX4)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_KX4, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_10GBASE_KR)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_10G_KR, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_20GBASE_KR2)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_20G_KR2, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_40GBASE_KR4)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_40G_KR4, 0, NULL); | |||||
if (phy_type & (1 << I40E_PHY_TYPE_XLPPI) || | |||||
phy_type & (1 << I40E_PHY_TYPE_40GBASE_AOC) || | |||||
phy_type & (1 << I40E_PHY_TYPE_XLAUI)) | |||||
ifmedia_add(&vsi->media, IFM_ETHER | IFM_XLPPI, 0, NULL); | |||||
#endif | |||||
} | } | ||||
/********************************************************************* | /********************************************************************* | ||||
* | * | ||||
* Setup networking device structure and register an interface. | * Setup networking device structure and register an interface. | ||||
* | * | ||||
**********************************************************************/ | **********************************************************************/ | ||||
static int | static int | ||||
▲ Show 20 Lines • Show All 2,602 Lines • Show Last 20 Lines |