linux/net/ncsi/internal.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright Gavin Shan, IBM Corporation 2016.
 */

#ifndef __NCSI_INTERNAL_H__
#define __NCSI_INTERNAL_H__

enum {};

enum {};

enum {};

/* Supported media status bits for Mellanox Mac affinity command.
 * Bit (0-2) for different protocol support; Bit 1 for RBT support,
 * bit 1 for SMBUS support and bit 2 for PCIE support. Bit (3-5)
 * for different protocol availability. Bit 4 for RBT, bit 4 for
 * SMBUS and bit 5 for PCIE.
 */
enum {};

/* OEM Vendor Manufacture ID */
#define NCSI_OEM_MFR_MLX_ID
#define NCSI_OEM_MFR_BCM_ID
#define NCSI_OEM_MFR_INTEL_ID
/* Intel specific OEM command */
#define NCSI_OEM_INTEL_CMD_GMA
#define NCSI_OEM_INTEL_CMD_KEEP_PHY
/* Broadcom specific OEM Command */
#define NCSI_OEM_BCM_CMD_GMA
/* Mellanox specific OEM Command */
#define NCSI_OEM_MLX_CMD_GMA
#define NCSI_OEM_MLX_CMD_GMA_PARAM
#define NCSI_OEM_MLX_CMD_SMAF
#define NCSI_OEM_MLX_CMD_SMAF_PARAM
/* OEM Command payload lengths*/
#define NCSI_OEM_INTEL_CMD_GMA_LEN
#define NCSI_OEM_INTEL_CMD_KEEP_PHY_LEN
#define NCSI_OEM_BCM_CMD_GMA_LEN
#define NCSI_OEM_MLX_CMD_GMA_LEN
#define NCSI_OEM_MLX_CMD_SMAF_LEN
/* Offset in OEM request */
#define MLX_SMAF_MAC_ADDR_OFFSET
#define MLX_SMAF_MED_SUPPORT_OFFSET
/* Mac address offset in OEM response */
#define BCM_MAC_ADDR_OFFSET
#define MLX_MAC_ADDR_OFFSET
#define INTEL_MAC_ADDR_OFFSET


struct ncsi_channel_version {};

struct ncsi_channel_cap {};

struct ncsi_channel_mode {};

struct ncsi_channel_mac_filter {};

struct ncsi_channel_vlan_filter {};

struct ncsi_channel_stats {};

struct ncsi_dev_priv;
struct ncsi_package;

#define NCSI_PACKAGE_SHIFT
#define NCSI_PACKAGE_INDEX(c)
#define NCSI_RESERVED_CHANNEL
#define NCSI_CHANNEL_INDEX(c)
#define NCSI_TO_CHANNEL(p, c)
#define NCSI_MAX_PACKAGE
#define NCSI_MAX_CHANNEL

struct ncsi_channel {};

struct ncsi_package {};

struct ncsi_request {};

enum {};

struct vlan_vid {};

struct ncsi_dev_priv {};

struct ncsi_cmd_arg {};

extern struct list_head ncsi_dev_list;
extern spinlock_t ncsi_dev_lock;

#define TO_NCSI_DEV_PRIV(nd)
#define NCSI_FOR_EACH_DEV(ndp)
#define NCSI_FOR_EACH_PACKAGE(ndp, np)
#define NCSI_FOR_EACH_CHANNEL(np, nc)

/* Resources */
int ncsi_reset_dev(struct ncsi_dev *nd);
void ncsi_start_channel_monitor(struct ncsi_channel *nc);
void ncsi_stop_channel_monitor(struct ncsi_channel *nc);
struct ncsi_channel *ncsi_find_channel(struct ncsi_package *np,
				       unsigned char id);
struct ncsi_channel *ncsi_add_channel(struct ncsi_package *np,
				      unsigned char id);
struct ncsi_package *ncsi_find_package(struct ncsi_dev_priv *ndp,
				       unsigned char id);
struct ncsi_package *ncsi_add_package(struct ncsi_dev_priv *ndp,
				      unsigned char id);
void ncsi_remove_package(struct ncsi_package *np);
void ncsi_find_package_and_channel(struct ncsi_dev_priv *ndp,
				   unsigned char id,
				   struct ncsi_package **np,
				   struct ncsi_channel **nc);
struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp,
					unsigned int req_flags);
void ncsi_free_request(struct ncsi_request *nr);
struct ncsi_dev *ncsi_find_dev(struct net_device *dev);
int ncsi_process_next_channel(struct ncsi_dev_priv *ndp);
bool ncsi_channel_has_link(struct ncsi_channel *channel);
bool ncsi_channel_is_last(struct ncsi_dev_priv *ndp,
			  struct ncsi_channel *channel);
int ncsi_update_tx_channel(struct ncsi_dev_priv *ndp,
			   struct ncsi_package *np,
			   struct ncsi_channel *disable,
			   struct ncsi_channel *enable);

/* Packet handlers */
u32 ncsi_calculate_checksum(unsigned char *data, int len);
int ncsi_xmit_cmd(struct ncsi_cmd_arg *nca);
int ncsi_rcv_rsp(struct sk_buff *skb, struct net_device *dev,
		 struct packet_type *pt, struct net_device *orig_dev);
int ncsi_aen_handler(struct ncsi_dev_priv *ndp, struct sk_buff *skb);

#endif /* __NCSI_INTERNAL_H__ */