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

Quelle  octep_vf_mbox.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/* Marvell Octeon EP (EndPoint) Ethernet Driver
 *
 * Copyright (C) 2020 Marvell.
 *
 */

#ifndef _OCTEP_VF_MBOX_H_
#define _OCTEP_VF_MBOX_H_

/* When a new command is implemented, VF Mbox version should be bumped.
 */

enum octep_pfvf_mbox_version {
 OCTEP_PFVF_MBOX_VERSION_V0,
 OCTEP_PFVF_MBOX_VERSION_V1,
 OCTEP_PFVF_MBOX_VERSION_V2
};

#define OCTEP_PFVF_MBOX_VERSION_CURRENT OCTEP_PFVF_MBOX_VERSION_V2

enum octep_pfvf_mbox_opcode {
 OCTEP_PFVF_MBOX_CMD_VERSION,
 OCTEP_PFVF_MBOX_CMD_SET_MTU,
 OCTEP_PFVF_MBOX_CMD_SET_MAC_ADDR,
 OCTEP_PFVF_MBOX_CMD_GET_MAC_ADDR,
 OCTEP_PFVF_MBOX_CMD_GET_LINK_INFO,
 OCTEP_PFVF_MBOX_CMD_GET_STATS,
 OCTEP_PFVF_MBOX_CMD_SET_RX_STATE,
 OCTEP_PFVF_MBOX_CMD_SET_LINK_STATUS,
 OCTEP_PFVF_MBOX_CMD_GET_LINK_STATUS,
 OCTEP_PFVF_MBOX_CMD_GET_MTU,
 OCTEP_PFVF_MBOX_CMD_DEV_REMOVE,
 OCTEP_PFVF_MBOX_CMD_GET_FW_INFO,
 OCTEP_PFVF_MBOX_CMD_SET_OFFLOADS,
 OCTEP_PFVF_MBOX_NOTIF_LINK_STATUS,
 OCTEP_PFVF_MBOX_CMD_MAX,
};

enum octep_pfvf_mbox_word_type {
 OCTEP_PFVF_MBOX_TYPE_CMD,
 OCTEP_PFVF_MBOX_TYPE_RSP_ACK,
 OCTEP_PFVF_MBOX_TYPE_RSP_NACK,
};

enum octep_pfvf_mbox_cmd_status {
 OCTEP_PFVF_MBOX_CMD_STATUS_NOT_SETUP = 1,
 OCTEP_PFVF_MBOX_CMD_STATUS_TIMEDOUT = 2,
 OCTEP_PFVF_MBOX_CMD_STATUS_NACK = 3,
 OCTEP_PFVF_MBOX_CMD_STATUS_BUSY = 4,
 OCTEP_PFVF_MBOX_CMD_STATUS_ERR = 5
};

enum octep_pfvf_link_status {
 OCTEP_PFVF_LINK_STATUS_DOWN,
 OCTEP_PFVF_LINK_STATUS_UP,
};

enum octep_pfvf_link_speed {
 OCTEP_PFVF_LINK_SPEED_NONE,
 OCTEP_PFVF_LINK_SPEED_1000,
 OCTEP_PFVF_LINK_SPEED_10000,
 OCTEP_PFVF_LINK_SPEED_25000,
 OCTEP_PFVF_LINK_SPEED_40000,
 OCTEP_PFVF_LINK_SPEED_50000,
 OCTEP_PFVF_LINK_SPEED_100000,
 OCTEP_PFVF_LINK_SPEED_LAST,
};

enum octep_pfvf_link_duplex {
 OCTEP_PFVF_LINK_HALF_DUPLEX,
 OCTEP_PFVF_LINK_FULL_DUPLEX,
};

enum octep_pfvf_link_autoneg {
 OCTEP_PFVF_LINK_AUTONEG,
 OCTEP_PFVF_LINK_FIXED,
};

#define OCTEP_PFVF_MBOX_TIMEOUT_WAIT_COUNT  8000
#define OCTEP_PFVF_MBOX_TIMEOUT_WAIT_UDELAY 1000
#define OCTEP_PFVF_MBOX_MAX_RETRIES    2
#define OCTEP_PFVF_MBOX_VERSION        0
#define OCTEP_PFVF_MBOX_MAX_DATA_SIZE  6
#define OCTEP_PFVF_MBOX_MAX_DATA_BUF_SIZE 320
#define OCTEP_PFVF_MBOX_MORE_FRAG_FLAG 1

union octep_pfvf_mbox_word {
 u64 u64;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 rsvd:6;
  u64 data:48;
 } s;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 frag:1;
  u64 rsvd:5;
  u8 data[6];
 } s_data;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 rsvd:6;
  u64 version:48;
 } s_version;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 rsvd:6;
  u8 mac_addr[6];
 } s_set_mac;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 rsvd:6;
  u64 mtu:48;
 } s_set_mtu;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 state:1;
  u64 rsvd:53;
 } s_link_state;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 status:1;
  u64 rsvd:53;
 } s_link_status;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 pkind:8;
  u64 fsz:8;
  u64 rx_ol_flags:16;
  u64 tx_ol_flags:16;
  u64 rsvd:6;
 } s_fw_info;
 struct {
  u64 opcode:8;
  u64 type:2;
  u64 rsvd:22;
  u64 rx_ol_flags:16;
  u64 tx_ol_flags:16;
 } s_offloads;
} __packed;

int octep_vf_setup_mbox(struct octep_vf_device *oct);
void octep_vf_delete_mbox(struct octep_vf_device *oct);
int octep_vf_mbox_send_cmd(struct octep_vf_device *oct, union octep_pfvf_mbox_word cmd,
      union octep_pfvf_mbox_word *rsp);
int octep_vf_mbox_bulk_read(struct octep_vf_device *oct, enum octep_pfvf_mbox_opcode opcode,
       u8 *data, int *size);
int octep_vf_mbox_set_mtu(struct octep_vf_device *oct, int mtu);
int octep_vf_mbox_set_mac_addr(struct octep_vf_device *oct, char *mac_addr);
int octep_vf_mbox_get_mac_addr(struct octep_vf_device *oct, char *mac_addr);
int octep_vf_mbox_version_check(struct octep_vf_device *oct);
int octep_vf_mbox_set_rx_state(struct octep_vf_device *oct, bool state);
int octep_vf_mbox_set_link_status(struct octep_vf_device *oct, bool status);
int octep_vf_mbox_get_link_status(struct octep_vf_device *oct, u8 *oper_up);
int octep_vf_mbox_dev_remove(struct octep_vf_device *oct);
int octep_vf_mbox_get_fw_info(struct octep_vf_device *oct);
int octep_vf_mbox_set_offloads(struct octep_vf_device *oct, u16 tx_offloads, u16 rx_offloads);

#endif

Messung V0.5
C=99 H=100 G=99

¤ 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.