mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'net-6.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski:
"Including fixes from bluetooth, netfilter and wireless.
Current release - fix to a fix:
- rtnetlink: fix error code in rtnl_newlink()
- tipc: fix NULL deref in cleanup_bearer()
Current release - regressions:
- ip: fix warning about invalid return from in ip_route_input_rcu()
Current release - new code bugs:
- udp: fix L4 hash after reconnect
- eth: lan969x: fix cyclic dependency between modules
- eth: bnxt_en: fix potential crash when dumping FW log coredump
Previous releases - regressions:
- wifi: mac80211:
- fix a queue stall in certain cases of channel switch
- wake the queues in case of failure in resume
- splice: do not checksum AF_UNIX sockets
- virtio_net: fix BUG()s in BQL support due to incorrect accounting
of purged packets during interface stop
- eth:
- stmmac: fix TSO DMA API mis-usage causing oops
- bnxt_en: fixes for HW GRO: GSO type on 5750X chips and oops
due to incorrect aggregation ID mask on 5760X chips
Previous releases - always broken:
- Bluetooth: improve setsockopt() handling of malformed user input
- eth: ocelot: fix PTP timestamping in presence of packet loss
- ptp: kvm: x86: avoid "fail to initialize ptp_kvm" when simply not
supported"
* tag 'net-6.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (81 commits)
net: dsa: tag_ocelot_8021q: fix broken reception
net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries
net: renesas: rswitch: fix initial MPIC register setting
Bluetooth: btmtk: avoid UAF in btmtk_process_coredump
Bluetooth: iso: Fix circular lock in iso_conn_big_sync
Bluetooth: iso: Fix circular lock in iso_listen_bis
Bluetooth: SCO: Add support for 16 bits transparent voice setting
Bluetooth: iso: Fix recursive locking warning
Bluetooth: iso: Always release hdev at the end of iso_listen_bis
Bluetooth: hci_event: Fix using rcu_read_(un)lock while iterating
Bluetooth: hci_core: Fix sleeping function called from invalid context
team: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL
team: Fix initial vlan_feature set in __team_compute_features
bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL
bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features
net, team, bonding: Add netdev_base_features helper
net/sched: netem: account for backlog updates from child qdisc
net: dsa: felix: fix stuck CPU-injected packets with short taprio windows
splice: do not checksum AF_UNIX sockets
net: usb: qmi_wwan: add Telit FE910C04 compositions
...
This commit is contained in:
@@ -2170,6 +2170,12 @@ nexthop_compat_mode - BOOLEAN
|
||||
understands the new API, this sysctl can be disabled to achieve full
|
||||
performance benefits of the new API by disabling the nexthop expansion
|
||||
and extraneous notifications.
|
||||
|
||||
Note that as a backward-compatible mode, dumping of modern features
|
||||
might be incomplete or wrong. For example, resilient groups will not be
|
||||
shown as such, but rather as just a list of next hops. Also weights that
|
||||
do not fit into 8 bits will show incorrectly.
|
||||
|
||||
Default: true (backward compat mode)
|
||||
|
||||
fib_notify_on_flag_change - INTEGER
|
||||
|
||||
@@ -15345,7 +15345,7 @@ M: Daniel Machon <daniel.machon@microchip.com>
|
||||
M: UNGLinuxDriver@microchip.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/ethernet/microchip/lan969x/*
|
||||
F: drivers/net/ethernet/microchip/sparx5/lan969x/*
|
||||
|
||||
MICROCHIP LCDFB DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||||
@@ -16337,6 +16337,7 @@ F: Documentation/networking/
|
||||
F: Documentation/networking/net_cachelines/
|
||||
F: Documentation/process/maintainer-netdev.rst
|
||||
F: Documentation/userspace-api/netlink/
|
||||
F: include/linux/ethtool.h
|
||||
F: include/linux/framer/framer-provider.h
|
||||
F: include/linux/framer/framer.h
|
||||
F: include/linux/in.h
|
||||
@@ -16351,6 +16352,7 @@ F: include/linux/rtnetlink.h
|
||||
F: include/linux/seq_file_net.h
|
||||
F: include/linux/skbuff*
|
||||
F: include/net/
|
||||
F: include/uapi/linux/ethtool.h
|
||||
F: include/uapi/linux/genetlink.h
|
||||
F: include/uapi/linux/hsr_netlink.h
|
||||
F: include/uapi/linux/in.h
|
||||
|
||||
@@ -395,6 +395,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
|
||||
{
|
||||
struct btmtk_data *data = hci_get_priv(hdev);
|
||||
int err;
|
||||
bool complete = false;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_DEV_COREDUMP)) {
|
||||
kfree_skb(skb);
|
||||
@@ -416,19 +417,22 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
|
||||
fallthrough;
|
||||
case HCI_DEVCOREDUMP_ACTIVE:
|
||||
default:
|
||||
/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
|
||||
if (data->cd_info.cnt >= MTK_COREDUMP_NUM &&
|
||||
skb->len > MTK_COREDUMP_END_LEN)
|
||||
if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
|
||||
MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1))
|
||||
complete = true;
|
||||
|
||||
err = hci_devcd_append(hdev, skb);
|
||||
if (err < 0)
|
||||
break;
|
||||
data->cd_info.cnt++;
|
||||
|
||||
/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
|
||||
if (data->cd_info.cnt > MTK_COREDUMP_NUM &&
|
||||
skb->len > MTK_COREDUMP_END_LEN)
|
||||
if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
|
||||
MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1)) {
|
||||
bt_dev_info(hdev, "Mediatek coredump end");
|
||||
hci_devcd_complete(hdev);
|
||||
}
|
||||
if (complete) {
|
||||
bt_dev_info(hdev, "Mediatek coredump end");
|
||||
hci_devcd_complete(hdev);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1520,9 +1520,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
|
||||
struct slave *slave;
|
||||
|
||||
mask = features;
|
||||
|
||||
features &= ~NETIF_F_ONE_FOR_ALL;
|
||||
features |= NETIF_F_ALL_FOR_ALL;
|
||||
features = netdev_base_features(features);
|
||||
|
||||
bond_for_each_slave(bond, slave, iter) {
|
||||
features = netdev_increment_features(features,
|
||||
@@ -1536,6 +1534,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
|
||||
|
||||
#define BOND_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
|
||||
NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \
|
||||
NETIF_F_GSO_ENCAP_ALL | \
|
||||
NETIF_F_HIGHDMA | NETIF_F_LRO)
|
||||
|
||||
#define BOND_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
|
||||
@@ -1565,8 +1564,9 @@ static void bond_compute_features(struct bonding *bond)
|
||||
|
||||
if (!bond_has_slaves(bond))
|
||||
goto done;
|
||||
vlan_features &= NETIF_F_ALL_FOR_ALL;
|
||||
mpls_features &= NETIF_F_ALL_FOR_ALL;
|
||||
|
||||
vlan_features = netdev_base_features(vlan_features);
|
||||
mpls_features = netdev_base_features(mpls_features);
|
||||
|
||||
bond_for_each_slave(bond, slave, iter) {
|
||||
vlan_features = netdev_increment_features(vlan_features,
|
||||
|
||||
@@ -1100,10 +1100,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x1030, 0x1030),
|
||||
regmap_reg_range(0x1100, 0x1115),
|
||||
regmap_reg_range(0x111a, 0x111f),
|
||||
regmap_reg_range(0x1122, 0x1127),
|
||||
regmap_reg_range(0x112a, 0x112b),
|
||||
regmap_reg_range(0x1136, 0x1139),
|
||||
regmap_reg_range(0x113e, 0x113f),
|
||||
regmap_reg_range(0x1120, 0x112b),
|
||||
regmap_reg_range(0x1134, 0x113b),
|
||||
regmap_reg_range(0x113c, 0x113f),
|
||||
regmap_reg_range(0x1400, 0x1401),
|
||||
regmap_reg_range(0x1403, 0x1403),
|
||||
regmap_reg_range(0x1410, 0x1417),
|
||||
@@ -1130,10 +1129,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x2030, 0x2030),
|
||||
regmap_reg_range(0x2100, 0x2115),
|
||||
regmap_reg_range(0x211a, 0x211f),
|
||||
regmap_reg_range(0x2122, 0x2127),
|
||||
regmap_reg_range(0x212a, 0x212b),
|
||||
regmap_reg_range(0x2136, 0x2139),
|
||||
regmap_reg_range(0x213e, 0x213f),
|
||||
regmap_reg_range(0x2120, 0x212b),
|
||||
regmap_reg_range(0x2134, 0x213b),
|
||||
regmap_reg_range(0x213c, 0x213f),
|
||||
regmap_reg_range(0x2400, 0x2401),
|
||||
regmap_reg_range(0x2403, 0x2403),
|
||||
regmap_reg_range(0x2410, 0x2417),
|
||||
@@ -1160,10 +1158,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x3030, 0x3030),
|
||||
regmap_reg_range(0x3100, 0x3115),
|
||||
regmap_reg_range(0x311a, 0x311f),
|
||||
regmap_reg_range(0x3122, 0x3127),
|
||||
regmap_reg_range(0x312a, 0x312b),
|
||||
regmap_reg_range(0x3136, 0x3139),
|
||||
regmap_reg_range(0x313e, 0x313f),
|
||||
regmap_reg_range(0x3120, 0x312b),
|
||||
regmap_reg_range(0x3134, 0x313b),
|
||||
regmap_reg_range(0x313c, 0x313f),
|
||||
regmap_reg_range(0x3400, 0x3401),
|
||||
regmap_reg_range(0x3403, 0x3403),
|
||||
regmap_reg_range(0x3410, 0x3417),
|
||||
@@ -1190,10 +1187,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x4030, 0x4030),
|
||||
regmap_reg_range(0x4100, 0x4115),
|
||||
regmap_reg_range(0x411a, 0x411f),
|
||||
regmap_reg_range(0x4122, 0x4127),
|
||||
regmap_reg_range(0x412a, 0x412b),
|
||||
regmap_reg_range(0x4136, 0x4139),
|
||||
regmap_reg_range(0x413e, 0x413f),
|
||||
regmap_reg_range(0x4120, 0x412b),
|
||||
regmap_reg_range(0x4134, 0x413b),
|
||||
regmap_reg_range(0x413c, 0x413f),
|
||||
regmap_reg_range(0x4400, 0x4401),
|
||||
regmap_reg_range(0x4403, 0x4403),
|
||||
regmap_reg_range(0x4410, 0x4417),
|
||||
@@ -1220,10 +1216,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x5030, 0x5030),
|
||||
regmap_reg_range(0x5100, 0x5115),
|
||||
regmap_reg_range(0x511a, 0x511f),
|
||||
regmap_reg_range(0x5122, 0x5127),
|
||||
regmap_reg_range(0x512a, 0x512b),
|
||||
regmap_reg_range(0x5136, 0x5139),
|
||||
regmap_reg_range(0x513e, 0x513f),
|
||||
regmap_reg_range(0x5120, 0x512b),
|
||||
regmap_reg_range(0x5134, 0x513b),
|
||||
regmap_reg_range(0x513c, 0x513f),
|
||||
regmap_reg_range(0x5400, 0x5401),
|
||||
regmap_reg_range(0x5403, 0x5403),
|
||||
regmap_reg_range(0x5410, 0x5417),
|
||||
@@ -1250,10 +1245,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
|
||||
regmap_reg_range(0x6030, 0x6030),
|
||||
regmap_reg_range(0x6100, 0x6115),
|
||||
regmap_reg_range(0x611a, 0x611f),
|
||||
regmap_reg_range(0x6122, 0x6127),
|
||||
regmap_reg_range(0x612a, 0x612b),
|
||||
regmap_reg_range(0x6136, 0x6139),
|
||||
regmap_reg_range(0x613e, 0x613f),
|
||||
regmap_reg_range(0x6120, 0x612b),
|
||||
regmap_reg_range(0x6134, 0x613b),
|
||||
regmap_reg_range(0x613c, 0x613f),
|
||||
regmap_reg_range(0x6300, 0x6301),
|
||||
regmap_reg_range(0x6400, 0x6401),
|
||||
regmap_reg_range(0x6403, 0x6403),
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#define VSC9959_NUM_PORTS 6
|
||||
|
||||
#define VSC9959_TAS_GCL_ENTRY_MAX 63
|
||||
#define VSC9959_TAS_MIN_GATE_LEN_NS 33
|
||||
#define VSC9959_TAS_MIN_GATE_LEN_NS 35
|
||||
#define VSC9959_VCAP_POLICER_BASE 63
|
||||
#define VSC9959_VCAP_POLICER_MAX 383
|
||||
#define VSC9959_SWITCH_PCI_BAR 4
|
||||
@@ -1056,11 +1056,15 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
|
||||
mdiobus_free(felix->imdio);
|
||||
}
|
||||
|
||||
/* The switch considers any frame (regardless of size) as eligible for
|
||||
* transmission if the traffic class gate is open for at least 33 ns.
|
||||
/* The switch considers any frame (regardless of size) as eligible
|
||||
* for transmission if the traffic class gate is open for at least
|
||||
* VSC9959_TAS_MIN_GATE_LEN_NS.
|
||||
*
|
||||
* Overruns are prevented by cropping an interval at the end of the gate time
|
||||
* slot for which egress scheduling is blocked, but we need to still keep 33 ns
|
||||
* available for one packet to be transmitted, otherwise the port tc will hang.
|
||||
* slot for which egress scheduling is blocked, but we need to still keep
|
||||
* VSC9959_TAS_MIN_GATE_LEN_NS available for one packet to be transmitted,
|
||||
* otherwise the port tc will hang.
|
||||
*
|
||||
* This function returns the size of a gate interval that remains available for
|
||||
* setting the guard band, after reserving the space for one egress frame.
|
||||
*/
|
||||
@@ -1303,7 +1307,8 @@ static void vsc9959_tas_guard_bands_update(struct ocelot *ocelot, int port)
|
||||
* per-tc static guard band lengths, so it reduces the
|
||||
* useful gate interval length. Therefore, be careful
|
||||
* to calculate a guard band (and therefore max_sdu)
|
||||
* that still leaves 33 ns available in the time slot.
|
||||
* that still leaves VSC9959_TAS_MIN_GATE_LEN_NS
|
||||
* available in the time slot.
|
||||
*/
|
||||
max_sdu = div_u64(remaining_gate_len_ps, picos_per_byte);
|
||||
/* A TC gate may be completely closed, which is a
|
||||
|
||||
@@ -1531,7 +1531,7 @@ static void bnxt_tpa_start(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
|
||||
if (TPA_START_IS_IPV6(tpa_start1))
|
||||
tpa_info->gso_type = SKB_GSO_TCPV6;
|
||||
/* RSS profiles 1 and 3 with extract code 0 for inner 4-tuple */
|
||||
else if (cmp_type == CMP_TYPE_RX_L2_TPA_START_CMP &&
|
||||
else if (!BNXT_CHIP_P4_PLUS(bp) &&
|
||||
TPA_START_HASH_TYPE(tpa_start) == 3)
|
||||
tpa_info->gso_type = SKB_GSO_TCPV6;
|
||||
tpa_info->rss_hash =
|
||||
@@ -2226,15 +2226,13 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
||||
if (cmp_type == CMP_TYPE_RX_L2_V3_CMP) {
|
||||
type = bnxt_rss_ext_op(bp, rxcmp);
|
||||
} else {
|
||||
u32 hash_type = RX_CMP_HASH_TYPE(rxcmp);
|
||||
u32 itypes = RX_CMP_ITYPES(rxcmp);
|
||||
|
||||
/* RSS profiles 1 and 3 with extract code 0 for inner
|
||||
* 4-tuple
|
||||
*/
|
||||
if (hash_type != 1 && hash_type != 3)
|
||||
type = PKT_HASH_TYPE_L3;
|
||||
else
|
||||
if (itypes == RX_CMP_FLAGS_ITYPE_TCP ||
|
||||
itypes == RX_CMP_FLAGS_ITYPE_UDP)
|
||||
type = PKT_HASH_TYPE_L4;
|
||||
else
|
||||
type = PKT_HASH_TYPE_L3;
|
||||
}
|
||||
skb_set_hash(skb, le32_to_cpu(rxcmp->rx_cmp_rss_hash), type);
|
||||
}
|
||||
@@ -8367,7 +8365,7 @@ static int bnxt_alloc_all_ctx_pg_info(struct bnxt *bp, int ctx_max)
|
||||
struct bnxt_ctx_mem_type *ctxm = &ctx->ctx_arr[type];
|
||||
int n = 1;
|
||||
|
||||
if (!ctxm->max_entries)
|
||||
if (!ctxm->max_entries || ctxm->pg_info)
|
||||
continue;
|
||||
|
||||
if (ctxm->instance_bmap)
|
||||
@@ -8971,8 +8969,8 @@ static int bnxt_backing_store_cfg_v2(struct bnxt *bp, u32 ena)
|
||||
continue;
|
||||
}
|
||||
bnxt_bs_trace_init(bp, ctxm);
|
||||
last_type = type;
|
||||
}
|
||||
last_type = type;
|
||||
}
|
||||
|
||||
if (last_type == BNXT_CTX_INV) {
|
||||
|
||||
@@ -267,6 +267,9 @@ struct rx_cmp {
|
||||
(((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_RSS_HASH_TYPE) >>\
|
||||
RX_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK)
|
||||
|
||||
#define RX_CMP_ITYPES(rxcmp) \
|
||||
(le32_to_cpu((rxcmp)->rx_cmp_len_flags_type) & RX_CMP_FLAGS_ITYPES_MASK)
|
||||
|
||||
#define RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp) \
|
||||
((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_V3_RSS_EXT_OP_LEGACY) >>\
|
||||
RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT)
|
||||
@@ -378,7 +381,7 @@ struct rx_agg_cmp {
|
||||
u32 rx_agg_cmp_opaque;
|
||||
__le32 rx_agg_cmp_v;
|
||||
#define RX_AGG_CMP_V (1 << 0)
|
||||
#define RX_AGG_CMP_AGG_ID (0xffff << 16)
|
||||
#define RX_AGG_CMP_AGG_ID (0x0fff << 16)
|
||||
#define RX_AGG_CMP_AGG_ID_SHIFT 16
|
||||
__le32 rx_agg_cmp_unused;
|
||||
};
|
||||
@@ -416,7 +419,7 @@ struct rx_tpa_start_cmp {
|
||||
#define RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT 7
|
||||
#define RX_TPA_START_CMP_AGG_ID (0x7f << 25)
|
||||
#define RX_TPA_START_CMP_AGG_ID_SHIFT 25
|
||||
#define RX_TPA_START_CMP_AGG_ID_P5 (0xffff << 16)
|
||||
#define RX_TPA_START_CMP_AGG_ID_P5 (0x0fff << 16)
|
||||
#define RX_TPA_START_CMP_AGG_ID_SHIFT_P5 16
|
||||
#define RX_TPA_START_CMP_METADATA1 (0xf << 28)
|
||||
#define RX_TPA_START_CMP_METADATA1_SHIFT 28
|
||||
@@ -540,7 +543,7 @@ struct rx_tpa_end_cmp {
|
||||
#define RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT 16
|
||||
#define RX_TPA_END_CMP_AGG_ID (0x7f << 25)
|
||||
#define RX_TPA_END_CMP_AGG_ID_SHIFT 25
|
||||
#define RX_TPA_END_CMP_AGG_ID_P5 (0xffff << 16)
|
||||
#define RX_TPA_END_CMP_AGG_ID_P5 (0x0fff << 16)
|
||||
#define RX_TPA_END_CMP_AGG_ID_SHIFT_P5 16
|
||||
|
||||
__le32 rx_tpa_end_cmp_tsdelta;
|
||||
|
||||
@@ -2076,7 +2076,7 @@ void t4_idma_monitor(struct adapter *adapter,
|
||||
struct sge_idma_monitor_state *idma,
|
||||
int hz, int ticks);
|
||||
int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
|
||||
unsigned int naddr, u8 *addr);
|
||||
u8 start, unsigned int naddr, u8 *addr);
|
||||
void t4_tp_pio_read(struct adapter *adap, u32 *buff, u32 nregs,
|
||||
u32 start_index, bool sleep_ok);
|
||||
void t4_tp_tm_pio_read(struct adapter *adap, u32 *buff, u32 nregs,
|
||||
|
||||
@@ -3234,7 +3234,7 @@ static int cxgb4_mgmt_set_vf_mac(struct net_device *dev, int vf, u8 *mac)
|
||||
|
||||
dev_info(pi->adapter->pdev_dev,
|
||||
"Setting MAC %pM on VF %d\n", mac, vf);
|
||||
ret = t4_set_vf_mac_acl(adap, vf + 1, 1, mac);
|
||||
ret = t4_set_vf_mac_acl(adap, vf + 1, pi->lport, 1, mac);
|
||||
if (!ret)
|
||||
ether_addr_copy(adap->vfinfo[vf].vf_mac_addr, mac);
|
||||
return ret;
|
||||
|
||||
@@ -10215,11 +10215,12 @@ out:
|
||||
* t4_set_vf_mac_acl - Set MAC address for the specified VF
|
||||
* @adapter: The adapter
|
||||
* @vf: one of the VFs instantiated by the specified PF
|
||||
* @start: The start port id associated with specified VF
|
||||
* @naddr: the number of MAC addresses
|
||||
* @addr: the MAC address(es) to be set to the specified VF
|
||||
*/
|
||||
int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
|
||||
unsigned int naddr, u8 *addr)
|
||||
u8 start, unsigned int naddr, u8 *addr)
|
||||
{
|
||||
struct fw_acl_mac_cmd cmd;
|
||||
|
||||
@@ -10234,7 +10235,7 @@ int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
|
||||
cmd.en_to_len16 = cpu_to_be32((unsigned int)FW_LEN16(cmd));
|
||||
cmd.nmac = naddr;
|
||||
|
||||
switch (adapter->pf) {
|
||||
switch (start) {
|
||||
case 3:
|
||||
memcpy(cmd.macaddr3, addr, sizeof(cmd.macaddr3));
|
||||
break;
|
||||
|
||||
@@ -1452,23 +1452,21 @@ process_flow:
|
||||
* hence modify pcifunc accordingly.
|
||||
*/
|
||||
|
||||
/* AF installing for a PF/VF */
|
||||
if (!req->hdr.pcifunc)
|
||||
if (!req->hdr.pcifunc) {
|
||||
/* AF installing for a PF/VF */
|
||||
target = req->vf;
|
||||
|
||||
/* PF installing for its VF */
|
||||
if (!from_vf && req->vf && !from_rep_dev) {
|
||||
} else if (!from_vf && req->vf && !from_rep_dev) {
|
||||
/* PF installing for its VF */
|
||||
target = (req->hdr.pcifunc & ~RVU_PFVF_FUNC_MASK) | req->vf;
|
||||
pf_set_vfs_mac = req->default_rule &&
|
||||
(req->features & BIT_ULL(NPC_DMAC));
|
||||
}
|
||||
|
||||
/* Representor device installing for a representee */
|
||||
if (from_rep_dev && req->vf)
|
||||
} else if (from_rep_dev && req->vf) {
|
||||
/* Representor device installing for a representee */
|
||||
target = req->vf;
|
||||
else
|
||||
} else {
|
||||
/* msg received from PF/VF */
|
||||
target = req->hdr.pcifunc;
|
||||
}
|
||||
|
||||
/* ignore chan_mask in case pf func is not AF, revisit later */
|
||||
if (!is_pffunc_af(req->hdr.pcifunc))
|
||||
|
||||
@@ -297,7 +297,9 @@ dr_domain_add_vport_cap(struct mlx5dr_domain *dmn, u16 vport)
|
||||
if (ret) {
|
||||
mlx5dr_dbg(dmn, "Couldn't insert new vport into xarray (%d)\n", ret);
|
||||
kvfree(vport_caps);
|
||||
return ERR_PTR(ret);
|
||||
if (ret == -EBUSY)
|
||||
return ERR_PTR(-EBUSY);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vport_caps;
|
||||
|
||||
@@ -59,7 +59,6 @@ config LAN743X
|
||||
|
||||
source "drivers/net/ethernet/microchip/lan865x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/lan966x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/lan969x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/sparx5/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/vcap/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/fdma/Kconfig"
|
||||
|
||||
@@ -11,7 +11,6 @@ lan743x-objs := lan743x_main.o lan743x_ethtool.o lan743x_ptp.o
|
||||
|
||||
obj-$(CONFIG_LAN865X) += lan865x/
|
||||
obj-$(CONFIG_LAN966X_SWITCH) += lan966x/
|
||||
obj-$(CONFIG_LAN969X_SWITCH) += lan969x/
|
||||
obj-$(CONFIG_SPARX5_SWITCH) += sparx5/
|
||||
obj-$(CONFIG_VCAP) += vcap/
|
||||
obj-$(CONFIG_FDMA) += fdma/
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
config LAN969X_SWITCH
|
||||
bool "Lan969x switch driver"
|
||||
depends on SPARX5_SWITCH
|
||||
help
|
||||
This driver supports the lan969x family of network switch devices.
|
||||
@@ -1,13 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Makefile for the Microchip lan969x network device drivers.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_SPARX5_SWITCH) += lan969x-switch.o
|
||||
|
||||
lan969x-switch-y := lan969x_regs.o lan969x.o lan969x_calendar.o \
|
||||
lan969x_vcap_ag_api.o lan969x_vcap_impl.o
|
||||
|
||||
# Provide include files
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
|
||||
@@ -24,3 +24,9 @@ config SPARX5_DCB
|
||||
DSCP and PCP.
|
||||
|
||||
If unsure, set to Y.
|
||||
|
||||
config LAN969X_SWITCH
|
||||
bool "Lan969x switch driver"
|
||||
depends on SPARX5_SWITCH
|
||||
help
|
||||
This driver supports the lan969x family of network switch devices.
|
||||
|
||||
@@ -16,6 +16,12 @@ sparx5-switch-y := sparx5_main.o sparx5_packet.o \
|
||||
sparx5-switch-$(CONFIG_SPARX5_DCB) += sparx5_dcb.o
|
||||
sparx5-switch-$(CONFIG_DEBUG_FS) += sparx5_vcap_debugfs.o
|
||||
|
||||
sparx5-switch-$(CONFIG_LAN969X_SWITCH) += lan969x/lan969x_regs.o \
|
||||
lan969x/lan969x.o \
|
||||
lan969x/lan969x_calendar.o \
|
||||
lan969x/lan969x_vcap_ag_api.o \
|
||||
lan969x/lan969x_vcap_impl.o
|
||||
|
||||
# Provide include files
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
||||
|
||||
@@ -273,9 +273,9 @@ static irqreturn_t lan969x_ptp_irq_handler(int irq, void *args)
|
||||
if (WARN_ON(!skb_match))
|
||||
continue;
|
||||
|
||||
spin_lock(&sparx5->ptp_ts_id_lock);
|
||||
spin_lock_irqsave(&sparx5->ptp_ts_id_lock, flags);
|
||||
sparx5->ptp_skbs--;
|
||||
spin_unlock(&sparx5->ptp_ts_id_lock);
|
||||
spin_unlock_irqrestore(&sparx5->ptp_ts_id_lock, flags);
|
||||
|
||||
/* Get the h/w timestamp */
|
||||
sparx5_get_hwtimestamp(sparx5, &ts, delay);
|
||||
@@ -346,8 +346,3 @@ const struct sparx5_match_data lan969x_desc = {
|
||||
.consts = &lan969x_consts,
|
||||
.ops = &lan969x_ops,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(lan969x_desc);
|
||||
|
||||
MODULE_DESCRIPTION("Microchip lan969x switch driver");
|
||||
MODULE_AUTHOR("Daniel Machon <daniel.machon@microchip.com>");
|
||||
MODULE_LICENSE("Dual MIT/GPL");
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user