common.h

来自「linux 内核源代码」· C头文件 代码 · 共 785 行 · 第 1/2 页

H
785
字号
	unsigned int mem_timing;	u8 sn[SERNUM_LEN + 1];	u8 eth_base[6];	u8 port_type[MAX_NPORTS];	unsigned short xauicfg[2];};struct pci_params {	unsigned int vpd_cap_addr;	unsigned int pcie_cap_addr;	unsigned short speed;	unsigned char width;	unsigned char variant;};enum {	PCI_VARIANT_PCI,	PCI_VARIANT_PCIX_MODE1_PARITY,	PCI_VARIANT_PCIX_MODE1_ECC,	PCI_VARIANT_PCIX_266_MODE2,	PCI_VARIANT_PCIE};struct adapter_params {	struct sge_params sge;	struct mc5_params mc5;	struct tp_params tp;	struct vpd_params vpd;	struct pci_params pci;	const struct adapter_info *info;	unsigned short mtus[NMTUS];	unsigned short a_wnd[NCCTRL_WIN];	unsigned short b_wnd[NCCTRL_WIN];	unsigned int nports;	/* # of ethernet ports */	unsigned int stats_update_period;	/* MAC stats accumulation period */	unsigned int linkpoll_period;	/* link poll period in 0.1s */	unsigned int rev;	/* chip revision */	unsigned int offload;};enum {					    /* chip revisions */	T3_REV_A  = 0,	T3_REV_B  = 2,	T3_REV_B2 = 3,	T3_REV_C  = 4,};struct trace_params {	u32 sip;	u32 sip_mask;	u32 dip;	u32 dip_mask;	u16 sport;	u16 sport_mask;	u16 dport;	u16 dport_mask;	u32 vlan:12;	u32 vlan_mask:12;	u32 intf:4;	u32 intf_mask:4;	u8 proto;	u8 proto_mask;};struct link_config {	unsigned int supported;	/* link capabilities */	unsigned int advertising;	/* advertised capabilities */	unsigned short requested_speed;	/* speed user has requested */	unsigned short speed;	/* actual link speed */	unsigned char requested_duplex;	/* duplex user has requested */	unsigned char duplex;	/* actual link duplex */	unsigned char requested_fc;	/* flow control user has requested */	unsigned char fc;	/* actual link flow control */	unsigned char autoneg;	/* autonegotiating? */	unsigned int link_ok;	/* link up? */};#define SPEED_INVALID   0xffff#define DUPLEX_INVALID  0xffstruct mc5 {	struct adapter *adapter;	unsigned int tcam_size;	unsigned char part_type;	unsigned char parity_enabled;	unsigned char mode;	struct mc5_stats stats;};static inline unsigned int t3_mc5_size(const struct mc5 *p){	return p->tcam_size;}struct mc7 {	struct adapter *adapter;	/* backpointer to adapter */	unsigned int size;	/* memory size in bytes */	unsigned int width;	/* MC7 interface width */	unsigned int offset;	/* register address offset for MC7 instance */	const char *name;	/* name of MC7 instance */	struct mc7_stats stats;	/* MC7 statistics */};static inline unsigned int t3_mc7_size(const struct mc7 *p){	return p->size;}struct cmac {	struct adapter *adapter;	unsigned int offset;	unsigned int nucast;	/* # of address filters for unicast MACs */	unsigned int tx_tcnt;	unsigned int tx_xcnt;	u64 tx_mcnt;	unsigned int rx_xcnt;	unsigned int rx_ocnt;	u64 rx_mcnt;	unsigned int toggle_cnt;	unsigned int txen;	u64 rx_pause;	struct mac_stats stats;};enum {	MAC_DIRECTION_RX = 1,	MAC_DIRECTION_TX = 2,	MAC_RXFIFO_SIZE = 32768};/* IEEE 802.3ae specified MDIO devices */enum {	MDIO_DEV_PMA_PMD = 1,	MDIO_DEV_WIS = 2,	MDIO_DEV_PCS = 3,	MDIO_DEV_XGXS = 4};/* PHY loopback direction */enum {	PHY_LOOPBACK_TX = 1,	PHY_LOOPBACK_RX = 2};/* PHY interrupt types */enum {	cphy_cause_link_change = 1,	cphy_cause_fifo_error = 2};/* PHY operations */struct cphy_ops {	void (*destroy)(struct cphy *phy);	int (*reset)(struct cphy *phy, int wait);	int (*intr_enable)(struct cphy *phy);	int (*intr_disable)(struct cphy *phy);	int (*intr_clear)(struct cphy *phy);	int (*intr_handler)(struct cphy *phy);	int (*autoneg_enable)(struct cphy *phy);	int (*autoneg_restart)(struct cphy *phy);	int (*advertise)(struct cphy *phy, unsigned int advertise_map);	int (*set_loopback)(struct cphy *phy, int mmd, int dir, int enable);	int (*set_speed_duplex)(struct cphy *phy, int speed, int duplex);	int (*get_link_status)(struct cphy *phy, int *link_ok, int *speed,			       int *duplex, int *fc);	int (*power_down)(struct cphy *phy, int enable);};/* A PHY instance */struct cphy {	int addr;		/* PHY address */	struct adapter *adapter;	/* associated adapter */	unsigned long fifo_errors;	/* FIFO over/under-flows */	const struct cphy_ops *ops;	/* PHY operations */	int (*mdio_read)(struct adapter *adapter, int phy_addr, int mmd_addr,			 int reg_addr, unsigned int *val);	int (*mdio_write)(struct adapter *adapter, int phy_addr, int mmd_addr,			  int reg_addr, unsigned int val);};/* Convenience MDIO read/write wrappers */static inline int mdio_read(struct cphy *phy, int mmd, int reg,			    unsigned int *valp){	return phy->mdio_read(phy->adapter, phy->addr, mmd, reg, valp);}static inline int mdio_write(struct cphy *phy, int mmd, int reg,			     unsigned int val){	return phy->mdio_write(phy->adapter, phy->addr, mmd, reg, val);}/* Convenience initializer */static inline void cphy_init(struct cphy *phy, struct adapter *adapter,			     int phy_addr, struct cphy_ops *phy_ops,			     const struct mdio_ops *mdio_ops){	phy->adapter = adapter;	phy->addr = phy_addr;	phy->ops = phy_ops;	if (mdio_ops) {		phy->mdio_read = mdio_ops->read;		phy->mdio_write = mdio_ops->write;	}}/* Accumulate MAC statistics every 180 seconds.  For 1G we multiply by 10. */#define MAC_STATS_ACCUM_SECS 180#define XGM_REG(reg_addr, idx) \	((reg_addr) + (idx) * (XGMAC0_1_BASE_ADDR - XGMAC0_0_BASE_ADDR))struct addr_val_pair {	unsigned int reg_addr;	unsigned int val;};#include "adapter.h"#ifndef PCI_VENDOR_ID_CHELSIO# define PCI_VENDOR_ID_CHELSIO 0x1425#endif#define for_each_port(adapter, iter) \	for (iter = 0; iter < (adapter)->params.nports; ++iter)#define adapter_info(adap) ((adap)->params.info)static inline int uses_xaui(const struct adapter *adap){	return adapter_info(adap)->caps & SUPPORTED_AUI;}static inline int is_10G(const struct adapter *adap){	return adapter_info(adap)->caps & SUPPORTED_10000baseT_Full;}static inline int is_offload(const struct adapter *adap){	return adap->params.offload;}static inline unsigned int core_ticks_per_usec(const struct adapter *adap){	return adap->params.vpd.cclk / 1000;}static inline unsigned int is_pcie(const struct adapter *adap){	return adap->params.pci.variant == PCI_VARIANT_PCIE;}void t3_set_reg_field(struct adapter *adap, unsigned int addr, u32 mask,		      u32 val);void t3_write_regs(struct adapter *adapter, const struct addr_val_pair *p,		   int n, unsigned int offset);int t3_wait_op_done_val(struct adapter *adapter, int reg, u32 mask,			int polarity, int attempts, int delay, u32 *valp);static inline int t3_wait_op_done(struct adapter *adapter, int reg, u32 mask,				  int polarity, int attempts, int delay){	return t3_wait_op_done_val(adapter, reg, mask, polarity, attempts,				   delay, NULL);}int t3_mdio_change_bits(struct cphy *phy, int mmd, int reg, unsigned int clear,			unsigned int set);int t3_phy_reset(struct cphy *phy, int mmd, int wait);int t3_phy_advertise(struct cphy *phy, unsigned int advert);int t3_set_phy_speed_duplex(struct cphy *phy, int speed, int duplex);void t3_intr_enable(struct adapter *adapter);void t3_intr_disable(struct adapter *adapter);void t3_intr_clear(struct adapter *adapter);void t3_port_intr_enable(struct adapter *adapter, int idx);void t3_port_intr_disable(struct adapter *adapter, int idx);void t3_port_intr_clear(struct adapter *adapter, int idx);int t3_slow_intr_handler(struct adapter *adapter);int t3_phy_intr_handler(struct adapter *adapter);void t3_link_changed(struct adapter *adapter, int port_id);int t3_link_start(struct cphy *phy, struct cmac *mac, struct link_config *lc);const struct adapter_info *t3_get_adapter_info(unsigned int board_id);int t3_seeprom_read(struct adapter *adapter, u32 addr, u32 *data);int t3_seeprom_write(struct adapter *adapter, u32 addr, u32 data);int t3_seeprom_wp(struct adapter *adapter, int enable);int t3_get_tp_version(struct adapter *adapter, u32 *vers);int t3_check_tpsram_version(struct adapter *adapter, int *must_load);int t3_check_tpsram(struct adapter *adapter, u8 *tp_ram, unsigned int size);int t3_set_proto_sram(struct adapter *adap, u8 *data);int t3_read_flash(struct adapter *adapter, unsigned int addr,		  unsigned int nwords, u32 *data, int byte_oriented);int t3_load_fw(struct adapter *adapter, const u8 * fw_data, unsigned int size);int t3_get_fw_version(struct adapter *adapter, u32 *vers);int t3_check_fw_version(struct adapter *adapter, int *must_load);int t3_init_hw(struct adapter *adapter, u32 fw_params);void mac_prep(struct cmac *mac, struct adapter *adapter, int index);void early_hw_init(struct adapter *adapter, const struct adapter_info *ai);int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai,		    int reset);void t3_led_ready(struct adapter *adapter);void t3_fatal_err(struct adapter *adapter);void t3_set_vlan_accel(struct adapter *adapter, unsigned int ports, int on);void t3_config_rss(struct adapter *adapter, unsigned int rss_config,		   const u8 * cpus, const u16 *rspq);int t3_read_rss(struct adapter *adapter, u8 * lkup, u16 *map);int t3_mps_set_active_ports(struct adapter *adap, unsigned int port_mask);int t3_cim_ctl_blk_read(struct adapter *adap, unsigned int addr,			unsigned int n, unsigned int *valp);int t3_mc7_bd_read(struct mc7 *mc7, unsigned int start, unsigned int n,		   u64 *buf);int t3_mac_reset(struct cmac *mac);void t3b_pcs_reset(struct cmac *mac);int t3_mac_enable(struct cmac *mac, int which);int t3_mac_disable(struct cmac *mac, int which);int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu);int t3_mac_set_rx_mode(struct cmac *mac, struct t3_rx_mode *rm);int t3_mac_set_address(struct cmac *mac, unsigned int idx, u8 addr[6]);int t3_mac_set_num_ucast(struct cmac *mac, int n);const struct mac_stats *t3_mac_update_stats(struct cmac *mac);int t3_mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex, int fc);int t3b2_mac_watchdog_task(struct cmac *mac);void t3_mc5_prep(struct adapter *adapter, struct mc5 *mc5, int mode);int t3_mc5_init(struct mc5 *mc5, unsigned int nservers, unsigned int nfilters,		unsigned int nroutes);void t3_mc5_intr_handler(struct mc5 *mc5);int t3_read_mc5_range(const struct mc5 *mc5, unsigned int start, unsigned int n,		      u32 *buf);int t3_tp_set_coalescing_size(struct adapter *adap, unsigned int size, int psh);void t3_tp_set_max_rxsize(struct adapter *adap, unsigned int size);void t3_tp_set_offload_mode(struct adapter *adap, int enable);void t3_tp_get_mib_stats(struct adapter *adap, struct tp_mib_stats *tps);void t3_load_mtus(struct adapter *adap, unsigned short mtus[NMTUS],		  unsigned short alpha[NCCTRL_WIN],		  unsigned short beta[NCCTRL_WIN], unsigned short mtu_cap);void t3_read_hw_mtus(struct adapter *adap, unsigned short mtus[NMTUS]);void t3_get_cong_cntl_tab(struct adapter *adap,			  unsigned short incr[NMTUS][NCCTRL_WIN]);void t3_config_trace_filter(struct adapter *adapter,			    const struct trace_params *tp, int filter_index,			    int invert, int enable);int t3_config_sched(struct adapter *adap, unsigned int kbps, int sched);void t3_sge_prep(struct adapter *adap, struct sge_params *p);void t3_sge_init(struct adapter *adap, struct sge_params *p);int t3_sge_init_ecntxt(struct adapter *adapter, unsigned int id, int gts_enable,		       enum sge_context_type type, int respq, u64 base_addr,		       unsigned int size, unsigned int token, int gen,		       unsigned int cidx);int t3_sge_init_flcntxt(struct adapter *adapter, unsigned int id,			int gts_enable, u64 base_addr, unsigned int size,			unsigned int esize, unsigned int cong_thres, int gen,			unsigned int cidx);int t3_sge_init_rspcntxt(struct adapter *adapter, unsigned int id,			 int irq_vec_idx, u64 base_addr, unsigned int size,			 unsigned int fl_thres, int gen, unsigned int cidx);int t3_sge_init_cqcntxt(struct adapter *adapter, unsigned int id, u64 base_addr,			unsigned int size, int rspq, int ovfl_mode,			unsigned int credits, unsigned int credit_thres);int t3_sge_enable_ecntxt(struct adapter *adapter, unsigned int id, int enable);int t3_sge_disable_fl(struct adapter *adapter, unsigned int id);int t3_sge_disable_rspcntxt(struct adapter *adapter, unsigned int id);int t3_sge_disable_cqcntxt(struct adapter *adapter, unsigned int id);int t3_sge_read_ecntxt(struct adapter *adapter, unsigned int id, u32 data[4]);int t3_sge_read_fl(struct adapter *adapter, unsigned int id, u32 data[4]);int t3_sge_read_cq(struct adapter *adapter, unsigned int id, u32 data[4]);int t3_sge_read_rspq(struct adapter *adapter, unsigned int id, u32 data[4]);int t3_sge_cqcntxt_op(struct adapter *adapter, unsigned int id, unsigned int op,		      unsigned int credits);void t3_vsc8211_phy_prep(struct cphy *phy, struct adapter *adapter,			 int phy_addr, const struct mdio_ops *mdio_ops);void t3_ael1002_phy_prep(struct cphy *phy, struct adapter *adapter,			 int phy_addr, const struct mdio_ops *mdio_ops);void t3_ael1006_phy_prep(struct cphy *phy, struct adapter *adapter,			 int phy_addr, const struct mdio_ops *mdio_ops);void t3_qt2045_phy_prep(struct cphy *phy, struct adapter *adapter, int phy_addr,			const struct mdio_ops *mdio_ops);void t3_xaui_direct_phy_prep(struct cphy *phy, struct adapter *adapter,			     int phy_addr, const struct mdio_ops *mdio_ops);#endif				/* __CHELSIO_COMMON_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?