mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'net-7.0-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from wireless, Bluetooth and netfilter. Nothing too exciting here, mostly fixes for corner cases. Current release - fix to a fix: - bonding: prevent potential infinite loop in bond_header_parse() Current release - new code bugs: - wifi: mac80211: check tdls flag in ieee80211_tdls_oper Previous releases - regressions: - af_unix: give up GC if MSG_PEEK intervened - netfilter: conntrack: add missing netlink policy validations - NFC: nxp-nci: allow GPIOs to sleep" * tag 'net-7.0-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (78 commits) MPTCP: fix lock class name family in pm_nl_create_listen_socket icmp: fix NULL pointer dereference in icmp_tag_validation() net: dsa: bcm_sf2: fix missing clk_disable_unprepare() in error paths net: shaper: protect from late creation of hierarchy net: shaper: protect late read accesses to the hierarchy net: mvpp2: guard flow control update with global_tx_fc in buffer switching nfnetlink_osf: validate individual option lengths in fingerprints netfilter: nf_tables: release flowtable after rcu grace period on error netfilter: bpf: defer hook memory release until rcu readers are done net: bonding: fix NULL deref in bond_debug_rlb_hash_show udp_tunnel: fix NULL deref caused by udp_sock_create6 when CONFIG_IPV6=n net/mlx5e: Fix race condition during IPSec ESN update net/mlx5e: Prevent concurrent access to IPSec ASO context net/mlx5: qos: Restrict RTNL area to avoid a lock cycle ipv6: add NULL checks for idev in SRv6 paths NFC: nxp-nci: allow GPIOs to sleep net: macb: fix uninitialized rx_fs_lock net: macb: fix use-after-free access to PTP clock netdevsim: drop PSP ext ref on forward failure wifi: mac80211: always free skb on ieee80211_tx_prepare_skb() failure ...
This commit is contained in:
@@ -247,8 +247,8 @@ operations:
|
||||
flags: [admin-perm]
|
||||
|
||||
do:
|
||||
pre: net-shaper-nl-pre-doit
|
||||
post: net-shaper-nl-post-doit
|
||||
pre: net-shaper-nl-pre-doit-write
|
||||
post: net-shaper-nl-post-doit-write
|
||||
request:
|
||||
attributes:
|
||||
- ifindex
|
||||
@@ -278,8 +278,8 @@ operations:
|
||||
flags: [admin-perm]
|
||||
|
||||
do:
|
||||
pre: net-shaper-nl-pre-doit
|
||||
post: net-shaper-nl-post-doit
|
||||
pre: net-shaper-nl-pre-doit-write
|
||||
post: net-shaper-nl-post-doit-write
|
||||
request:
|
||||
attributes: *ns-binding
|
||||
|
||||
@@ -309,8 +309,8 @@ operations:
|
||||
flags: [admin-perm]
|
||||
|
||||
do:
|
||||
pre: net-shaper-nl-pre-doit
|
||||
post: net-shaper-nl-post-doit
|
||||
pre: net-shaper-nl-pre-doit-write
|
||||
post: net-shaper-nl-post-doit-write
|
||||
request:
|
||||
attributes:
|
||||
- ifindex
|
||||
|
||||
@@ -787,6 +787,8 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
|
||||
*/
|
||||
if (soc_type == QCA_WCN3988)
|
||||
rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
|
||||
else if (soc_type == QCA_WCN3998)
|
||||
rom_ver = ((soc_ver & 0x0000f000) >> 0x07) | (soc_ver & 0x0000000f);
|
||||
else
|
||||
rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
|
||||
|
||||
|
||||
@@ -257,9 +257,10 @@ static void fwnet_header_cache_update(struct hh_cache *hh,
|
||||
memcpy((u8 *)hh->hh_data + HH_DATA_OFF(FWNET_HLEN), haddr, net->addr_len);
|
||||
}
|
||||
|
||||
static int fwnet_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||
static int fwnet_header_parse(const struct sk_buff *skb, const struct net_device *dev,
|
||||
unsigned char *haddr)
|
||||
{
|
||||
memcpy(haddr, skb->dev->dev_addr, FWNET_ALEN);
|
||||
memcpy(haddr, dev->dev_addr, FWNET_ALEN);
|
||||
|
||||
return FWNET_ALEN;
|
||||
}
|
||||
|
||||
@@ -34,11 +34,17 @@ static int bond_debug_rlb_hash_show(struct seq_file *m, void *v)
|
||||
for (; hash_index != RLB_NULL_INDEX;
|
||||
hash_index = client_info->used_next) {
|
||||
client_info = &(bond_info->rx_hashtbl[hash_index]);
|
||||
seq_printf(m, "%-15pI4 %-15pI4 %-17pM %s\n",
|
||||
&client_info->ip_src,
|
||||
&client_info->ip_dst,
|
||||
&client_info->mac_dst,
|
||||
client_info->slave->dev->name);
|
||||
if (client_info->slave)
|
||||
seq_printf(m, "%-15pI4 %-15pI4 %-17pM %s\n",
|
||||
&client_info->ip_src,
|
||||
&client_info->ip_dst,
|
||||
&client_info->mac_dst,
|
||||
client_info->slave->dev->name);
|
||||
else
|
||||
seq_printf(m, "%-15pI4 %-15pI4 %-17pM (none)\n",
|
||||
&client_info->ip_src,
|
||||
&client_info->ip_dst,
|
||||
&client_info->mac_dst);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&bond->mode_lock);
|
||||
|
||||
@@ -1530,9 +1530,11 @@ static int bond_header_create(struct sk_buff *skb, struct net_device *bond_dev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||
static int bond_header_parse(const struct sk_buff *skb,
|
||||
const struct net_device *dev,
|
||||
unsigned char *haddr)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(skb->dev);
|
||||
struct bonding *bond = netdev_priv(dev);
|
||||
const struct header_ops *slave_ops;
|
||||
struct slave *slave;
|
||||
int ret = 0;
|
||||
@@ -1542,7 +1544,7 @@ static int bond_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||
if (slave) {
|
||||
slave_ops = READ_ONCE(slave->dev->header_ops);
|
||||
if (slave_ops && slave_ops->parse)
|
||||
ret = slave_ops->parse(skb, haddr);
|
||||
ret = slave_ops->parse(skb, slave->dev, haddr);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
|
||||
@@ -980,15 +980,19 @@ static int bcm_sf2_sw_resume(struct dsa_switch *ds)
|
||||
ret = bcm_sf2_sw_rst(priv);
|
||||
if (ret) {
|
||||
pr_err("%s: failed to software reset switch\n", __func__);
|
||||
if (!priv->wol_ports_mask)
|
||||
clk_disable_unprepare(priv->clk);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bcm_sf2_crossbar_setup(priv);
|
||||
|
||||
ret = bcm_sf2_cfp_resume(ds);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
if (!priv->wol_ports_mask)
|
||||
clk_disable_unprepare(priv->clk);
|
||||
return ret;
|
||||
|
||||
}
|
||||
if (priv->hw_params.num_gphy == 1)
|
||||
bcm_sf2_gphy_enable_set(ds, true);
|
||||
|
||||
|
||||
@@ -3083,7 +3083,6 @@ static void airoha_remove(struct platform_device *pdev)
|
||||
if (!port)
|
||||
continue;
|
||||
|
||||
airoha_dev_stop(port->dev);
|
||||
unregister_netdev(port->dev);
|
||||
airoha_metadata_dst_free(port);
|
||||
}
|
||||
|
||||
@@ -2929,6 +2929,8 @@ static int bnxt_async_event_process(struct bnxt *bp,
|
||||
u16 type = (u16)BNXT_EVENT_BUF_PRODUCER_TYPE(data1);
|
||||
u32 offset = BNXT_EVENT_BUF_PRODUCER_OFFSET(data2);
|
||||
|
||||
if (type >= ARRAY_SIZE(bp->bs_trace))
|
||||
goto async_event_process_exit;
|
||||
bnxt_bs_trace_check_wrap(&bp->bs_trace[type], offset);
|
||||
goto async_event_process_exit;
|
||||
}
|
||||
|
||||
@@ -2146,7 +2146,7 @@ enum board_idx {
|
||||
};
|
||||
|
||||
#define BNXT_TRACE_BUF_MAGIC_BYTE ((u8)0xbc)
|
||||
#define BNXT_TRACE_MAX 11
|
||||
#define BNXT_TRACE_MAX (DBG_LOG_BUFFER_FLUSH_REQ_TYPE_ERR_QPC_TRACE + 1)
|
||||
|
||||
struct bnxt_bs_trace_info {
|
||||
u8 *magic_byte;
|
||||
|
||||
@@ -123,7 +123,7 @@ static int bcmgenet_poll_wol_status(struct bcmgenet_priv *priv)
|
||||
while (!(bcmgenet_rbuf_readl(priv, RBUF_STATUS)
|
||||
& RBUF_STATUS_WOL)) {
|
||||
retries++;
|
||||
if (retries > 5) {
|
||||
if (retries > 50) {
|
||||
netdev_crit(dev, "polling wol mode timeout\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
@@ -17029,6 +17029,13 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int tg3_is_default_mac_address(u8 *addr)
|
||||
{
|
||||
static const u8 default_mac_address[ETH_ALEN] = { 0x00, 0x10, 0x18, 0x00, 0x00, 0x00 };
|
||||
|
||||
return ether_addr_equal(default_mac_address, addr);
|
||||
}
|
||||
|
||||
static int tg3_get_device_address(struct tg3 *tp, u8 *addr)
|
||||
{
|
||||
u32 hi, lo, mac_offset;
|
||||
@@ -17102,6 +17109,10 @@ static int tg3_get_device_address(struct tg3 *tp, u8 *addr)
|
||||
|
||||
if (!is_valid_ether_addr(addr))
|
||||
return -EINVAL;
|
||||
|
||||
if (tg3_is_default_mac_address(addr))
|
||||
return device_get_mac_address(&tp->pdev->dev, addr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -2669,6 +2669,14 @@ static void macb_init_tieoff(struct macb *bp)
|
||||
desc->ctrl = 0;
|
||||
}
|
||||
|
||||
static void gem_init_rx_ring(struct macb_queue *queue)
|
||||
{
|
||||
queue->rx_tail = 0;
|
||||
queue->rx_prepared_head = 0;
|
||||
|
||||
gem_rx_refill(queue);
|
||||
}
|
||||
|
||||
static void gem_init_rings(struct macb *bp)
|
||||
{
|
||||
struct macb_queue *queue;
|
||||
@@ -2686,10 +2694,7 @@ static void gem_init_rings(struct macb *bp)
|
||||
queue->tx_head = 0;
|
||||
queue->tx_tail = 0;
|
||||
|
||||
queue->rx_tail = 0;
|
||||
queue->rx_prepared_head = 0;
|
||||
|
||||
gem_rx_refill(queue);
|
||||
gem_init_rx_ring(queue);
|
||||
}
|
||||
|
||||
macb_init_tieoff(bp);
|
||||
@@ -3978,6 +3983,9 @@ static int gem_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd)
|
||||
struct macb *bp = netdev_priv(netdev);
|
||||
int ret;
|
||||
|
||||
if (!(netdev->hw_features & NETIF_F_NTUPLE))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (cmd->cmd) {
|
||||
case ETHTOOL_SRXCLSRLINS:
|
||||
if ((cmd->fs.location >= bp->max_tuples)
|
||||
@@ -5947,8 +5955,18 @@ static int __maybe_unused macb_resume(struct device *dev)
|
||||
rtnl_unlock();
|
||||
}
|
||||
|
||||
if (!(bp->caps & MACB_CAPS_MACB_IS_EMAC))
|
||||
macb_init_buffers(bp);
|
||||
|
||||
for (q = 0, queue = bp->queues; q < bp->num_queues;
|
||||
++q, ++queue) {
|
||||
if (!(bp->caps & MACB_CAPS_MACB_IS_EMAC)) {
|
||||
if (macb_is_gem(bp))
|
||||
gem_init_rx_ring(queue);
|
||||
else
|
||||
macb_init_rx_ring(queue);
|
||||
}
|
||||
|
||||
napi_enable(&queue->napi_rx);
|
||||
napi_enable(&queue->napi_tx);
|
||||
}
|
||||
|
||||
@@ -357,8 +357,10 @@ void gem_ptp_remove(struct net_device *ndev)
|
||||
{
|
||||
struct macb *bp = netdev_priv(ndev);
|
||||
|
||||
if (bp->ptp_clock)
|
||||
if (bp->ptp_clock) {
|
||||
ptp_clock_unregister(bp->ptp_clock);
|
||||
bp->ptp_clock = NULL;
|
||||
}
|
||||
|
||||
gem_ptp_clear_timer(bp);
|
||||
|
||||
|
||||
@@ -757,10 +757,13 @@ iavf_vlan_filter *iavf_add_vlan(struct iavf_adapter *adapter,
|
||||
adapter->num_vlan_filters++;
|
||||
iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_ADD_VLAN_FILTER);
|
||||
} else if (f->state == IAVF_VLAN_REMOVE) {
|
||||
/* IAVF_VLAN_REMOVE means that VLAN wasn't yet removed.
|
||||
* We can safely only change the state here.
|
||||
/* Re-add the filter since we cannot tell whether the
|
||||
* pending delete has already been processed by the PF.
|
||||
* A duplicate add is harmless.
|
||||
*/
|
||||
f->state = IAVF_VLAN_ACTIVE;
|
||||
f->state = IAVF_VLAN_ADD;
|
||||
iavf_schedule_aq_request(adapter,
|
||||
IAVF_FLAG_AQ_ADD_VLAN_FILTER);
|
||||
}
|
||||
|
||||
clearout:
|
||||
|
||||
@@ -781,6 +781,8 @@ int igc_ptp_hwtstamp_set(struct net_device *netdev,
|
||||
struct kernel_hwtstamp_config *config,
|
||||
struct netlink_ext_ack *extack);
|
||||
void igc_ptp_tx_hang(struct igc_adapter *adapter);
|
||||
void igc_ptp_clear_xsk_tx_tstamp_queue(struct igc_adapter *adapter,
|
||||
u16 queue_id);
|
||||
void igc_ptp_read(struct igc_adapter *adapter, struct timespec64 *ts);
|
||||
void igc_ptp_tx_tstamp_event(struct igc_adapter *adapter);
|
||||
|
||||
|
||||
@@ -264,6 +264,13 @@ static void igc_clean_tx_ring(struct igc_ring *tx_ring)
|
||||
/* reset next_to_use and next_to_clean */
|
||||
tx_ring->next_to_use = 0;
|
||||
tx_ring->next_to_clean = 0;
|
||||
|
||||
/* Clear any lingering XSK TX timestamp requests */
|
||||
if (test_bit(IGC_RING_FLAG_TX_HWTSTAMP, &tx_ring->flags)) {
|
||||
struct igc_adapter *adapter = netdev_priv(tx_ring->netdev);
|
||||
|
||||
igc_ptp_clear_xsk_tx_tstamp_queue(adapter, tx_ring->queue_index);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1730,11 +1737,8 @@ static netdev_tx_t igc_xmit_frame(struct sk_buff *skb,
|
||||
/* The minimum packet size with TCTL.PSP set is 17 so pad the skb
|
||||
* in order to meet this minimum size requirement.
|
||||
*/
|
||||
if (skb->len < 17) {
|
||||
if (skb_padto(skb, 17))
|
||||
return NETDEV_TX_OK;
|
||||
skb->len = 17;
|
||||
}
|
||||
if (skb_put_padto(skb, 17))
|
||||
return NETDEV_TX_OK;
|
||||
|
||||
return igc_xmit_frame_ring(skb, igc_tx_queue_mapping(adapter, skb));
|
||||
}
|
||||
|
||||
@@ -577,6 +577,39 @@ static void igc_ptp_clear_tx_tstamp(struct igc_adapter *adapter)
|
||||
spin_unlock_irqrestore(&adapter->ptp_tx_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* igc_ptp_clear_xsk_tx_tstamp_queue - Clear pending XSK TX timestamps for a queue
|
||||
* @adapter: Board private structure
|
||||
* @queue_id: TX queue index to clear timestamps for
|
||||
*
|
||||
* Iterates over all TX timestamp registers and releases any pending
|
||||
* timestamp requests associated with the given TX queue. This is
|
||||
* called when an XDP pool is being disabled to ensure no stale
|
||||
* timestamp references remain.
|
||||
*/
|
||||
void igc_ptp_clear_xsk_tx_tstamp_queue(struct igc_adapter *adapter, u16 queue_id)
|
||||
{
|
||||
unsigned long flags;
|
||||
int i;
|
||||
|
||||
spin_lock_irqsave(&adapter->ptp_tx_lock, flags);
|
||||
|
||||
for (i = 0; i < IGC_MAX_TX_TSTAMP_REGS; i++) {
|
||||
struct igc_tx_timestamp_request *tstamp = &adapter->tx_tstamp[i];
|
||||
|
||||
if (tstamp->buffer_type != IGC_TX_BUFFER_TYPE_XSK)
|
||||
continue;
|
||||
if (tstamp->xsk_queue_index != queue_id)
|
||||
continue;
|
||||
if (!tstamp->xsk_tx_buffer)
|
||||
continue;
|
||||
|
||||
igc_ptp_free_tx_buffer(adapter, tstamp);
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&adapter->ptp_tx_lock, flags);
|
||||
}
|
||||
|
||||
static void igc_ptp_disable_tx_timestamp(struct igc_adapter *adapter)
|
||||
{
|
||||
struct igc_hw *hw = &adapter->hw;
|
||||
|
||||
@@ -433,17 +433,21 @@ libie_debugfs_module_write(struct file *filp, const char __user *buf,
|
||||
module = libie_find_module_by_dentry(fwlog->debugfs_modules, dentry);
|
||||
if (module < 0) {
|
||||
dev_info(dev, "unknown module\n");
|
||||
return -EINVAL;
|
||||
count = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
cnt = sscanf(cmd_buf, "%s", user_val);
|
||||
if (cnt != 1)
|
||||
return -EINVAL;
|
||||
if (cnt != 1) {
|
||||
count = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
log_level = sysfs_match_string(libie_fwlog_level_string, user_val);
|
||||
if (log_level < 0) {
|
||||
dev_info(dev, "unknown log level '%s'\n", user_val);
|
||||
return -EINVAL;
|
||||
count = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
if (module != LIBIE_AQC_FW_LOG_ID_MAX) {
|
||||
@@ -458,6 +462,9 @@ libie_debugfs_module_write(struct file *filp, const char __user *buf,
|
||||
fwlog->cfg.module_entries[i].log_level = log_level;
|
||||
}
|
||||
|
||||
free_cmd_buf:
|
||||
kfree(cmd_buf);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -515,23 +522,31 @@ libie_debugfs_nr_messages_write(struct file *filp, const char __user *buf,
|
||||
return PTR_ERR(cmd_buf);
|
||||
|
||||
ret = sscanf(cmd_buf, "%s", user_val);
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
if (ret != 1) {
|
||||
count = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
ret = kstrtos16(user_val, 0, &nr_messages);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (ret) {
|
||||
count = ret;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
if (nr_messages < LIBIE_AQC_FW_LOG_MIN_RESOLUTION ||
|
||||
nr_messages > LIBIE_AQC_FW_LOG_MAX_RESOLUTION) {
|
||||
dev_err(dev, "Invalid FW log number of messages %d, value must be between %d - %d\n",
|
||||
nr_messages, LIBIE_AQC_FW_LOG_MIN_RESOLUTION,
|
||||
LIBIE_AQC_FW_LOG_MAX_RESOLUTION);
|
||||
return -EINVAL;
|
||||
count = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
fwlog->cfg.log_resolution = nr_messages;
|
||||
|
||||
free_cmd_buf:
|
||||
kfree(cmd_buf);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -588,8 +603,10 @@ libie_debugfs_enable_write(struct file *filp, const char __user *buf,
|
||||
return PTR_ERR(cmd_buf);
|
||||
|
||||
ret = sscanf(cmd_buf, "%s", user_val);
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
if (ret != 1) {
|
||||
ret = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
ret = kstrtobool(user_val, &enable);
|
||||
if (ret)
|
||||
@@ -624,6 +641,8 @@ enable_write_error:
|
||||
*/
|
||||
if (WARN_ON(ret != (ssize_t)count && ret >= 0))
|
||||
ret = -EIO;
|
||||
free_cmd_buf:
|
||||
kfree(cmd_buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -682,8 +701,10 @@ libie_debugfs_log_size_write(struct file *filp, const char __user *buf,
|
||||
return PTR_ERR(cmd_buf);
|
||||
|
||||
ret = sscanf(cmd_buf, "%s", user_val);
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
if (ret != 1) {
|
||||
ret = -EINVAL;
|
||||
goto free_cmd_buf;
|
||||
}
|
||||
|
||||
index = sysfs_match_string(libie_fwlog_log_size, user_val);
|
||||
if (index < 0) {
|
||||
@@ -712,6 +733,8 @@ log_size_write_error:
|
||||
*/
|
||||
if (WARN_ON(ret != (ssize_t)count && ret >= 0))
|
||||
ret = -EIO;
|
||||
free_cmd_buf:
|
||||
kfree(cmd_buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -5016,7 +5016,7 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)
|
||||
if (priv->percpu_pools)
|
||||
numbufs = port->nrxqs * 2;
|
||||
|
||||
if (change_percpu)
|
||||
if (change_percpu && priv->global_tx_fc)
|
||||
mvpp2_bm_pool_update_priv_fc(priv, false);
|
||||
|
||||
for (i = 0; i < numbufs; i++)
|
||||
@@ -5041,7 +5041,7 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)
|
||||
mvpp2_open(port->dev);
|
||||
}
|
||||
|
||||
if (change_percpu)
|
||||
if (change_percpu && priv->global_tx_fc)
|
||||
mvpp2_bm_pool_update_priv_fc(priv, true);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -287,6 +287,7 @@ struct mlx5e_ipsec_sa_entry {
|
||||
struct mlx5e_ipsec_dwork *dwork;
|
||||
struct mlx5e_ipsec_limits limits;
|
||||
u32 rx_mapped_id;
|
||||
u8 ctx[MLX5_ST_SZ_BYTES(ipsec_aso)];
|
||||
};
|
||||
|
||||
struct mlx5_accel_pol_xfrm_attrs {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user