Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/huawei/hinic/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  hinic_hw_io.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Huawei HiNIC PCI Express Linux driver
 * Copyright(c) 2017 Huawei Technologies Co., Ltd
 */


#ifndef HINIC_HW_IO_H
#define HINIC_HW_IO_H

#include <linux/types.h>
#include <linux/pci.h>
#include <linux/semaphore.h>
#include <linux/sizes.h>

#include "hinic_hw_if.h"
#include "hinic_hw_eqs.h"
#include "hinic_hw_wq.h"
#include "hinic_hw_cmdq.h"
#include "hinic_hw_qp.h"

#define HINIC_DB_PAGE_SIZE      SZ_4K
#define HINIC_DB_SIZE           SZ_4M
#define HINIC_HW_WQ_PAGE_SIZE SZ_4K
#define HINIC_DEFAULT_WQ_PAGE_SIZE SZ_256K

#define HINIC_DB_MAX_AREAS      (HINIC_DB_SIZE / HINIC_DB_PAGE_SIZE)

enum hinic_db_type {
 HINIC_DB_CMDQ_TYPE,
 HINIC_DB_SQ_TYPE,
};

enum hinic_io_path {
 HINIC_CTRL_PATH,
 HINIC_DATA_PATH,
};

struct hinic_free_db_area {
 int             db_idx[HINIC_DB_MAX_AREAS];

 int             alloc_pos;
 int             return_pos;

 int             num_free;

 /* Lock for getting db area */
 struct semaphore        idx_lock;
};

struct hinic_nic_cfg {
 /* lock for getting nic cfg */
 struct mutex  cfg_mutex;
 bool   pause_set;
 u32   auto_neg;
 u32   rx_pause;
 u32   tx_pause;
};

struct hinic_func_to_io {
 struct hinic_hwif       *hwif;
 struct hinic_hwdev      *hwdev;
 u16   global_qpn;
 struct hinic_ceqs       ceqs;

 struct hinic_wqs        wqs;

 struct hinic_wq         *sq_wq;
 struct hinic_wq         *rq_wq;

 struct hinic_qp         *qps;
 u16                     max_qps;

 u16   sq_depth;
 u16   rq_depth;

 void __iomem            **sq_db;
 void __iomem            *db_base;

 void                    *ci_addr_base;
 dma_addr_t              ci_dma_base;

 struct hinic_free_db_area       free_db_area;

 void __iomem                    *cmdq_db_area[HINIC_MAX_CMDQ_TYPES];

 struct hinic_cmdqs              cmdqs;

 u16   max_vfs;
 struct vf_data_storage *vf_infos;
 u8   link_status;
 struct hinic_nic_cfg nic_cfg;
};

struct hinic_wq_page_size {
 u8 status;
 u8 version;
 u8 rsvd0[6];

 u16 func_idx;
 u8 ppf_idx;
 u8 page_size;

 u32 rsvd1;
};

int hinic_set_wq_page_size(struct hinic_hwdev *hwdev, u16 func_idx,
      u32 page_size);

int hinic_io_create_qps(struct hinic_func_to_io *func_to_io,
   u16 base_qpn, int num_qps,
   struct msix_entry *sq_msix_entries,
   struct msix_entry *rq_msix_entries);

void hinic_io_destroy_qps(struct hinic_func_to_io *func_to_io,
     int num_qps);

int hinic_io_init(struct hinic_func_to_io *func_to_io,
    struct hinic_hwif *hwif, u16 max_qps, int num_ceqs,
    struct msix_entry *ceq_msix_entries);

void hinic_io_free(struct hinic_func_to_io *func_to_io);

#endif

Messung V0.5
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.