Commit 02dc96ef authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from David Miller:

 1) Sanity check URB networking device parameters to avoid divide by
    zero, from Oliver Neukum.

 2) Disable global multicast filter in NCSI, otherwise LLDP and IPV6
    don't work properly. Longer term this needs a better fix tho. From
    Vijay Khemka.

 3) Small fixes to selftests (use ping when ping6 is not present, etc.)
    from David Ahern.

 4) Bring back rt_uses_gateway member of struct rtable, it's semantics
    were not well understood and trying to remove it broke things. From
    David Ahern.

 5) Move usbnet snaity checking, ignore endpoints with invalid
    wMaxPacketSize. From Bjørn Mork.

 6) Missing Kconfig deps for sja1105 driver, from Mao Wenan.

 7) Various small fixes to the mlx5 DR steering code, from Alaa Hleihel,
    Alex Vesker, and Yevgeny Kliteynik

 8) Missing CAP_NET_RAW checks in various places, from Ori Nimron.

 9) Fix crash when removing sch_cbs entry while offloading is enabled,
    from Vinicius Costa Gomes.

10) Signedness bug fixes, generally in looking at the result given by
    of_get_phy_mode() and friends. From Dan Crapenter.

11) Disable preemption around BPF_PROG_RUN() calls, from Eric Dumazet.

12) Don't create VRF ipv6 rules if ipv6 is disabled, from David Ahern.

13) Fix quantization code in tcp_bbr, from Kevin Yang.

* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (127 commits)
  net: tap: clean up an indentation issue
  nfp: abm: fix memory leak in nfp_abm_u32_knode_replace
  tcp: better handle TCP_USER_TIMEOUT in SYN_SENT state
  sk_buff: drop all skb extensions on free and skb scrubbing
  tcp_bbr: fix quantization code to not raise cwnd if not probing bandwidth
  mlxsw: spectrum_flower: Fail in case user specifies multiple mirror actions
  Documentation: Clarify trap's description
  mlxsw: spectrum: Clear VLAN filters during port initialization
  net: ena: clean up indentation issue
  NFC: st95hf: clean up indentation issue
  net: phy: micrel: add Asym Pause workaround for KSZ9021
  net: socionext: ave: Avoid using netdev_err() before calling register_netdev()
  ptp: correctly disable flags on old ioctls
  lib: dimlib: fix help text typos
  net: dsa: microchip: Always set regmap stride to 1
  nfp: flower: fix memory leak in nfp_flower_spawn_vnic_reprs
  nfp: flower: prevent memory leak in nfp_flower_spawn_phy_reprs
  net/sched: Set default of CONFIG_NET_TC_SKB_EXT to N
  vrf: Do not attempt to create IPv6 mcast rule if IPv6 is disabled
  net: sched: sch_sfb: don't call qdisc_put() while holding tree lock
  ...
