mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'net-7.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Paolo Abeni:
"Including fixes from netfilter.
Previous releases - regressions:
- ethtool: fix NULL pointer dereference in phy_reply_size
- netfilter:
- allocate hook ops while under mutex
- close dangling table module init race
- restore nf_conntrack helper propagation via expectation
- tcp:
- fix potential UAF in reqsk_timer_handler().
- fix out-of-bounds access for twsk in tcp_ao_established_key().
- vsock: fix empty payload in tap skb for non-linear buffers
- hsr: fix NULL pointer dereference in hsr_get_node_data()
- eth:
- cortina: fix RX drop accounting
- ice: fix locking in ice_dcb_rebuild()
Previous releases - always broken:
- napi: avoid gro timer misfiring at end of busypoll
- sched:
- dualpi2: initialize timer earlier in dualpi2_init()
- sch_cbs: Call qdisc_reset for child qdisc
- shaper:
- fix ordering issue in net_shaper_commit()
- reject handle IDs exceeding internal bit-width
- ipv6: flowlabel: enforce per-netns limit for unprivileged callers
- tls: fix off-by-one in sg_chain entry count for wrapped sk_msg ring
- smc: avoid NULL deref of conn->lnk in smc_msg_event tracepoint
- sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
- batman-adv:
- reject new tp_meter sessions during teardown
- purge non-released claims
- eth:
- i40e: cleanup PTP registration on probe failure
- idpf: fix double free and use-after-free in aux device error paths
- ena: fix potential use-after-free in get_timestamp"
* tag 'net-7.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (88 commits)
net: phy: DP83TC811: add reading of abilities
net: tls: prevent chain-after-chain in plain text SG
net: tls: fix off-by-one in sg_chain entry count for wrapped sk_msg ring
net/smc: reject CHID-0 ACCEPT that matches an empty ism_dev slot
macsec: use rcu_work to defer TX SA crypto cleanup out of softirq
macsec: use rcu_work to defer RX SA crypto cleanup out of softirq
macsec: introduce dedicated workqueue for SA crypto cleanup
net: net_failover: Fix the deadlock in slave register
MAINTAINERS: update atlantic driver maintainer
selftests/tc-testing: Add QFQ/CBS qlen underflow test
net/sched: sch_cbs: Call qdisc_reset for child qdisc
FDDI: defza: Sanitise the reset safety timer
net: ethernet: ravb: Do not check URAM suspension when WoL is active
ethtool: fix ethnl_bitmap32_not_zero() bit interval semantics
net/smc: avoid NULL deref of conn->lnk in smc_msg_event tracepoint
net/smc: fix sleep-inside-lock in __smc_setsockopt() causing local DoS
net: atm: fix skb leak in sigd_send() default branch
net: ethtool: phy: avoid NULL deref when PHY driver is unbound
net: atlantic: preserve PCI wake-from-D3 on shutdown when WOL enabled
net: shaper: reject QUEUE scope handle with missing id
...
This commit is contained in:
@@ -69,6 +69,15 @@ properties:
|
||||
header:
|
||||
description: For C-compatible languages, header which already defines this value.
|
||||
type: string
|
||||
scope:
|
||||
description: |
|
||||
Visibility of this definition. "uapi" (default) renders into
|
||||
the uAPI header, "kernel" renders into the kernel-side
|
||||
generated header, "user" renders into the user-side
|
||||
generated header. When combined with `header:`, the
|
||||
definition is not rendered, and the named header is
|
||||
included only by code matching the scope.
|
||||
enum: [ uapi, kernel, user ]
|
||||
type:
|
||||
enum: [ const, enum, flags ]
|
||||
doc:
|
||||
|
||||
@@ -83,6 +83,15 @@ properties:
|
||||
header:
|
||||
description: For C-compatible languages, header which already defines this value.
|
||||
type: string
|
||||
scope:
|
||||
description: |
|
||||
Visibility of this definition. "uapi" (default) renders into
|
||||
the uAPI header, "kernel" renders into the kernel-side
|
||||
generated header, "user" renders into the user-side
|
||||
generated header. When combined with `header:`, the
|
||||
definition is not rendered, and the named header is
|
||||
included only by code matching the scope.
|
||||
enum: [ uapi, kernel, user ]
|
||||
type:
|
||||
enum: [ const, enum, flags, struct ] # Trim
|
||||
doc:
|
||||
|
||||
@@ -55,6 +55,15 @@ properties:
|
||||
header:
|
||||
description: For C-compatible languages, header which already defines this value.
|
||||
type: string
|
||||
scope:
|
||||
description: |
|
||||
Visibility of this definition. "uapi" (default) renders into
|
||||
the uAPI header, "kernel" renders into the kernel-side
|
||||
generated header, "user" renders into the user-side
|
||||
generated header. When combined with `header:`, the
|
||||
definition is not rendered, and the named header is
|
||||
included only by code matching the scope.
|
||||
enum: [ uapi, kernel, user ]
|
||||
type:
|
||||
enum: [ const, enum, flags ]
|
||||
doc:
|
||||
|
||||
@@ -87,6 +87,15 @@ properties:
|
||||
header:
|
||||
description: For C-compatible languages, header which already defines this value.
|
||||
type: string
|
||||
scope:
|
||||
description: |
|
||||
Visibility of this definition. "uapi" (default) renders into
|
||||
the uAPI header, "kernel" renders into the kernel-side
|
||||
generated header, "user" renders into the user-side
|
||||
generated header. When combined with `header:`, the
|
||||
definition is not rendered, and the named header is
|
||||
included only by code matching the scope.
|
||||
enum: [ uapi, kernel, user ]
|
||||
type:
|
||||
enum: [ const, enum, flags, struct ] # Trim
|
||||
doc:
|
||||
|
||||
@@ -33,6 +33,11 @@ doc: |
|
||||
@cap-get operation.
|
||||
|
||||
definitions:
|
||||
-
|
||||
type: const
|
||||
name: max-handle-id
|
||||
value: 0x3fffffe
|
||||
scope: kernel
|
||||
-
|
||||
type: enum
|
||||
name: scope
|
||||
@@ -140,6 +145,8 @@ attribute-sets:
|
||||
-
|
||||
name: id
|
||||
type: u32
|
||||
checks:
|
||||
max: max-handle-id
|
||||
doc: |
|
||||
Numeric identifier of a shaper. The id semantic depends on
|
||||
the scope. For @queue scope it's the queue id and for @node
|
||||
|
||||
+10
-4
@@ -68,6 +68,12 @@ Maintainers List
|
||||
first. When adding to this list, please keep the entries in
|
||||
alphabetical order.
|
||||
|
||||
3C509 NETWORK DRIVER
|
||||
M: "Maciej W. Rozycki" <macro@orcam.me.uk>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/ethernet/3com/3c509.c
|
||||
|
||||
3C59X NETWORK DRIVER
|
||||
M: Steffen Klassert <klassert@kernel.org>
|
||||
L: netdev@vger.kernel.org
|
||||
@@ -2015,7 +2021,7 @@ F: Documentation/hwmon/aquacomputer_d5next.rst
|
||||
F: drivers/hwmon/aquacomputer_d5next.c
|
||||
|
||||
AQUANTIA ETHERNET DRIVER (atlantic)
|
||||
M: Igor Russkikh <irusskikh@marvell.com>
|
||||
M: Sukhdeep Singh <sukhdeeps@marvell.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
W: https://www.marvell.com/
|
||||
@@ -2024,7 +2030,7 @@ F: Documentation/networking/device_drivers/ethernet/aquantia/atlantic.rst
|
||||
F: drivers/net/ethernet/aquantia/atlantic/
|
||||
|
||||
AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM
|
||||
M: Egor Pomozov <epomozov@marvell.com>
|
||||
M: Sukhdeep Singh <sukhdeeps@marvell.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
W: http://www.aquantia.com
|
||||
@@ -4181,8 +4187,8 @@ F: include/uapi/linux/sonet.h
|
||||
F: net/atm/
|
||||
|
||||
ATMEL MACB ETHERNET DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||||
M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
M: Théo Lebrun <theo.lebrun@bootlin.com>
|
||||
R: Conor Dooley <conor.dooley@microchip.com>
|
||||
S: Maintained
|
||||
F: drivers/net/ethernet/cadence/
|
||||
|
||||
|
||||
@@ -1782,20 +1782,23 @@ void ena_com_phc_destroy(struct ena_com_dev *ena_dev)
|
||||
|
||||
int ena_com_phc_get_timestamp(struct ena_com_dev *ena_dev, u64 *timestamp)
|
||||
{
|
||||
volatile struct ena_admin_phc_resp *resp = ena_dev->phc.virt_addr;
|
||||
const ktime_t zero_system_time = ktime_set(0, 0);
|
||||
struct ena_com_phc_info *phc = &ena_dev->phc;
|
||||
volatile struct ena_admin_phc_resp *resp;
|
||||
ktime_t expire_time;
|
||||
ktime_t block_time;
|
||||
unsigned long flags = 0;
|
||||
int ret = 0;
|
||||
|
||||
spin_lock_irqsave(&phc->lock, flags);
|
||||
|
||||
if (!phc->active) {
|
||||
spin_unlock_irqrestore(&phc->lock, flags);
|
||||
netdev_err(ena_dev->net_device, "PHC feature is not active in the device\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&phc->lock, flags);
|
||||
resp = ena_dev->phc.virt_addr;
|
||||
|
||||
/* Check if PHC is in blocked state */
|
||||
if (unlikely(ktime_compare(phc->system_time, zero_system_time))) {
|
||||
|
||||
@@ -46,9 +46,12 @@ static int ena_phc_gettimex64(struct ptp_clock_info *clock_info,
|
||||
|
||||
spin_unlock_irqrestore(&phc_info->lock, flags);
|
||||
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
*ts = ns_to_timespec64(timestamp_nsec);
|
||||
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ena_phc_settime64(struct ptp_clock_info *clock_info,
|
||||
|
||||
@@ -910,7 +910,9 @@ static int xgene_mdiobus_register(struct xgene_enet_pdata *pdata,
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
return of_mdiobus_register(mdio, mdio_np);
|
||||
ret = of_mdiobus_register(mdio, mdio_np);
|
||||
of_node_put(mdio_np);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Mask out all PHYs from auto probing. */
|
||||
|
||||
@@ -371,7 +371,7 @@ static void aq_pci_shutdown(struct pci_dev *pdev)
|
||||
pci_disable_device(pdev);
|
||||
|
||||
if (system_state == SYSTEM_POWER_OFF) {
|
||||
pci_wake_from_d3(pdev, false);
|
||||
pci_wake_from_d3(pdev, self->aq_hw->aq_nic_cfg->wol);
|
||||
pci_set_power_state(pdev, PCI_D3hot);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1271,7 +1271,6 @@ static const struct net_device_ops net_ops = {
|
||||
|
||||
static void __init reset_chip(struct net_device *dev)
|
||||
{
|
||||
#if !defined(CONFIG_MACH_MX31ADS)
|
||||
struct net_local *lp = netdev_priv(dev);
|
||||
unsigned long reset_start_time;
|
||||
|
||||
@@ -1298,7 +1297,6 @@ static void __init reset_chip(struct net_device *dev)
|
||||
while ((readreg(dev, PP_SelfST) & INIT_DONE) == 0 &&
|
||||
time_before(jiffies, reset_start_time + 2))
|
||||
;
|
||||
#endif /* !CONFIG_MACH_MX31ADS */
|
||||
}
|
||||
|
||||
/* This is the real probe routine.
|
||||
|
||||
@@ -122,6 +122,9 @@ struct gemini_ethernet_port {
|
||||
struct napi_struct napi;
|
||||
struct hrtimer rx_coalesce_timer;
|
||||
unsigned int rx_coalesce_nsecs;
|
||||
struct sk_buff *rx_skb;
|
||||
unsigned int rx_frag_nr;
|
||||
|
||||
unsigned int freeq_refill;
|
||||
struct gmac_txq txq[TX_QUEUE_NUM];
|
||||
unsigned int txq_order;
|
||||
@@ -1442,10 +1445,11 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)
|
||||
unsigned short m = (1 << port->rxq_order) - 1;
|
||||
struct gemini_ethernet *geth = port->geth;
|
||||
void __iomem *ptr_reg = port->rxq_rwptr;
|
||||
unsigned int frag_nr = port->rx_frag_nr;
|
||||
struct sk_buff *skb = port->rx_skb;
|
||||
unsigned int frame_len, frag_len;
|
||||
struct gmac_rxdesc *rx = NULL;
|
||||
struct gmac_queue_page *gpage;
|
||||
static struct sk_buff *skb;
|
||||
union gmac_rxdesc_0 word0;
|
||||
union gmac_rxdesc_1 word1;
|
||||
union gmac_rxdesc_3 word3;
|
||||
@@ -1455,7 +1459,6 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)
|
||||
unsigned short r, w;
|
||||
union dma_rwptr rw;
|
||||
dma_addr_t mapping;
|
||||
int frag_nr = 0;
|
||||
|
||||
spin_lock_irqsave(&geth->irq_lock, flags);
|
||||
rw.bits32 = readl(ptr_reg);
|
||||
@@ -1491,10 +1494,11 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)
|
||||
gpage = gmac_get_queue_page(geth, port, mapping + PAGE_SIZE);
|
||||
if (!gpage) {
|
||||
dev_err(geth->dev, "could not find mapping\n");
|
||||
port->stats.rx_dropped++;
|
||||
if (skb) {
|
||||
napi_free_frags(&port->napi);
|
||||
port->stats.rx_dropped++;
|
||||
skb = NULL;
|
||||
frag_nr = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -1504,6 +1508,8 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)
|
||||
if (skb) {
|
||||
napi_free_frags(&port->napi);
|
||||
port->stats.rx_dropped++;
|
||||
skb = NULL;
|
||||
frag_nr = 0;
|
||||
}
|
||||
|
||||
skb = gmac_skb_if_good_frame(port, word0, frame_len);
|
||||
@@ -1538,6 +1544,7 @@ static unsigned int gmac_rx(struct net_device *netdev, unsigned int budget)
|
||||
if (word3.bits32 & EOF_BIT) {
|
||||
napi_gro_frags(&port->napi);
|
||||
skb = NULL;
|
||||
frag_nr = 0;
|
||||
--budget;
|
||||
}
|
||||
continue;
|
||||
@@ -1546,6 +1553,7 @@ err_drop:
|
||||
if (skb) {
|
||||
napi_free_frags(&port->napi);
|
||||
skb = NULL;
|
||||
frag_nr = 0;
|
||||
}
|
||||
|
||||
if (mapping)
|
||||
@@ -1554,6 +1562,8 @@ err_drop:
|
||||
port->stats.rx_dropped++;
|
||||
}
|
||||
|
||||
port->rx_skb = skb;
|
||||
port->rx_frag_nr = frag_nr;
|
||||
writew(r, ptr_reg);
|
||||
return budget;
|
||||
}
|
||||
@@ -1881,6 +1891,8 @@ static int gmac_stop(struct net_device *netdev)
|
||||
gmac_disable_tx_rx(netdev);
|
||||
gmac_stop_dma(port);
|
||||
napi_disable(&port->napi);
|
||||
port->rx_skb = NULL;
|
||||
port->rx_frag_nr = 0;
|
||||
|
||||
gmac_enable_irq(netdev, 0);
|
||||
gmac_cleanup_rxq(netdev);
|
||||
|
||||
@@ -1318,6 +1318,7 @@ void i40e_ptp_restore_hw_time(struct i40e_pf *pf);
|
||||
void i40e_ptp_init(struct i40e_pf *pf);
|
||||
void i40e_ptp_stop(struct i40e_pf *pf);
|
||||
int i40e_ptp_alloc_pins(struct i40e_pf *pf);
|
||||
void i40e_ptp_free_pins(struct i40e_pf *pf);
|
||||
int i40e_update_adq_vsi_queues(struct i40e_vsi *vsi, int vsi_offset);
|
||||
int i40e_is_vsi_uplink_mode_veb(struct i40e_vsi *vsi);
|
||||
int i40e_get_partition_bw_setting(struct i40e_pf *pf);
|
||||
|
||||
@@ -16108,9 +16108,11 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
/* Unwind what we've done if something failed in the setup */
|
||||
err_vsis:
|
||||
set_bit(__I40E_DOWN, pf->state);
|
||||
i40e_ptp_stop(pf);
|
||||
i40e_clear_interrupt_scheme(pf);
|
||||
kfree(pf->vsi);
|
||||
err_switch_setup:
|
||||
i40e_ptp_free_pins(pf);
|
||||
i40e_reset_interrupt_capability(pf);
|
||||
timer_shutdown_sync(&pf->service_timer);
|
||||
err_mac_addr:
|
||||
|
||||
@@ -940,12 +940,13 @@ int i40e_ptp_hwtstamp_get(struct net_device *netdev,
|
||||
*
|
||||
* Release memory allocated for PTP pins.
|
||||
**/
|
||||
static void i40e_ptp_free_pins(struct i40e_pf *pf)
|
||||
void i40e_ptp_free_pins(struct i40e_pf *pf)
|
||||
{
|
||||
if (i40e_is_ptp_pin_dev(&pf->hw)) {
|
||||
kfree(pf->ptp_pins);
|
||||
kfree(pf->ptp_caps.pin_config);
|
||||
pf->ptp_pins = NULL;
|
||||
pf->ptp_caps.pin_config = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -537,14 +537,14 @@ void ice_dcb_rebuild(struct ice_pf *pf)
|
||||
struct ice_dcbx_cfg *err_cfg;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&pf->tc_mutex);
|
||||
|
||||
ret = ice_query_port_ets(pf->hw.port_info, &buf, sizeof(buf), NULL);
|
||||
if (ret) {
|
||||
dev_err(dev, "Query Port ETS failed\n");
|
||||
goto dcb_error;
|
||||
}
|
||||
|
||||
mutex_lock(&pf->tc_mutex);
|
||||
|
||||
if (!pf->hw.port_info->qos_cfg.is_sw_lldp)
|
||||
ice_cfg_etsrec_defaults(pf->hw.port_info);
|
||||
|
||||
|
||||
@@ -2523,6 +2523,8 @@ ice_dpll_rclk_state_on_pin_set(const struct dpll_pin *pin, void *pin_priv,
|
||||
if (hw_idx < 0)
|
||||
goto unlock;
|
||||
hw_idx -= pf->dplls.base_rclk_idx;
|
||||
if (hw_idx >= ICE_DPLL_RCLK_NUM_MAX)
|
||||
goto unlock;
|
||||
|
||||
if ((enable && p->state[hw_idx] == DPLL_PIN_STATE_CONNECTED) ||
|
||||
(!enable && p->state[hw_idx] == DPLL_PIN_STATE_DISCONNECTED)) {
|
||||
@@ -2586,6 +2588,9 @@ ice_dpll_rclk_state_on_pin_get(const struct dpll_pin *pin, void *pin_priv,
|
||||
hw_idx = ice_dpll_pin_get_parent_idx(p, parent_pin);
|
||||
if (hw_idx < 0)
|
||||
goto unlock;
|
||||
hw_idx -= pf->dplls.base_rclk_idx;
|
||||
if (hw_idx >= ICE_DPLL_RCLK_NUM_MAX)
|
||||
goto unlock;
|
||||
|
||||
ret = ice_dpll_pin_state_update(pf, p, ICE_DPLL_PIN_TYPE_RCLK_INPUT,
|
||||
extack);
|
||||
|
||||
@@ -8,6 +8,22 @@
|
||||
|
||||
#define ICE_DPLL_RCLK_NUM_MAX 4
|
||||
|
||||
#define ICE_CGU_R10 0x28
|
||||
#define ICE_CGU_R10_SYNCE_CLKO_SEL GENMASK(8, 5)
|
||||
#define ICE_CGU_R10_SYNCE_CLKODIV_M1 GENMASK(13, 9)
|
||||
#define ICE_CGU_R10_SYNCE_CLKODIV_LOAD BIT(14)
|
||||
#define ICE_CGU_R10_SYNCE_DCK_RST BIT(15)
|
||||
#define ICE_CGU_R10_SYNCE_ETHCLKO_SEL GENMASK(18, 16)
|
||||
#define ICE_CGU_R10_SYNCE_ETHDIV_M1 GENMASK(23, 19)
|
||||
#define ICE_CGU_R10_SYNCE_ETHDIV_LOAD BIT(24)
|
||||
#define ICE_CGU_R10_SYNCE_DCK2_RST BIT(25)
|
||||
#define ICE_CGU_R10_SYNCE_S_REF_CLK GENMASK(31, 27)
|
||||
|
||||
#define ICE_CGU_R11 0x2C
|
||||
#define ICE_CGU_R11_SYNCE_S_BYP_CLK GENMASK(6, 1)
|
||||
|
||||
#define ICE_CGU_BYPASS_MUX_OFFSET_E825C 3
|
||||
|
||||
/**
|
||||
* enum ice_dpll_pin_sw - enumerate ice software pin indices:
|
||||
* @ICE_DPLL_PIN_SW_1_IDX: index of first SW pin
|
||||
@@ -157,19 +173,3 @@ static inline void ice_dpll_deinit(struct ice_pf *pf) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#define ICE_CGU_R10 0x28
|
||||
#define ICE_CGU_R10_SYNCE_CLKO_SEL GENMASK(8, 5)
|
||||
#define ICE_CGU_R10_SYNCE_CLKODIV_M1 GENMASK(13, 9)
|
||||
#define ICE_CGU_R10_SYNCE_CLKODIV_LOAD BIT(14)
|
||||
#define ICE_CGU_R10_SYNCE_DCK_RST BIT(15)
|
||||
#define ICE_CGU_R10_SYNCE_ETHCLKO_SEL GENMASK(18, 16)
|
||||
#define ICE_CGU_R10_SYNCE_ETHDIV_M1 GENMASK(23, 19)
|
||||
#define ICE_CGU_R10_SYNCE_ETHDIV_LOAD BIT(24)
|
||||
#define ICE_CGU_R10_SYNCE_DCK2_RST BIT(25)
|
||||
#define ICE_CGU_R10_SYNCE_S_REF_CLK GENMASK(31, 27)
|
||||
|
||||
#define ICE_CGU_R11 0x2C
|
||||
#define ICE_CGU_R11_SYNCE_S_BYP_CLK GENMASK(6, 1)
|
||||
|
||||
#define ICE_CGU_BYPASS_MUX_OFFSET_E825C 3
|
||||
|
||||
@@ -8046,7 +8046,7 @@ int ice_set_rss_hfunc(struct ice_vsi *vsi, u8 hfunc)
|
||||
ctx->info.q_opt_rss |=
|
||||
FIELD_PREP(ICE_AQ_VSI_Q_OPT_RSS_HASH_M, hfunc);
|
||||
ctx->info.q_opt_tc = vsi->info.q_opt_tc;
|
||||
ctx->info.q_opt_flags = vsi->info.q_opt_rss;
|
||||
ctx->info.q_opt_flags = vsi->info.q_opt_flags;
|
||||
|
||||
err = ice_update_vsi(hw, vsi->idx, ctx, NULL);
|
||||
if (err) {
|
||||
|
||||
@@ -90,7 +90,10 @@ static int idpf_plug_vport_aux_dev(struct iidc_rdma_core_dev_info *cdev_info,
|
||||
return 0;
|
||||
|
||||
err_aux_dev_add:
|
||||
ida_free(&idpf_idc_ida, adev->id);
|
||||
vdev_info->adev = NULL;
|
||||
auxiliary_device_uninit(adev);
|
||||
return ret;
|
||||
err_aux_dev_init:
|
||||
ida_free(&idpf_idc_ida, adev->id);
|
||||
err_ida_alloc:
|
||||
@@ -228,7 +231,10 @@ static int idpf_plug_core_aux_dev(struct iidc_rdma_core_dev_info *cdev_info)
|
||||
return 0;
|
||||
|
||||
err_aux_dev_add:
|
||||
ida_free(&idpf_idc_ida, adev->id);
|
||||
cdev_info->adev = NULL;
|
||||
auxiliary_device_uninit(adev);
|
||||
return ret;
|
||||
err_aux_dev_init:
|
||||
ida_free(&idpf_idc_ida, adev->id);
|
||||
err_ida_alloc:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user