Merge branch 'mlxsw-fixes'
Ido Schimmel says: ==================== mlxsw: Couple of fixes First patch works around an hardware issue in Spectrum-2 where a field indicating the event type is always set to the same value. Since there are only two event types and they are reported using different queues, we can use the queue number to derive the event type. Second patch prevents a router interface (RIF) leakage when a VLAN device is deleted from on top a bridge device. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b576eddb5d
|
@ -718,14 +718,17 @@ static void mlxsw_pci_eq_tasklet(unsigned long data)
|
|||
memset(&active_cqns, 0, sizeof(active_cqns));
|
||||
|
||||
while ((eqe = mlxsw_pci_eq_sw_eqe_get(q))) {
|
||||
u8 event_type = mlxsw_pci_eqe_event_type_get(eqe);
|
||||
|
||||
switch (event_type) {
|
||||
case MLXSW_PCI_EQE_EVENT_TYPE_CMD:
|
||||
/* Command interface completion events are always received on
|
||||
* queue MLXSW_PCI_EQ_ASYNC_NUM (EQ0) and completion events
|
||||
* are mapped to queue MLXSW_PCI_EQ_COMP_NUM (EQ1).
|
||||
*/
|
||||
switch (q->num) {
|
||||
case MLXSW_PCI_EQ_ASYNC_NUM:
|
||||
mlxsw_pci_eq_cmd_event(mlxsw_pci, eqe);
|
||||
q->u.eq.ev_cmd_count++;
|
||||
break;
|
||||
case MLXSW_PCI_EQE_EVENT_TYPE_COMP:
|
||||
case MLXSW_PCI_EQ_COMP_NUM:
|
||||
cqn = mlxsw_pci_eqe_cqn_get(eqe);
|
||||
set_bit(cqn, active_cqns);
|
||||
cq_handle = true;
|
||||
|
|
|
@ -4845,6 +4845,8 @@ static int mlxsw_sp_netdevice_bridge_event(struct net_device *br_dev,
|
|||
upper_dev = info->upper_dev;
|
||||
if (info->linking)
|
||||
break;
|
||||
if (is_vlan_dev(upper_dev))
|
||||
mlxsw_sp_rif_destroy_by_dev(mlxsw_sp, upper_dev);
|
||||
if (netif_is_macvlan(upper_dev))
|
||||
mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue