cxgbe(4): Enable IFCAP_NV and implement SIOCGIFCAPNV/SIOCSIFCAPNV
MFC after: 1 week Sponsored by: Chelsio Communications
This commit is contained in:
+18
-3
@@ -2817,7 +2817,7 @@ cxgbe_probe(device_t dev)
|
||||
#define T4_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \
|
||||
IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \
|
||||
IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6 | IFCAP_HWSTATS | \
|
||||
IFCAP_HWRXTSTMP | IFCAP_MEXTPG)
|
||||
IFCAP_HWRXTSTMP | IFCAP_MEXTPG | IFCAP_NV)
|
||||
#define T4_CAP_ENABLE (T4_CAP)
|
||||
|
||||
static void
|
||||
@@ -3065,7 +3065,7 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
|
||||
struct port_info *pi = vi->pi;
|
||||
struct adapter *sc = pi->adapter;
|
||||
struct ifreq *ifr = (struct ifreq *)data;
|
||||
uint32_t mask;
|
||||
uint32_t mask, mask2;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSIFMTU:
|
||||
@@ -3124,12 +3124,24 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
|
||||
end_synchronized_op(sc, 0);
|
||||
break;
|
||||
|
||||
case SIOCGIFCAPNV:
|
||||
break;
|
||||
case SIOCSIFCAPNV:
|
||||
case SIOCSIFCAP:
|
||||
rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4cap");
|
||||
if (rc)
|
||||
return (rc);
|
||||
|
||||
mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
|
||||
if (cmd == SIOCSIFCAPNV) {
|
||||
const struct siocsifcapnv_driver_data *ifr_nv =
|
||||
(struct siocsifcapnv_driver_data *)data;
|
||||
|
||||
mask = ifr_nv->reqcap ^ if_getcapenable(ifp);
|
||||
mask2 = ifr_nv->reqcap2 ^ if_getcapenable2(ifp);
|
||||
} else {
|
||||
mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
|
||||
mask2 = 0;
|
||||
}
|
||||
if (mask & IFCAP_TXCSUM) {
|
||||
if_togglecapenable(ifp, IFCAP_TXCSUM);
|
||||
if_togglehwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP);
|
||||
@@ -3264,6 +3276,9 @@ cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data)
|
||||
CSUM_INNER_IP_TSO);
|
||||
}
|
||||
|
||||
MPASS(mask2 == 0);
|
||||
(void)mask2;
|
||||
|
||||
#ifdef VLAN_CAPABILITIES
|
||||
VLAN_CAPABILITIES(ifp);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user