dabc1a968a
Add and use a fresh documented implementation of the ATU GetNext. Since it is not necessary to write the MAC address to iterate from, only do it once directly in the ATU GetNext operation, if the provided ATU entry structure is not valid. This makes the user code simpler. Also, there is no need to loop when getting a single ATU entry. So remove the mv88e6xxx_atu_get helper and add a simpler snippet in mv88e6xxx_port_db_load_purge to lookup a given MAC address. The _mv88e6xxx_atu_mac_{read,write} are not used anymore thus remove them. _mv88e6xxx_atu_data_{read,write} are still used so keep them. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
50 lines
2.1 KiB
C
50 lines
2.1 KiB
C
/*
|
|
* Marvell 88E6xxx Switch Global (1) Registers support
|
|
*
|
|
* Copyright (c) 2008 Marvell Semiconductor
|
|
*
|
|
* Copyright (c) 2016 Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef _MV88E6XXX_GLOBAL1_H
|
|
#define _MV88E6XXX_GLOBAL1_H
|
|
|
|
#include "mv88e6xxx.h"
|
|
|
|
int mv88e6xxx_g1_read(struct mv88e6xxx_chip *chip, int reg, u16 *val);
|
|
int mv88e6xxx_g1_write(struct mv88e6xxx_chip *chip, int reg, u16 val);
|
|
int mv88e6xxx_g1_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask);
|
|
|
|
int mv88e6185_g1_reset(struct mv88e6xxx_chip *chip);
|
|
int mv88e6352_g1_reset(struct mv88e6xxx_chip *chip);
|
|
|
|
int mv88e6185_g1_ppu_enable(struct mv88e6xxx_chip *chip);
|
|
int mv88e6185_g1_ppu_disable(struct mv88e6xxx_chip *chip);
|
|
|
|
int mv88e6xxx_g1_stats_wait(struct mv88e6xxx_chip *chip);
|
|
int mv88e6xxx_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6320_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6390_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6390_g1_stats_set_histogram(struct mv88e6xxx_chip *chip);
|
|
void mv88e6xxx_g1_stats_read(struct mv88e6xxx_chip *chip, int stat, u32 *val);
|
|
int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6095_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6390_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port);
|
|
int mv88e6390_g1_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip);
|
|
|
|
int mv88e6xxx_g1_atu_set_learn2all(struct mv88e6xxx_chip *chip, bool learn2all);
|
|
int mv88e6xxx_g1_atu_set_age_time(struct mv88e6xxx_chip *chip,
|
|
unsigned int msecs);
|
|
int mv88e6xxx_g1_atu_getnext(struct mv88e6xxx_chip *chip, u16 fid,
|
|
struct mv88e6xxx_atu_entry *entry);
|
|
int mv88e6xxx_g1_atu_loadpurge(struct mv88e6xxx_chip *chip, u16 fid,
|
|
struct mv88e6xxx_atu_entry *entry);
|
|
|
|
#endif /* _MV88E6XXX_GLOBAL1_H */
|