brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · 801e105 Raw
74 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (C) 2005 - 2016 Broadcom4 * All rights reserved.5 *6 * Contact Information:7 * linux-drivers@emulex.com8 *9 * Emulex10 * 3333 Susan Street11 * Costa Mesa, CA 9262612 */13 14#ifndef BE_ROCE_H15#define BE_ROCE_H16 17#include <linux/pci.h>18#include <linux/netdevice.h>19 20#define BE_ROCE_ABI_VERSION	121 22struct ocrdma_dev;23 24enum be_interrupt_mode {25	BE_INTERRUPT_MODE_MSIX	= 0,26	BE_INTERRUPT_MODE_INTX	= 1,27	BE_INTERRUPT_MODE_MSI	= 2,28};29 30#define MAX_MSIX_VECTORS		3231struct be_dev_info {32	u8 __iomem *db;33	u64 unmapped_db;34	u32 db_page_size;35	u32 db_total_size;36	u64 dpp_unmapped_addr;37	u32 dpp_unmapped_len;38	struct pci_dev *pdev;39	struct net_device *netdev;40	u8 mac_addr[ETH_ALEN];41	u32 dev_family;42	enum be_interrupt_mode intr_mode;43	struct {44		int num_vectors;45		int start_vector;46		u32 vector_list[MAX_MSIX_VECTORS];47	} msix;48};49 50/* ocrdma driver register's the callback functions with nic driver. */51struct ocrdma_driver {52	unsigned char name[32];53	u32 be_abi_version;54	struct ocrdma_dev *(*add) (struct be_dev_info *dev_info);55	void (*remove) (struct ocrdma_dev *);56	void (*state_change_handler) (struct ocrdma_dev *, u32 new_state);57};58 59enum be_roce_event {60	BE_DEV_SHUTDOWN = 261};62 63/* APIs for RoCE driver to register callback handlers,64 * which will be invoked when device is added, removed, ifup, ifdown65 */66int be_roce_register_driver(struct ocrdma_driver *drv);67void be_roce_unregister_driver(struct ocrdma_driver *drv);68 69/* API for RoCE driver to issue mailbox commands */70int be_roce_mcc_cmd(void *netdev_handle, void *wrb_payload,71		    int wrb_payload_size, u16 *cmd_status, u16 *ext_status);72 73#endif /* BE_ROCE_H */74