parents edf445ad faeacb6d
...@@ -119,9 +119,9 @@ config IWLWIFI_DEBUG ...@@ -119,9 +119,9 @@ config IWLWIFI_DEBUG
any problems you may encounter. any problems you may encounter.
config IWLWIFI_DEBUGFS config IWLWIFI_DEBUGFS
bool "iwlwifi debugfs support" bool "iwlwifi debugfs support"
depends on MAC80211_DEBUGFS depends on MAC80211_DEBUGFS
---help--- ---help---
Enable creation of debugfs files for the iwlwifi drivers. This Enable creation of debugfs files for the iwlwifi drivers. This
is a low-impact option that allows getting insight into the is a low-impact option that allows getting insight into the
driver's state at runtime. driver's state at runtime.
......
...@@ -889,11 +889,13 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm) ...@@ -889,11 +889,13 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm)
* firmware versions. Unfortunately, we don't have a TLV API * firmware versions. Unfortunately, we don't have a TLV API
* flag to rely on, so rely on the major version which is in * flag to rely on, so rely on the major version which is in
* the first byte of ucode_ver. This was implemented * the first byte of ucode_ver. This was implemented
* initially on version 38 and then backported to 36, 29 and * initially on version 38 and then backported to29 and 17.
* 17. * The intention was to have it in 36 as well, but not all
* 8000 family got this feature enabled. The 8000 family is
* the only one using version 36, so skip this version
* entirely.
*/ */
return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 || return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 36 ||
IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 || IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17; IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
} }
......
...@@ -555,16 +555,19 @@ static int compare_temps(const void *a, const void *b) ...@@ -555,16 +555,19 @@ static int compare_temps(const void *a, const void *b)
return ((s16)le16_to_cpu(*(__le16 *)a) - return ((s16)le16_to_cpu(*(__le16 *)a) -
(s16)le16_to_cpu(*(__le16 *)b)); (s16)le16_to_cpu(*(__le16 *)b));
} }
#endif
int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm) int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm)
{ {
struct temp_report_ths_cmd cmd = {0}; struct temp_report_ths_cmd cmd = {0};
int ret, i, j, idx = 0; int ret;
#ifdef CONFIG_THERMAL
int i, j, idx = 0;
lockdep_assert_held(&mvm->mutex); lockdep_assert_held(&mvm->mutex);
if (!mvm->tz_device.tzone) if (!mvm->tz_device.tzone)
return -EINVAL; goto send;
/* The driver holds array of temperature trips that are unsorted /* The driver holds array of temperature trips that are unsorted
* and uncompressed, the FW should get it compressed and sorted * and uncompressed, the FW should get it compressed and sorted
...@@ -597,6 +600,7 @@ int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm) ...@@ -597,6 +600,7 @@ int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm)
} }
send: send:
#endif
ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(PHY_OPS_GROUP, ret = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(PHY_OPS_GROUP,
TEMP_REPORTING_THRESHOLDS_CMD), TEMP_REPORTING_THRESHOLDS_CMD),
0, sizeof(cmd), &cmd); 0, sizeof(cmd), &cmd);
...@@ -607,6 +611,7 @@ send: ...@@ -607,6 +611,7 @@ send:
return ret; return ret;
} }
#ifdef CONFIG_THERMAL
static int iwl_mvm_tzone_get_temp(struct thermal_zone_device *device, static int iwl_mvm_tzone_get_temp(struct thermal_zone_device *device,
int *temperature) int *temperature)
{ {
......
...@@ -333,7 +333,6 @@ static int mt7615_driver_own(struct mt7615_dev *dev) ...@@ -333,7 +333,6 @@ static int mt7615_driver_own(struct mt7615_dev *dev)
static int mt7615_load_patch(struct mt7615_dev *dev) static int mt7615_load_patch(struct mt7615_dev *dev)
{ {
const char *firmware = MT7615_ROM_PATCH;
const struct mt7615_patch_hdr *hdr; const struct mt7615_patch_hdr *hdr;
const struct firmware *fw = NULL; const struct firmware *fw = NULL;
int len, ret, sem; int len, ret, sem;
...@@ -349,7 +348,7 @@ static int mt7615_load_patch(struct mt7615_dev *dev) ...@@ -349,7 +348,7 @@ static int mt7615_load_patch(struct mt7615_dev *dev)
return -EAGAIN; return -EAGAIN;
} }
ret = request_firmware(&fw, firmware, dev->mt76.dev); ret = request_firmware(&fw, MT7615_ROM_PATCH, dev->mt76.dev);
if (ret) if (ret)
goto out; goto out;
...@@ -447,13 +446,11 @@ mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev, ...@@ -447,13 +446,11 @@ mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev,
static int mt7615_load_ram(struct mt7615_dev *dev) static int mt7615_load_ram(struct mt7615_dev *dev)
{ {
const struct firmware *fw;
const struct mt7615_fw_trailer *hdr; const struct mt7615_fw_trailer *hdr;
const char *n9_firmware = MT7615_FIRMWARE_N9; const struct firmware *fw;
const char *cr4_firmware = MT7615_FIRMWARE_CR4;
int ret; int ret;
ret = request_firmware(&fw, n9_firmware, dev->mt76.dev); ret = request_firmware(&fw, MT7615_FIRMWARE_N9, dev->mt76.dev);
if (ret) if (ret)
return ret; return ret;
...@@ -482,7 +479,7 @@ static int mt7615_load_ram(struct mt7615_dev *dev) ...@@ -482,7 +479,7 @@ static int mt7615_load_ram(struct mt7615_dev *dev)
release_firmware(fw); release_firmware(fw);
ret = request_firmware(&fw, cr4_firmware, dev->mt76.dev); ret = request_firmware(&fw, MT7615_FIRMWARE_CR4, dev->mt76.dev);
if (ret) if (ret)
return ret; return ret;
......
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
#define MT7615_RX_RING_SIZE 1024 #define MT7615_RX_RING_SIZE 1024
#define MT7615_RX_MCU_RING_SIZE 512 #define MT7615_RX_MCU_RING_SIZE 512
#define MT7615_FIRMWARE_CR4 "mt7615_cr4.bin" #define MT7615_FIRMWARE_CR4 "mediatek/mt7615_cr4.bin"
#define MT7615_FIRMWARE_N9 "mt7615_n9.bin" #define MT7615_FIRMWARE_N9 "mediatek/mt7615_n9.bin"
#define MT7615_ROM_PATCH "mt7615_rom_patch.bin" #define MT7615_ROM_PATCH "mediatek/mt7615_rom_patch.bin"
#define MT7615_EEPROM_SIZE 1024 #define MT7615_EEPROM_SIZE 1024
#define MT7615_TOKEN_SIZE 4096 #define MT7615_TOKEN_SIZE 4096
......
...@@ -98,17 +98,17 @@ config RT2800PCI_RT53XX ...@@ -98,17 +98,17 @@ config RT2800PCI_RT53XX
bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)" bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)"
default y default y
---help--- ---help---
This adds support for rt53xx wireless chipset family to the This adds support for rt53xx wireless chipset family to the
rt2800pci driver. rt2800pci driver.
Supported chips: RT5390 Supported chips: RT5390
config RT2800PCI_RT3290 config RT2800PCI_RT3290
bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)" bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)"
default y default y
---help--- ---help---
This adds support for rt3290 wireless chipset family to the This adds support for rt3290 wireless chipset family to the
rt2800pci driver. rt2800pci driver.
Supported chips: RT3290 Supported chips: RT3290
endif endif
config RT2500USB config RT2500USB
...@@ -176,16 +176,16 @@ config RT2800USB_RT3573 ...@@ -176,16 +176,16 @@ config RT2800USB_RT3573
config RT2800USB_RT53XX config RT2800USB_RT53XX
bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)" bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)"
---help--- ---help---
This adds support for rt53xx wireless chipset family to the This adds support for rt53xx wireless chipset family to the
rt2800usb driver. rt2800usb driver.
Supported chips: RT5370 Supported chips: RT5370
config RT2800USB_RT55XX config RT2800USB_RT55XX
bool "rt2800usb - Include support for rt55xx devices (EXPERIMENTAL)" bool "rt2800usb - Include support for rt55xx devices (EXPERIMENTAL)"
---help--- ---help---
This adds support for rt55xx wireless chipset family to the This adds support for rt55xx wireless chipset family to the
rt2800usb driver. rt2800usb driver.
Supported chips: RT5572 Supported chips: RT5572
config RT2800USB_UNKNOWN config RT2800USB_UNKNOWN
bool "rt2800usb - Include support for unknown (USB) devices" bool "rt2800usb - Include support for unknown (USB) devices"
......
...@@ -707,9 +707,6 @@ int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw) ...@@ -707,9 +707,6 @@ int rtw_download_firmware(struct rtw_dev *rtwdev, struct rtw_fw_state *fw)
rtwdev->h2c.last_box_num = 0; rtwdev->h2c.last_box_num = 0;
rtwdev->h2c.seq = 0; rtwdev->h2c.seq = 0;
rtw_fw_send_general_info(rtwdev);
rtw_fw_send_phydm_info(rtwdev);
rtw_flag_set(rtwdev, RTW_FLAG_FW_RUNNING); rtw_flag_set(rtwdev, RTW_FLAG_FW_RUNNING);
return 0; return 0;
......
...@@ -704,6 +704,10 @@ static int rtw_power_on(struct rtw_dev *rtwdev) ...@@ -704,6 +704,10 @@ static int rtw_power_on(struct rtw_dev *rtwdev)
goto err_off; goto err_off;
} }
/* send H2C after HCI has started */
rtw_fw_send_general_info(rtwdev);
rtw_fw_send_phydm_info(rtwdev);
wifi_only = !rtwdev->efuse.btcoex; wifi_only = !rtwdev->efuse.btcoex;
rtw_coex_power_on_setting(rtwdev); rtw_coex_power_on_setting(rtwdev);
rtw_coex_init_hw_config(rtwdev, wifi_only); rtw_coex_init_hw_config(rtwdev, wifi_only);
......
...@@ -90,16 +90,13 @@ static inline void *rtw_pci_get_tx_desc(struct rtw_pci_tx_ring *tx_ring, u8 idx) ...@@ -90,16 +90,13 @@ static inline void *rtw_pci_get_tx_desc(struct rtw_pci_tx_ring *tx_ring, u8 idx)
return tx_ring->r.head + offset; return tx_ring->r.head + offset;
} }
static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev, static void rtw_pci_free_tx_ring_skbs(struct rtw_dev *rtwdev,
struct rtw_pci_tx_ring *tx_ring) struct rtw_pci_tx_ring *tx_ring)
{ {
struct pci_dev *pdev = to_pci_dev(rtwdev->dev); struct pci_dev *pdev = to_pci_dev(rtwdev->dev);
struct rtw_pci_tx_data *tx_data; struct rtw_pci_tx_data *tx_data;
struct sk_buff *skb, *tmp; struct sk_buff *skb, *tmp;
dma_addr_t dma; dma_addr_t dma;
u8 *head = tx_ring->r.head;
u32 len = tx_ring->r.len;
int ring_sz = len * tx_ring->r.desc_size;
/* free every skb remained in tx list */ /* free every skb remained in tx list */
skb_queue_walk_safe(&tx_ring->queue, skb, tmp) { skb_queue_walk_safe(&tx_ring->queue, skb, tmp) {
...@@ -110,21 +107,30 @@ static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev, ...@@ -110,21 +107,30 @@ static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev,
pci_unmap_single(pdev, dma, skb->len, PCI_DMA_TODEVICE); pci_unmap_single(pdev, dma, skb->len, PCI_DMA_TODEVICE);
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
} }
}
static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev,
struct rtw_pci_tx_ring *tx_ring)
{
struct pci_dev *pdev = to_pci_dev(rtwdev->dev);
u8 *head = tx_ring->r.head;
u32 len = tx_ring->r.len;
int ring_sz = len * tx_ring->r.desc_size;
rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring);
/* free the ring itself */ /* free the ring itself */
pci_free_consistent(pdev, ring_sz, head, tx_ring->r.dma); pci_free_consistent(pdev, ring_sz, head, tx_ring->r.dma);
tx_ring->r.head = NULL; tx_ring->r.head = NULL;
} }
static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev, static void rtw_pci_free_rx_ring_skbs(struct rtw_dev *rtwdev,
struct rtw_pci_rx_ring *rx_ring) struct rtw_pci_rx_ring *rx_ring)
{ {
struct pci_dev *pdev = to_pci_dev(rtwdev->dev); struct pci_dev *pdev = to_pci_dev(rtwdev->dev);
struct sk_buff *skb; struct sk_buff *skb;
dma_addr_t dma;
u8 *head = rx_ring->r.head;
int buf_sz = RTK_PCI_RX_BUF_SIZE; int buf_sz = RTK_PCI_RX_BUF_SIZE;
int ring_sz = rx_ring->r.desc_size * rx_ring->r.len; dma_addr_t dma;
int i; int i;
for (i = 0; i < rx_ring->r.len; i++) { for (i = 0; i < rx_ring->r.len; i++) {
...@@ -137,6 +143,16 @@ static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev, ...@@ -137,6 +143,16 @@ static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev,
dev_kfree_skb(skb); dev_kfree_skb(skb);
rx_ring->buf[i] = NULL; rx_ring->buf[i] = NULL;
} }
}
static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev,
struct rtw_pci_rx_ring *rx_ring)
{
struct pci_dev *pdev = to_pci_dev(rtwdev->dev);
u8 *head = rx_ring->r.head;
int ring_sz = rx_ring->r.desc_size * rx_ring->r.len;
rtw_pci_free_rx_ring_skbs(rtwdev, rx_ring);
pci_free_consistent(pdev, ring_sz, head, rx_ring->r.dma); pci_free_consistent(pdev, ring_sz, head, rx_ring->r.dma);
} }
...@@ -484,6 +500,17 @@ static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) ...@@ -484,6 +500,17 @@ static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
rtwpci->rx_tag = 0; rtwpci->rx_tag = 0;
} }
static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci)
{
struct rtw_pci_tx_ring *tx_ring;
u8 queue;
for (queue = 0; queue < RTK_MAX_TX_QUEUE_NUM; queue++) {
tx_ring = &rtwpci->tx_rings[queue];
rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring);
}
}
static int rtw_pci_start(struct rtw_dev *rtwdev) static int rtw_pci_start(struct rtw_dev *rtwdev)
{ {
struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv;
...@@ -505,6 +532,7 @@ static void rtw_pci_stop(struct rtw_dev *rtwdev) ...@@ -505,6 +532,7 @@ static void rtw_pci_stop(struct rtw_dev *rtwdev)
spin_lock_irqsave(&rtwpci->irq_lock, flags); spin_lock_irqsave(&rtwpci->irq_lock, flags);
rtw_pci_disable_interrupt(rtwdev, rtwpci); rtw_pci_disable_interrupt(rtwdev, rtwpci);
rtw_pci_dma_release(rtwdev, rtwpci);
spin_unlock_irqrestore(&rtwpci->irq_lock, flags); spin_unlock_irqrestore(&rtwpci->irq_lock, flags);
} }
......
...@@ -1633,7 +1633,7 @@ static bool check_read_regs(struct zd_usb *usb, struct usb_req_read_regs *req, ...@@ -1633,7 +1633,7 @@ static bool check_read_regs(struct zd_usb *usb, struct usb_req_read_regs *req,
*/ */
if (rr->length < struct_size(regs, regs, count)) { if (rr->length < struct_size(regs, regs, count)) {
dev_dbg_f(zd_usb_dev(usb), dev_dbg_f(zd_usb_dev(usb),
"error: actual length %d less than expected %ld\n", "error: actual length %d less than expected %zu\n",
rr->length, struct_size(regs, regs, count)); rr->length, struct_size(regs, regs, count));
return false; return false;
} }
......
...@@ -661,7 +661,7 @@ static int st95hf_error_handling(struct st95hf_context *stcontext, ...@@ -661,7 +661,7 @@ static int st95hf_error_handling(struct st95hf_context *stcontext,
result = -ETIMEDOUT; result = -ETIMEDOUT;
else else
result = -EIO; result = -EIO;
return result; return result;
} }
/* Check for CRC err only if CRC is present in the tag response */ /* Check for CRC err only if CRC is present in the tag response */
......
...@@ -362,7 +362,7 @@ struct phy_device *of_phy_get_and_connect(struct net_device *dev, ...@@ -362,7 +362,7 @@ struct phy_device *of_phy_get_and_connect(struct net_device *dev,
int ret; int ret;
iface = of_get_phy_mode(np); iface = of_get_phy_mode(np);
if (iface < 0) if ((int)iface < 0)
return NULL; return NULL;
if (of_phy_is_fixed_link(np)) { if (of_phy_is_fixed_link(np)) {
ret = of_phy_register_fixed_link(np); ret = of_phy_register_fixed_link(np);
......
...@@ -155,7 +155,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) ...@@ -155,7 +155,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg)
err = -EINVAL; err = -EINVAL;
break; break;
} else if (cmd == PTP_EXTTS_REQUEST) { } else if (cmd == PTP_EXTTS_REQUEST) {
req.extts.flags &= ~PTP_EXTTS_VALID_FLAGS; req.extts.flags &= PTP_EXTTS_V1_VALID_FLAGS;
req.extts.rsv[0] = 0; req.extts.rsv[0] = 0;
req.extts.rsv[1] = 0; req.extts.rsv[1] = 0;
} }
...@@ -184,7 +184,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) ...@@ -184,7 +184,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg)
err = -EINVAL; err = -EINVAL;
break; break;
} else if (cmd == PTP_PEROUT_REQUEST) { } else if (cmd == PTP_PEROUT_REQUEST) {
req.perout.flags &= ~PTP_PEROUT_VALID_FLAGS; req.perout.flags &= PTP_PEROUT_V1_VALID_FLAGS;
req.perout.rsv[0] = 0; req.perout.rsv[0] = 0;
req.perout.rsv[1] = 0; req.perout.rsv[1] = 0;
req.perout.rsv[2] = 0; req.perout.rsv[2] = 0;
......
...@@ -282,7 +282,6 @@ enum { ...@@ -282,7 +282,6 @@ enum {
MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT = 0x940, MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT = 0x940,
MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT = 0x941, MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT = 0x941,
MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT = 0x942, MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT = 0x942,
MLX5_CMD_OP_SYNC_STEERING = 0xb00,
MLX5_CMD_OP_FPGA_CREATE_QP = 0x960, MLX5_CMD_OP_FPGA_CREATE_QP = 0x960,
MLX5_CMD_OP_FPGA_MODIFY_QP = 0x961, MLX5_CMD_OP_FPGA_MODIFY_QP = 0x961,
MLX5_CMD_OP_FPGA_QUERY_QP = 0x962, MLX5_CMD_OP_FPGA_QUERY_QP = 0x962,
...@@ -296,6 +295,7 @@ enum { ...@@ -296,6 +295,7 @@ enum {
MLX5_CMD_OP_DESTROY_UCTX = 0xa06, MLX5_CMD_OP_DESTROY_UCTX = 0xa06,
MLX5_CMD_OP_CREATE_UMEM = 0xa08, MLX5_CMD_OP_CREATE_UMEM = 0xa08,
MLX5_CMD_OP_DESTROY_UMEM = 0xa0a, MLX5_CMD_OP_DESTROY_UMEM = 0xa0a,
MLX5_CMD_OP_SYNC_STEERING = 0xb00,
MLX5_CMD_OP_MAX MLX5_CMD_OP_MAX
}; };
...@@ -487,7 +487,7 @@ union mlx5_ifc_gre_key_bits { ...@@ -487,7 +487,7 @@ union mlx5_ifc_gre_key_bits {
struct mlx5_ifc_fte_match_set_misc_bits { struct mlx5_ifc_fte_match_set_misc_bits {
u8 gre_c_present[0x1]; u8 gre_c_present[0x1];
u8 reserved_auto1[0x1]; u8 reserved_at_1[0x1];
u8 gre_k_present[0x1]; u8 gre_k_present[0x1];
u8 gre_s_present[0x1]; u8 gre_s_present[0x1];
u8 source_vhca_port[0x4]; u8 source_vhca_port[0x4];
...@@ -5054,50 +5054,50 @@ struct mlx5_ifc_query_hca_cap_in_bits { ...@@ -5054,50 +5054,50 @@ struct mlx5_ifc_query_hca_cap_in_bits {
struct mlx5_ifc_other_hca_cap_bits { struct mlx5_ifc_other_hca_cap_bits {
u8 roce[0x1]; u8 roce[0x1];
u8 reserved_0[0x27f]; u8 reserved_at_1[0x27f];
}; };
struct mlx5_ifc_query_other_hca_cap_out_bits { struct mlx5_ifc_query_other_hca_cap_out_bits {
u8 status[0x8]; u8 status[0x8];
u8 reserved_0[0x18]; u8 reserved_at_8[0x18];
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_1[0x40]; u8 reserved_at_40[0x40];
struct mlx5_ifc_other_hca_cap_bits other_capability; struct mlx5_ifc_other_hca_cap_bits other_capability;
}; };
struct mlx5_ifc_query_other_hca_cap_in_bits { struct mlx5_ifc_query_other_hca_cap_in_bits {
u8 opcode[0x10]; u8 opcode[0x10];
u8 reserved_0[0x10]; u8 reserved_at_10[0x10];
u8 reserved_1[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10]; u8 op_mod[0x10];
u8 reserved_2[0x10]; u8 reserved_at_40[0x10];
u8 function_id[0x10]; u8 function_id[0x10];
u8 reserved_3[0x20]; u8 reserved_at_60[0x20];
}; };
struct mlx5_ifc_modify_other_hca_cap_out_bits { struct mlx5_ifc_modify_other_hca_cap_out_bits {
u8 status[0x8]; u8 status[0x8];
u8 reserved_0[0x18]; u8 reserved_at_8[0x18];
u8 syndrome[0x20]; u8 syndrome[0x20];
u8 reserved_1[0x40]; u8 reserved_at_40[0x40];
}; };
struct mlx5_ifc_modify_other_hca_cap_in_bits { struct mlx5_ifc_modify_other_hca_cap_in_bits {
u8 opcode[0x10]; u8 opcode[0x10];
u8 reserved_0[0x10]; u8 reserved_at_10[0x10];
u8 reserved_1[0x10]; u8 reserved_at_20[0x10];
u8 op_mod[0x10];