iPXE
Functions
vxge_config.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ipxe/malloc.h>
#include <ipxe/pci.h>
#include <ipxe/iobuf.h>
#include <ipxe/ethernet.h>
#include <byteswap.h>
#include "vxge_traffic.h"
#include "vxge_config.h"
#include "vxge_main.h"

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_ONLY)
 
void vxge_hw_vpath_set_zero_rx_frm_len (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status vxge_hw_set_fw_api (struct __vxge_hw_device *hldev, u64 vp_id, u32 action, u32 offset, u64 data0, u64 data1)
 
enum vxge_hw_status vxge_hw_get_func_mode (struct __vxge_hw_device *hldev, u32 *func_mode)
 
void __vxge_hw_device_pci_e_init (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status __vxge_hw_device_register_poll (void __iomem *reg, u64 mask, u32 max_millis)
 
enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check (u64 __iomem *vpath_rst_in_prog)
 
static struct vxge_hw_legacy_reg __iomem__vxge_hw_device_get_legacy_reg (struct pci_device *pdev, void __iomem *bar0)
 
struct vxge_hw_toc_reg __iomem__vxge_hw_device_toc_get (void __iomem *bar0, struct vxge_hw_legacy_reg __iomem *legacy_reg)
 
enum vxge_hw_status __vxge_hw_device_reg_addr_get (struct __vxge_hw_device *hldev)
 
static u32 __vxge_hw_device_access_rights_get (u32 host_type, u32 func_id)
 
void __vxge_hw_device_host_info_get (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status vxge_hw_device_hw_info_get (struct pci_device *pdev, void __iomem *bar0, struct vxge_hw_device_hw_info *hw_info)
 vxge_hw_device_hw_info_get - Get the hw information Returns the vpath mask that has the bits set for each vpath allocated for the driver, FW version information and the first mac addresse for each vpath More...
 
enum vxge_hw_status vxge_hw_device_initialize (struct __vxge_hw_device **devh, void *bar0, struct pci_device *pdev, u8 titan1)
 
void vxge_hw_device_terminate (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status vxge_hw_ring_replenish (struct __vxge_hw_ring *ring)
 
enum vxge_hw_status __vxge_hw_ring_create (struct __vxge_hw_virtualpath *vpath, struct __vxge_hw_ring *ring)
 
enum vxge_hw_status __vxge_hw_ring_delete (struct __vxge_hw_ring *ring)
 
enum vxge_hw_status __vxge_hw_legacy_swapper_set (struct vxge_hw_legacy_reg __iomem *legacy_reg)
 
enum vxge_hw_status __vxge_hw_vpath_swapper_set (struct vxge_hw_vpath_reg __iomem *vpath_reg)
 
enum vxge_hw_status __vxge_hw_kdfc_swapper_set (struct vxge_hw_legacy_reg __iomem *legacy_reg, struct vxge_hw_vpath_reg __iomem *vpath_reg)
 
enum vxge_hw_status vxge_hw_vpath_strip_fcs_check (struct __vxge_hw_device *hldev, u64 vpath_mask)
 
enum vxge_hw_status __vxge_hw_fifo_create (struct __vxge_hw_virtualpath *vpath, struct __vxge_hw_fifo *fifo)
 
enum vxge_hw_status __vxge_hw_fifo_delete (struct __vxge_hw_fifo *fifo)
 
enum vxge_hw_status __vxge_hw_vpath_pci_read (struct __vxge_hw_virtualpath *vpath, u32 phy_func_0, u32 offset, u32 *val)
 
u32 __vxge_hw_vpath_func_id_get (struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
 
static void __vxge_hw_read_rts_ds (struct vxge_hw_vpath_reg __iomem *vpath_reg, u64 dta_struct_sel)
 
enum vxge_hw_status __vxge_hw_vpath_card_info_get (struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
 
enum vxge_hw_status __vxge_hw_vpath_fw_ver_get (struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
 
enum vxge_hw_status __vxge_hw_vpath_addr_get (struct vxge_hw_vpath_reg *vpath_reg, u8(macaddr)[ETH_ALEN], u8(macaddr_mask)[ETH_ALEN])
 
static enum vxge_hw_status __vxge_hw_vpath_mgmt_read (struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status __vxge_hw_vpath_reset_check (struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status __vxge_hw_vpath_reset (struct __vxge_hw_device *hldev, u32 vp_id)
 
void __vxge_hw_vpath_prc_configure (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status __vxge_hw_vpath_kdfc_configure (struct __vxge_hw_device *hldev, u32 vp_id)
 
enum vxge_hw_status __vxge_hw_vpath_mac_configure (struct __vxge_hw_device *hldev)
 
enum vxge_hw_status __vxge_hw_vpath_tim_configure (struct __vxge_hw_device *hldev, u32 vp_id)
 
enum vxge_hw_status __vxge_hw_vpath_initialize (struct __vxge_hw_device *hldev, u32 vp_id)
 
enum vxge_hw_status __vxge_hw_vp_initialize (struct __vxge_hw_device *hldev, u32 vp_id, struct __vxge_hw_virtualpath *vpath)
 
void __vxge_hw_vp_terminate (struct __vxge_hw_device *hldev, struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status vxge_hw_vpath_mtu_set (struct __vxge_hw_virtualpath *vpath, u32 new_mtu)
 
enum vxge_hw_status vxge_hw_vpath_open (struct __vxge_hw_device *hldev, struct vxge_vpath *vpath)
 
void vxge_hw_vpath_rx_doorbell_init (struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status vxge_hw_vpath_close (struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status vxge_hw_vpath_reset (struct __vxge_hw_virtualpath *vpath)
 
enum vxge_hw_status vxge_hw_vpath_recover_from_reset (struct __vxge_hw_virtualpath *vpath)
 
void vxge_hw_vpath_enable (struct __vxge_hw_virtualpath *vpath)
 

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_ONLY  )

◆ vxge_hw_vpath_set_zero_rx_frm_len()

void vxge_hw_vpath_set_zero_rx_frm_len ( struct __vxge_hw_device hldev)

Definition at line 31 of file vxge_config.c.

32 {
33  u64 val64;
34  struct __vxge_hw_virtualpath *vpath;
35  struct vxge_hw_vpath_reg __iomem *vp_reg;
36 
37  vpath = &hldev->virtual_path;
38  vp_reg = vpath->vp_reg;
39 
40  val64 = readq(&vp_reg->rxmac_vcfg0);
41  val64 &= ~VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff);
42  writeq(val64, &vp_reg->rxmac_vcfg0);
43  val64 = readq(&vp_reg->rxmac_vcfg0);
44  return;
45 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
uint64_t u64
Definition: stdint.h:25
#define __iomem
Definition: igbvf_osdep.h:46
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(val)
Definition: vxge_reg.h:171
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __iomem, readq(), vxge_hw_vpath_reg::rxmac_vcfg0, __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN, and writeq().

Referenced by vxge_close().

◆ vxge_hw_set_fw_api()

enum vxge_hw_status vxge_hw_set_fw_api ( struct __vxge_hw_device hldev,
u64  vp_id,
u32  action,
u32  offset,
u64  data0,
u64  data1 
)

Definition at line 48 of file vxge_config.c.

54 {
56  u64 val64;
58 
59  struct vxge_hw_vpath_reg __iomem *vp_reg;
60 
61  vp_reg = (struct vxge_hw_vpath_reg __iomem *)hldev->vpath_reg[vp_id];
62 
65 
66  wmb();
67 
68  val64 = VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(action) |
72 
73  writeq(val64, &vp_reg->rts_access_steer_ctrl);
74 
75  wmb();
76 
78  &vp_reg->rts_access_steer_ctrl,
80  WAIT_FACTOR *
82 
83  if (status != VXGE_HW_OK)
84  return VXGE_HW_FAIL;
85 
86  val64 = readq(&vp_reg->rts_access_steer_ctrl);
87 
90  else
92 
93  return status;
94 }
wmb()
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET(val)
Definition: vxge_reg.h:189
u32 data1
Definition: ar9003_mac.h:71
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS
Definition: vxge_reg.h:188
#define WAIT_FACTOR
Definition: vxge_config.h:28
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE
Definition: vxge_reg.h:185
uint64_t u64
Definition: stdint.h:25
u64 rts_access_steer_data0
Definition: vxge_reg.h:4215
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
u64 rts_access_steer_ctrl
Definition: vxge_reg.h:4204
#define __iomem
Definition: igbvf_osdep.h:46
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
u64 rts_access_steer_data1
Definition: vxge_reg.h:4217
uint8_t status
Status.
Definition: ena.h:16
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO
Definition: vxge_reg.h:204
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(val)
Definition: vxge_reg.h:183
uint16_t offset
Offset to command line.
Definition: bzimage.h:8
u32 data0
Definition: ar9003_mac.h:69
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val)
Definition: vxge_reg.h:184
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
uint32_t u32
Definition: stdint.h:23
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
Definition: vxge_config.c:148

References __iomem, __vxge_hw_device_register_poll(), data0, data1, offset, readq(), vxge_hw_vpath_reg::rts_access_steer_ctrl, vxge_hw_vpath_reg::rts_access_steer_data0, vxge_hw_vpath_reg::rts_access_steer_data1, status, __vxge_hw_device::vpath_reg, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_FAIL, VXGE_HW_OK, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO, VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET, VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS, VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE, WAIT_FACTOR, wmb(), and writeq().

Referenced by vxge_hw_get_func_mode().

◆ vxge_hw_get_func_mode()

enum vxge_hw_status vxge_hw_get_func_mode ( struct __vxge_hw_device hldev,
u32 func_mode 
)

Definition at line 98 of file vxge_config.c.

99 {
101  struct vxge_hw_vpath_reg __iomem *vp_reg;
102  u64 val64;
103  int vp_id;
104 
105  /* get the first vpath number assigned to this function */
106  vp_id = hldev->first_vp_id;
107 
108  vp_reg = (struct vxge_hw_vpath_reg __iomem *)hldev->vpath_reg[vp_id];
109 
110  status = vxge_hw_set_fw_api(hldev, vp_id,
112 
113  if (status == VXGE_HW_OK) {
114  val64 = readq(&vp_reg->rts_access_steer_data0);
115  *func_mode = VXGE_HW_GET_FUNC_MODE_VAL(val64);
116  }
117 
118  return status;
119 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
enum vxge_hw_status vxge_hw_set_fw_api(struct __vxge_hw_device *hldev, u64 vp_id, u32 action, u32 offset, u64 data0, u64 data1)
Definition: vxge_config.c:48
uint64_t u64
Definition: stdint.h:25
u64 rts_access_steer_data0
Definition: vxge_reg.h:4215
#define __iomem
Definition: igbvf_osdep.h:46
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
uint8_t status
Status.
Definition: ena.h:16
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_GET_FUNC_MODE_VAL(val)
Definition: vxge_reg.h:67
#define VXGE_HW_FW_API_GET_FUNC_MODE
Definition: vxge_reg.h:65

References __iomem, __vxge_hw_device::first_vp_id, readq(), vxge_hw_vpath_reg::rts_access_steer_data0, status, __vxge_hw_device::vpath_reg, VXGE_HW_FW_API_GET_FUNC_MODE, VXGE_HW_GET_FUNC_MODE_VAL, VXGE_HW_OK, and vxge_hw_set_fw_api().

Referenced by vxge_probe().

◆ __vxge_hw_device_pci_e_init()

void __vxge_hw_device_pci_e_init ( struct __vxge_hw_device hldev)

Definition at line 127 of file vxge_config.c.

128 {
129  u16 cmd = 0;
130  struct pci_device *pdev = hldev->pdev;
131 
132  vxge_trace();
133 
134  /* Set the PErr Repconse bit and SERR in PCI command register. */
136  cmd |= 0x140;
138 
139  return;
140 }
uint16_t u16
Definition: stdint.h:21
int pci_write_config_word(struct pci_device *pci, unsigned int where, uint16_t value)
Write 16-bit word to PCI configuration space.
int pci_read_config_word(struct pci_device *pci, unsigned int where, uint16_t *value)
Read 16-bit word from PCI configuration space.
#define PCI_COMMAND
PCI command.
Definition: pci.h:25
A PCI device.
Definition: pci.h:210
#define vxge_trace()
Definition: vxge_config.h:767
struct pci_device * pdev
Definition: vxge_config.h:482
struct golan_eqe_cmd cmd
Definition: CIB_PRM.h:29

References cmd, PCI_COMMAND, pci_read_config_word(), pci_write_config_word(), __vxge_hw_device::pdev, and vxge_trace.

Referenced by vxge_hw_device_initialize().

◆ __vxge_hw_device_register_poll()

enum vxge_hw_status __vxge_hw_device_register_poll ( void __iomem reg,
u64  mask,
u32  max_millis 
)

Definition at line 148 of file vxge_config.c.

149 {
150  u64 val64;
151  u32 i = 0;
152  enum vxge_hw_status ret = VXGE_HW_FAIL;
153 
154  udelay(10);
155 
156  do {
157  val64 = readq(reg);
158  if (!(val64 & mask))
159  return VXGE_HW_OK;
160  udelay(100);
161  } while (++i <= 9);
162 
163  i = 0;
164  do {
165  val64 = readq(reg);
166  if (!(val64 & mask))
167  return VXGE_HW_OK;
168  udelay(1000);
169  } while (++i <= max_millis);
170 
171  return ret;
172 }
static unsigned int unsigned int reg
Definition: myson.h:162
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
uint64_t u64
Definition: stdint.h:25
vxge_hw_status
Definition: vxge_config.h:70
uint32_t u32
Definition: stdint.h:23

References readq(), reg, udelay(), VXGE_HW_FAIL, and VXGE_HW_OK.

Referenced by __vxge_hw_device_vpath_reset_in_prog_check(), __vxge_hw_pio_mem_write64(), __vxge_hw_vpath_pci_read(), __vxge_hw_vpath_reset_check(), and vxge_hw_set_fw_api().

◆ __vxge_hw_device_vpath_reset_in_prog_check()

enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check ( u64 __iomem vpath_rst_in_prog)

Definition at line 179 of file vxge_config.c.

180 {
181  enum vxge_hw_status status;
182 
183  vxge_trace();
184 
188  return status;
189 }
u64 vpath_rst_in_prog
Definition: vxge_reg.h:167
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
uint8_t status
Status.
Definition: ena.h:16
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(val)
Definition: vxge_reg.h:168
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
Definition: vxge_config.c:148

References __vxge_hw_device_register_poll(), status, vpath_rst_in_prog, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG, and vxge_trace.

Referenced by __vxge_hw_device_reg_addr_get(), and vxge_hw_device_hw_info_get().

◆ __vxge_hw_device_get_legacy_reg()

static struct vxge_hw_legacy_reg __iomem* __vxge_hw_device_get_legacy_reg ( struct pci_device pdev,
void __iomem bar0 
)
static

Definition at line 197 of file vxge_config.c.

198 {
199  enum vxge_hw_status status;
200  struct vxge_hw_legacy_reg __iomem *legacy_reg;
201  /*
202  * If the length of Bar0 is 16MB, then assume that we are configured
203  * in MF8P_VP2 mode and then add 8MB to the legacy_reg offsets
204  */
205  if (pci_bar_size(pdev, PCI_BASE_ADDRESS_0) == 0x1000000)
206  legacy_reg = (struct vxge_hw_legacy_reg __iomem *)
207  (bar0 + 0x800000);
208  else
209  legacy_reg = (struct vxge_hw_legacy_reg __iomem *)bar0;
210 
211  status = __vxge_hw_legacy_swapper_set(legacy_reg);
212  if (status != VXGE_HW_OK)
213  return NULL;
214 
215  return legacy_reg;
216 }
unsigned long pci_bar_size(struct pci_device *pci, unsigned int reg)
Get the size of a PCI BAR.
Definition: pci.c:163
#define PCI_BASE_ADDRESS_0
Definition: pci.h:62
#define __iomem
Definition: igbvf_osdep.h:46
uint8_t status
Status.
Definition: ena.h:16
vxge_hw_status
Definition: vxge_config.h:70
enum vxge_hw_status __vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
Definition: vxge_config.c:684
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321

References __iomem, __vxge_hw_legacy_swapper_set(), NULL, pci_bar_size(), PCI_BASE_ADDRESS_0, status, and VXGE_HW_OK.

Referenced by __vxge_hw_device_reg_addr_get(), and vxge_hw_device_hw_info_get().

◆ __vxge_hw_device_toc_get()

struct vxge_hw_toc_reg __iomem* __vxge_hw_device_toc_get ( void __iomem bar0,
struct vxge_hw_legacy_reg __iomem legacy_reg 
)

Definition at line 223 of file vxge_config.c.

225 {
226  u64 val64;
227  struct vxge_hw_toc_reg __iomem *toc = NULL;
228 
229  val64 = readq(&legacy_reg->toc_first_pointer);
230  toc = (struct vxge_hw_toc_reg __iomem *)(bar0+val64);
231 
232  return toc;
233 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
uint64_t u64
Definition: stdint.h:25
#define __iomem
Definition: igbvf_osdep.h:46
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321

References __iomem, NULL, and readq().

Referenced by __vxge_hw_device_reg_addr_get(), and vxge_hw_device_hw_info_get().

◆ __vxge_hw_device_reg_addr_get()

enum vxge_hw_status __vxge_hw_device_reg_addr_get ( struct __vxge_hw_device hldev)

Definition at line 242 of file vxge_config.c.

243 {
244  u64 val64;
245  u32 i;
247 
249  hldev->bar0);
250  if (hldev->legacy_reg == NULL) {
252  goto exit;
253  }
254 
255  hldev->toc_reg = __vxge_hw_device_toc_get(hldev->bar0,
256  hldev->legacy_reg);
257  if (hldev->toc_reg == NULL) {
259  goto exit;
260  }
261 
262  val64 = readq(&hldev->toc_reg->toc_common_pointer);
263  hldev->common_reg =
264  (struct vxge_hw_common_reg __iomem *)(hldev->bar0 + val64);
265 
266  val64 = readq(&hldev->toc_reg->toc_mrpcim_pointer);
267  hldev->mrpcim_reg =
268  (struct vxge_hw_mrpcim_reg __iomem *)(hldev->bar0 + val64);
269 
270  for (i = 0; i < VXGE_HW_TITAN_SRPCIM_REG_SPACES; i++) {
271  val64 = readq(&hldev->toc_reg->toc_srpcim_pointer[i]);
272  hldev->srpcim_reg[i] =
273  (struct vxge_hw_srpcim_reg __iomem *)
274  (hldev->bar0 + val64);
275  }
276 
277  for (i = 0; i < VXGE_HW_TITAN_VPMGMT_REG_SPACES; i++) {
278  val64 = readq(&hldev->toc_reg->toc_vpmgmt_pointer[i]);
279  hldev->vpmgmt_reg[i] =
280  (struct vxge_hw_vpmgmt_reg __iomem *)(hldev->bar0 + val64);
281  }
282 
283  for (i = 0; i < VXGE_HW_TITAN_VPATH_REG_SPACES; i++) {
284  val64 = readq(&hldev->toc_reg->toc_vpath_pointer[i]);
285  hldev->vpath_reg[i] =
286  (struct vxge_hw_vpath_reg __iomem *)
287  (hldev->bar0 + val64);
288  }
289 
290  val64 = readq(&hldev->toc_reg->toc_kdfc);
291 
292  switch (VXGE_HW_TOC_GET_KDFC_INITIAL_BIR(val64)) {
293  case 0:
294  hldev->kdfc = (u8 __iomem *)(hldev->bar0 +
296  break;
297  default:
298  break;
299  }
300 
303 exit:
304  return status;
305 }
u64 toc_vpmgmt_pointer[17]
Definition: vxge_reg.h:683
struct vxge_hw_legacy_reg * legacy_reg
Definition: vxge_config.h:495
static struct vxge_hw_legacy_reg __iomem * __vxge_hw_device_get_legacy_reg(struct pci_device *pdev, void __iomem *bar0)
Definition: vxge_config.c:197
u64 toc_vpath_pointer[17]
Definition: vxge_reg.h:687
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct vxge_hw_toc_reg __iomem * __vxge_hw_device_toc_get(void __iomem *bar0, struct vxge_hw_legacy_reg __iomem *legacy_reg)
Definition: vxge_config.c:223
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
u64 toc_mrpcim_pointer
Definition: vxge_reg.h:677
enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
Definition: vxge_config.c:179
#define VXGE_HW_TITAN_SRPCIM_REG_SPACES
Definition: vxge_reg.h:52
#define VXGE_HW_TOC_GET_KDFC_INITIAL_OFFSET(val)
Definition: vxge_reg.h:115
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_TITAN_VPATH_REG_SPACES
Definition: vxge_reg.h:54
#define VXGE_HW_TITAN_VPMGMT_REG_SPACES
Definition: vxge_reg.h:53
#define __iomem
Definition: igbvf_osdep.h:46
u64 toc_common_pointer
Definition: vxge_reg.h:669
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
Definition: vxge_config.h:501
uint8_t status
Status.
Definition: ena.h:16
void __iomem * bar0
Definition: vxge_config.h:481
struct vxge_hw_toc_reg * toc_reg
Definition: vxge_config.h:496
vxge_hw_status
Definition: vxge_config.h:70
struct pci_device * pdev
Definition: vxge_config.h:482
struct vxge_hw_mrpcim_reg * mrpcim_reg
Definition: vxge_config.h:498
u64 toc_srpcim_pointer[17]
Definition: vxge_reg.h:679
#define VXGE_HW_TOC_GET_KDFC_INITIAL_BIR(val)
Definition: vxge_reg.h:117
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
uint8_t u8
Definition: stdint.h:19
uint32_t u32
Definition: stdint.h:23
struct vxge_hw_srpcim_reg * srpcim_reg[VXGE_HW_TITAN_SRPCIM_REG_SPACES]
Definition: vxge_config.h:499

References __iomem, __vxge_hw_device_get_legacy_reg(), __vxge_hw_device_toc_get(), __vxge_hw_device_vpath_reset_in_prog_check(), __vxge_hw_device::bar0, __vxge_hw_device::common_reg, __vxge_hw_device::kdfc, __vxge_hw_device::legacy_reg, __vxge_hw_device::mrpcim_reg, NULL, __vxge_hw_device::pdev, readq(), __vxge_hw_device::srpcim_reg, status, vxge_hw_toc_reg::toc_common_pointer, vxge_hw_toc_reg::toc_kdfc, vxge_hw_toc_reg::toc_mrpcim_pointer, __vxge_hw_device::toc_reg, vxge_hw_toc_reg::toc_srpcim_pointer, vxge_hw_toc_reg::toc_vpath_pointer, vxge_hw_toc_reg::toc_vpmgmt_pointer, __vxge_hw_device::vpath_reg, vxge_hw_common_reg::vpath_rst_in_prog, __vxge_hw_device::vpmgmt_reg, VXGE_HW_FAIL, VXGE_HW_OK, VXGE_HW_TITAN_SRPCIM_REG_SPACES, VXGE_HW_TITAN_VPATH_REG_SPACES, VXGE_HW_TITAN_VPMGMT_REG_SPACES, VXGE_HW_TOC_GET_KDFC_INITIAL_BIR, and VXGE_HW_TOC_GET_KDFC_INITIAL_OFFSET.

Referenced by vxge_hw_device_initialize().

◆ __vxge_hw_device_access_rights_get()

static u32 __vxge_hw_device_access_rights_get ( u32  host_type,
u32  func_id 
)
static

Definition at line 312 of file vxge_config.c.

313 {
314  u32 access_rights = VXGE_HW_DEVICE_ACCESS_RIGHT_VPATH;
315 
316  switch (host_type) {
318  if (func_id == 0) {
319  access_rights |= VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM |
321  }
322  break;
324  access_rights |= VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM |
326  break;
328  access_rights |= VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM |
330  break;
334  break;
337  access_rights |= VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM;
338  break;
339  }
340 
341  return access_rights;
342 }
__be16 func_id
Definition: CIB_PRM.h:30
#define VXGE_HW_NO_MR_SR_VH0_FUNCTION0
Definition: vxge_config.h:431
#define VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM
Definition: vxge_config.h:493
#define VXGE_HW_MR_NO_SR_VH0_BASE_FUNCTION
Definition: vxge_config.h:430
#define VXGE_HW_SR_VH_VIRTUAL_FUNCTION
Definition: vxge_config.h:435
#define VXGE_HW_NO_MR_NO_SR_NORMAL_FUNCTION
Definition: vxge_config.h:429
#define VXGE_HW_SR_VH_FUNCTION0
Definition: vxge_config.h:434
#define VXGE_HW_MR_SR_VH0_INVALID_CONFIG
Definition: vxge_config.h:433
#define VXGE_HW_VH_NORMAL_FUNCTION
Definition: vxge_config.h:436
#define VXGE_HW_NO_MR_SR_VH0_VIRTUAL_FUNCTION
Definition: vxge_config.h:432
#define VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM
Definition: vxge_config.h:494
#define VXGE_HW_DEVICE_ACCESS_RIGHT_VPATH
Definition: vxge_config.h:492
uint32_t u32
Definition: stdint.h:23

References func_id, VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM, VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM, VXGE_HW_DEVICE_ACCESS_RIGHT_VPATH, VXGE_HW_MR_NO_SR_VH0_BASE_FUNCTION, VXGE_HW_MR_SR_VH0_INVALID_CONFIG, VXGE_HW_NO_MR_NO_SR_NORMAL_FUNCTION, VXGE_HW_NO_MR_SR_VH0_FUNCTION0, VXGE_HW_NO_MR_SR_VH0_VIRTUAL_FUNCTION, VXGE_HW_SR_VH_FUNCTION0, VXGE_HW_SR_VH_VIRTUAL_FUNCTION, and VXGE_HW_VH_NORMAL_FUNCTION.

Referenced by __vxge_hw_device_host_info_get(), and vxge_hw_device_hw_info_get().

◆ __vxge_hw_device_host_info_get()

void __vxge_hw_device_host_info_get ( struct __vxge_hw_device hldev)

Definition at line 348 of file vxge_config.c.

349 {
350  u64 val64;
351  u32 i;
352 
353  val64 = readq(&hldev->common_reg->host_type_assignments);
354 
355  hldev->host_type =
357 
359 
360  for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
361 
362  if (!(hldev->vpath_assignments & vxge_mBIT(i)))
363  continue;
364 
365  hldev->func_id =
367 
369  hldev->host_type, hldev->func_id);
370 
371  hldev->first_vp_id = i;
372  break;
373  }
374 
375  return;
376 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
u64 host_type_assignments
Definition: vxge_reg.h:883
#define u32
Definition: vga.h:21
#define VXGE_HW_MAX_VIRTUAL_PATHS
Definition: vxge_traffic.h:30
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(bits)
Definition: vxge_reg.h:47
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
Definition: vxge_config.h:501
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
u32 __vxge_hw_vpath_func_id_get(struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
Definition: vxge_config.c:906
static u32 __vxge_hw_device_access_rights_get(u32 host_type, u32 func_id)
Definition: vxge_config.c:312
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_device_access_rights_get(), __vxge_hw_vpath_func_id_get(), __vxge_hw_device::access_rights, __vxge_hw_device::common_reg, __vxge_hw_device::first_vp_id, __vxge_hw_device::func_id, __vxge_hw_device::host_type, vxge_hw_common_reg::host_type_assignments, readq(), u32, __vxge_hw_device::vpath_assignments, vxge_hw_common_reg::vpath_assignments, __vxge_hw_device::vpmgmt_reg, VXGE_HW_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS, VXGE_HW_MAX_VIRTUAL_PATHS, and vxge_mBIT.

Referenced by vxge_hw_device_initialize().

◆ vxge_hw_device_hw_info_get()

enum vxge_hw_status vxge_hw_device_hw_info_get ( struct pci_device pdev,
void __iomem bar0,
struct vxge_hw_device_hw_info hw_info 
)

vxge_hw_device_hw_info_get - Get the hw information Returns the vpath mask that has the bits set for each vpath allocated for the driver, FW version information and the first mac addresse for each vpath

Definition at line 385 of file vxge_config.c.

387 {
388  u32 i;
389  u64 val64;
390  struct vxge_hw_toc_reg __iomem *toc;
391  struct vxge_hw_mrpcim_reg __iomem *mrpcim_reg;
392  struct vxge_hw_common_reg __iomem *common_reg;
393  struct vxge_hw_vpath_reg __iomem *vpath_reg;
394  struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg;
395  struct vxge_hw_legacy_reg __iomem *legacy_reg;
396  enum vxge_hw_status status;
397 
398  vxge_trace();
399 
400  memset(hw_info, 0, sizeof(struct vxge_hw_device_hw_info));
401 
402  legacy_reg = __vxge_hw_device_get_legacy_reg(pdev, bar0);
403  if (legacy_reg == NULL) {
405  goto exit;
406  }
407 
408  toc = __vxge_hw_device_toc_get(bar0, legacy_reg);
409  if (toc == NULL) {
411  goto exit;
412  }
413 
414  val64 = readq(&toc->toc_common_pointer);
415  common_reg = (struct vxge_hw_common_reg __iomem *)(bar0 + val64);
416 
418  (u64 __iomem *)&common_reg->vpath_rst_in_prog);
419  if (status != VXGE_HW_OK)
420  goto exit;
421 
422  hw_info->vpath_mask = readq(&common_reg->vpath_assignments);
423 
424  val64 = readq(&common_reg->host_type_assignments);
425 
426  hw_info->host_type =
428 
429  for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
430 
431  if (!((hw_info->vpath_mask) & vxge_mBIT(i)))
432  continue;
433 
434  val64 = readq(&toc->toc_vpmgmt_pointer[i]);
435 
436  vpmgmt_reg = (struct vxge_hw_vpmgmt_reg __iomem *)
437  (bar0 + val64);
438 
439  hw_info->func_id = __vxge_hw_vpath_func_id_get(vpmgmt_reg);
441  hw_info->func_id) &
443 
444  val64 = readq(&toc->toc_mrpcim_pointer);
445 
446  mrpcim_reg = (struct vxge_hw_mrpcim_reg __iomem *)
447  (bar0 + val64);
448 
449  writeq(0, &mrpcim_reg->xgmac_gen_fw_memo_mask);
450  wmb();
451  }
452 
453  val64 = readq(&toc->toc_vpath_pointer[i]);
454 
455  vpath_reg = (struct vxge_hw_vpath_reg __iomem *)(bar0 + val64);
456 
457  status = __vxge_hw_vpath_fw_ver_get(vpath_reg, hw_info);
458  if (status != VXGE_HW_OK)
459  goto exit;
460 
461  status = __vxge_hw_vpath_card_info_get(vpath_reg, hw_info);
462  if (status != VXGE_HW_OK)
463  goto exit;
464 
465  break;
466  }
467 
468  for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
469 
470  if (!((hw_info->vpath_mask) & vxge_mBIT(i)))
471  continue;
472 
473  val64 = readq(&toc->toc_vpath_pointer[i]);
474  vpath_reg = (struct vxge_hw_vpath_reg __iomem *)(bar0 + val64);
475 
476  status = __vxge_hw_vpath_addr_get(vpath_reg,
477  hw_info->mac_addrs[i],
478  hw_info->mac_addr_masks[i]);
479  if (status != VXGE_HW_OK)
480  goto exit;
481  }
482 exit:
483  return status;
484 }
wmb()
u64 toc_vpmgmt_pointer[17]
Definition: vxge_reg.h:683
static struct vxge_hw_legacy_reg __iomem * __vxge_hw_device_get_legacy_reg(struct pci_device *pdev, void __iomem *bar0)
Definition: vxge_config.c:197
u64 toc_vpath_pointer[17]
Definition: vxge_reg.h:687
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct vxge_hw_toc_reg __iomem * __vxge_hw_device_toc_get(void __iomem *bar0, struct vxge_hw_legacy_reg __iomem *legacy_reg)
Definition: vxge_config.c:223
u64 host_type_assignments
Definition: vxge_reg.h:883
u64 toc_mrpcim_pointer
Definition: vxge_reg.h:677
enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
Definition: vxge_config.c:179
enum vxge_hw_status __vxge_hw_vpath_card_info_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
Definition: vxge_config.c:936
struct vxge_hw_device_hw_info - Device information @host_type: Host Type @func_id: Function Id @vpath...
Definition: vxge_config.h:427
#define u32
Definition: vga.h:21
#define VXGE_HW_MAX_VIRTUAL_PATHS
Definition: vxge_traffic.h:30
uint64_t u64
Definition: stdint.h:25
#define __iomem
Definition: igbvf_osdep.h:46
#define VXGE_HW_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(bits)
Definition: vxge_reg.h:47
u64 toc_common_pointer
Definition: vxge_reg.h:669
u64 xgmac_gen_fw_memo_mask
Definition: vxge_reg.h:1906
uint8_t status
Status.
Definition: ena.h:16
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
u32 __vxge_hw_vpath_func_id_get(struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
Definition: vxge_config.c:906
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
static u32 __vxge_hw_device_access_rights_get(u32 host_type, u32 func_id)
Definition: vxge_config.c:312
#define VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM
Definition: vxge_config.h:494
enum vxge_hw_status __vxge_hw_vpath_addr_get(struct vxge_hw_vpath_reg *vpath_reg, u8(macaddr)[ETH_ALEN], u8(macaddr_mask)[ETH_ALEN])
Definition: vxge_config.c:1149
enum vxge_hw_status __vxge_hw_vpath_fw_ver_get(struct vxge_hw_vpath_reg __iomem *vpath_reg, struct vxge_hw_device_hw_info *hw_info)
Definition: vxge_config.c:1057
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
uint32_t u32
Definition: stdint.h:23
void * memset(void *dest, int character, size_t len) __nonnull

References __iomem, __vxge_hw_device_access_rights_get(), __vxge_hw_device_get_legacy_reg(), __vxge_hw_device_toc_get(), __vxge_hw_device_vpath_reset_in_prog_check(), __vxge_hw_vpath_addr_get(), __vxge_hw_vpath_card_info_get(), __vxge_hw_vpath_func_id_get(), __vxge_hw_vpath_fw_ver_get(), vxge_hw_device_hw_info::func_id, vxge_hw_device_hw_info::host_type, vxge_hw_common_reg::host_type_assignments, memset(), NULL, readq(), status, vxge_hw_toc_reg::toc_common_pointer, vxge_hw_toc_reg::toc_mrpcim_pointer, vxge_hw_toc_reg::toc_vpath_pointer, vxge_hw_toc_reg::toc_vpmgmt_pointer, u32, vxge_hw_common_reg::vpath_assignments, vxge_hw_device_hw_info::vpath_mask, vxge_hw_common_reg::vpath_rst_in_prog, VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM, VXGE_HW_ERR_CRITICAL, VXGE_HW_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS, VXGE_HW_MAX_VIRTUAL_PATHS, VXGE_HW_OK, vxge_mBIT, vxge_trace, wmb(), writeq(), and vxge_hw_mrpcim_reg::xgmac_gen_fw_memo_mask.

Referenced by vxge_probe().

◆ vxge_hw_device_initialize()

enum vxge_hw_status vxge_hw_device_initialize ( struct __vxge_hw_device **  devh,
void *  bar0,
struct pci_device pdev,
u8  titan1 
)

Definition at line 496 of file vxge_config.c.

501 {
502  struct __vxge_hw_device *hldev = NULL;
504 
505  vxge_trace();
506 
507  hldev = (struct __vxge_hw_device *)
508  zalloc(sizeof(struct __vxge_hw_device));
509  if (hldev == NULL) {
510  vxge_debug(VXGE_ERR, "hldev allocation failed\n");
512  goto exit;
513  }
514 
515  hldev->magic = VXGE_HW_DEVICE_MAGIC;
516 
517  hldev->bar0 = bar0;
518  hldev->pdev = pdev;
519  hldev->titan1 = titan1;
520 
522 
524  if (status != VXGE_HW_OK) {
525  vxge_debug(VXGE_ERR, "%s:%d __vxge_hw_device_reg_addr_get "
526  "failed\n", __func__, __LINE__);
528  goto exit;
529  }
530 
532 
533  *devh = hldev;
534 exit:
535  return status;
536 }
void __vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:348
#define vxge_debug(mask, fmt...)
Definition: vxge_config.h:762
enum vxge_hw_status __vxge_hw_device_reg_addr_get(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:242
void __vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:127
void * zalloc(size_t size)
Allocate cleared memory.
Definition: malloc.c:661
uint8_t status
Status.
Definition: ena.h:16
void __iomem * bar0
Definition: vxge_config.h:481
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct pci_device * pdev
Definition: vxge_config.h:482
void vxge_hw_device_terminate(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:543
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define VXGE_HW_DEVICE_MAGIC
Definition: vxge_config.h:479
#define VXGE_ERR
Definition: vxge_config.h:54

References __vxge_hw_device_host_info_get(), __vxge_hw_device_pci_e_init(), __vxge_hw_device_reg_addr_get(), __vxge_hw_device::bar0, __vxge_hw_device::magic, NULL, __vxge_hw_device::pdev, status, __vxge_hw_device::titan1, vxge_debug, VXGE_ERR, VXGE_HW_DEVICE_MAGIC, vxge_hw_device_terminate(), VXGE_HW_ERR_OUT_OF_MEMORY, VXGE_HW_OK, vxge_trace, and zalloc().

Referenced by vxge_probe().

◆ vxge_hw_device_terminate()

void vxge_hw_device_terminate ( struct __vxge_hw_device hldev)

Definition at line 543 of file vxge_config.c.

544 {
545  vxge_trace();
546 
547  assert(hldev->magic == VXGE_HW_DEVICE_MAGIC);
548 
549  hldev->magic = VXGE_HW_DEVICE_DEAD;
550  free(hldev);
551 }
#define VXGE_HW_DEVICE_DEAD
Definition: vxge_config.h:480
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static void(* free)(struct refcnt *refcnt))
Definition: refcnt.h:54
#define vxge_trace()
Definition: vxge_config.h:767
#define VXGE_HW_DEVICE_MAGIC
Definition: vxge_config.h:479

References assert(), free, __vxge_hw_device::magic, VXGE_HW_DEVICE_DEAD, VXGE_HW_DEVICE_MAGIC, and vxge_trace.

Referenced by vxge_hw_device_initialize(), vxge_probe(), and vxge_remove().

◆ vxge_hw_ring_replenish()

enum vxge_hw_status vxge_hw_ring_replenish ( struct __vxge_hw_ring ring)

Definition at line 558 of file vxge_config.c.

559 {
560  struct __vxge_hw_device *hldev;
561  struct vxge_hw_ring_rxd_1 *rxd;
563  u8 offset = 0;
564  struct __vxge_hw_ring_block *block;
565  u8 i, iob_off;
566 
567  vxge_trace();
568 
569  hldev = ring->vpathh->hldev;
570  /*
571  * We allocate all the dma buffers first and then share the
572  * these buffers among the all rx descriptors in the block.
573  */
574  for (i = 0; i < ARRAY_SIZE(ring->iobuf); i++) {
575  ring->iobuf[i] = alloc_iob(VXGE_LL_MAX_FRAME_SIZE(hldev->vdev));
576  if (!ring->iobuf[i]) {
577  while (i) {
578  free_iob(ring->iobuf[--i]);
579  ring->iobuf[i] = NULL;
580  }
582  goto iobuf_err;
583  }
584  }
585 
587 
588  rxd = &ring->rxdl->rxd[offset];
590  iob_off = VXGE_HW_RING_BUF_PER_BLOCK;
591  else
592  iob_off = offset % ring->buf_per_block;
593 
594  rxd->control_0 = rxd->control_1 = 0;
595  vxge_hw_ring_rxd_1b_set(rxd, ring->iobuf[iob_off],
596  VXGE_LL_MAX_FRAME_SIZE(hldev->vdev));
597 
598  vxge_hw_ring_rxd_post(ring, rxd);
599  }
600  /* linking the block to itself as we use only one rx block*/
601  block = ring->rxdl;
602  block->reserved_2_pNext_RxD_block = (unsigned long) block;
603  block->pNext_RxD_Blk_physical = (u64)virt_to_bus(block);
604 
605  ring->rxd_offset = 0;
606 iobuf_err:
607  return status;
608 }
struct __vxge_hw_virtualpath * vpathh
Definition: vxge_config.h:379
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition: iobuf.c:152
void vxge_hw_ring_rxd_post(struct __vxge_hw_ring *ring __unused, struct vxge_hw_ring_rxd_1 *rxdp)
vxge_hw_ring_rxd_post - Post descriptor on the ring.
Definition: vxge_traffic.c:319
struct io_buffer * alloc_iob(size_t len)
Allocate I/O buffer.
Definition: iobuf.c:130
struct vxgedev * vdev
Definition: vxge_config.h:484
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
struct io_buffer * iobuf[VXGE_HW_RING_BUF_PER_BLOCK+1]
Definition: vxge_config.h:378
uint64_t u64
Definition: stdint.h:25
struct __vxge_hw_ring_block * rxdl
Definition: vxge_config.h:370
#define VXGE_LL_MAX_FRAME_SIZE(dev)
Definition: vxge_main.h:147
#define ARRAY_SIZE(x)
Definition: efx_common.h:43
uint8_t status
Status.
Definition: ena.h:16
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
uint8_t block[3][8]
DES-encrypted blocks.
Definition: mschapv2.h:12
static void vxge_hw_ring_rxd_1b_set(struct vxge_hw_ring_rxd_1 *rxdp, struct io_buffer *iob, u32 size)
vxge_hw_ring_rxd_1b_set - Prepare 1-buffer-mode descriptor.
Definition: vxge_config.h:597
#define VXGE_HW_RING_BUF_PER_BLOCK
Definition: vxge_config.h:371
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
uint16_t offset
Offset to command line.
Definition: bzimage.h:8
struct vxge_hw_ring_rxd_1 rxd[VXGE_HW_MAX_RXDS_PER_BLOCK_1]
Definition: vxge_config.h:342
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
struct vxge_hw_ring_rxd_1 - One buffer mode RxD for ring
Definition: vxge_config.h:154
uint8_t u8
Definition: stdint.h:19
#define VXGE_HW_MAX_RXDS_PER_BLOCK_1
Definition: vxge_config.h:341
#define rxd
Definition: davicom.c:146

References alloc_iob(), ARRAY_SIZE, block, __vxge_hw_ring::buf_per_block, free_iob(), __vxge_hw_virtualpath::hldev, __vxge_hw_ring::iobuf, NULL, offset, rxd, __vxge_hw_ring_block::rxd, __vxge_hw_ring::rxd_offset, __vxge_hw_ring::rxdl, status, __vxge_hw_device::vdev, virt_to_bus(), __vxge_hw_ring::vpathh, VXGE_HW_ERR_OUT_OF_MEMORY, VXGE_HW_MAX_RXDS_PER_BLOCK_1, VXGE_HW_OK, VXGE_HW_RING_BUF_PER_BLOCK, vxge_hw_ring_rxd_1b_set(), vxge_hw_ring_rxd_post(), VXGE_LL_MAX_FRAME_SIZE, and vxge_trace.

Referenced by __vxge_hw_ring_create().

◆ __vxge_hw_ring_create()

enum vxge_hw_status __vxge_hw_ring_create ( struct __vxge_hw_virtualpath vpath,
struct __vxge_hw_ring ring 
)

Definition at line 616 of file vxge_config.c.

618 {
620  struct __vxge_hw_device *hldev;
621  u32 vp_id;
622 
623  vxge_trace();
624 
625  hldev = vpath->hldev;
626  vp_id = vpath->vp_id;
627 
628  ring->rxdl = malloc_phys(sizeof(struct __vxge_hw_ring_block),
629  sizeof(struct __vxge_hw_ring_block));
630  if (!ring->rxdl) {
631  vxge_debug(VXGE_ERR, "%s:%d malloc_phys error\n",
632  __func__, __LINE__);
634  goto exit;
635  }
636  ring->rxd_offset = 0;
637  ring->vpathh = vpath;
640  ring->vp_id = vp_id;
641  ring->vp_reg = vpath->vp_reg;
642  ring->common_reg = hldev->common_reg;
643 
645 
647  if (status != VXGE_HW_OK) {
648  __vxge_hw_ring_delete(ring);
649  goto exit;
650  }
651 exit:
652  return status;
653 }
struct __vxge_hw_virtualpath * vpathh
Definition: vxge_config.h:379
enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_ring *ring)
Definition: vxge_config.c:659
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
#define vxge_debug(mask, fmt...)
Definition: vxge_config.h:762
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:361
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:362
struct __vxge_hw_ring_block * rxdl
Definition: vxge_config.h:370
uint8_t status
Status.
Definition: ena.h:16
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define VXGE_HW_RING_BUF_PER_BLOCK
Definition: vxge_config.h:371
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
#define VXGE_HW_RING_RXD_QWORD_LIMIT
Definition: vxge_config.h:367
enum vxge_hw_status vxge_hw_ring_replenish(struct __vxge_hw_ring *ring)
Definition: vxge_config.c:558
#define VXGE_HW_RING_RX_POLL_WEIGHT
Definition: vxge_config.h:375
uint32_t u32
Definition: stdint.h:23
#define VXGE_ERR
Definition: vxge_config.h:54
void * malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition: malloc.c:706

References __vxge_hw_ring_delete(), __vxge_hw_ring::buf_per_block, __vxge_hw_ring::common_reg, __vxge_hw_device::common_reg, __vxge_hw_virtualpath::hldev, malloc_phys(), __vxge_hw_ring::rx_poll_weight, __vxge_hw_ring::rxd_offset, __vxge_hw_ring::rxd_qword_limit, __vxge_hw_ring::rxdl, status, __vxge_hw_ring::vp_id, __vxge_hw_virtualpath::vp_id, __vxge_hw_ring::vp_reg, __vxge_hw_virtualpath::vp_reg, __vxge_hw_ring::vpathh, vxge_debug, VXGE_ERR, VXGE_HW_ERR_OUT_OF_MEMORY, VXGE_HW_OK, VXGE_HW_RING_BUF_PER_BLOCK, vxge_hw_ring_replenish(), VXGE_HW_RING_RX_POLL_WEIGHT, VXGE_HW_RING_RXD_QWORD_LIMIT, and vxge_trace.

Referenced by vxge_hw_vpath_open().

◆ __vxge_hw_ring_delete()

enum vxge_hw_status __vxge_hw_ring_delete ( struct __vxge_hw_ring ring)

Definition at line 659 of file vxge_config.c.

660 {
661  u8 i;
662 
663  vxge_trace();
664 
665  for (i = 0; (i < ARRAY_SIZE(ring->iobuf)) && ring->iobuf[i]; i++) {
666  free_iob(ring->iobuf[i]);
667  ring->iobuf[i] = NULL;
668  }
669 
670  if (ring->rxdl) {
671  free_phys(ring->rxdl, sizeof(struct __vxge_hw_ring_block));
672  ring->rxdl = NULL;
673  }
674  ring->rxd_offset = 0;
675 
676  return VXGE_HW_OK;
677 }
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition: iobuf.c:152
struct io_buffer * iobuf[VXGE_HW_RING_BUF_PER_BLOCK+1]
Definition: vxge_config.h:378
struct __vxge_hw_ring_block * rxdl
Definition: vxge_config.h:370
#define ARRAY_SIZE(x)
Definition: efx_common.h:43
void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys()
Definition: malloc.c:722
#define vxge_trace()
Definition: vxge_config.h:767
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
uint8_t u8
Definition: stdint.h:19

References ARRAY_SIZE, free_iob(), free_phys(), __vxge_hw_ring::iobuf, NULL, __vxge_hw_ring::rxd_offset, __vxge_hw_ring::rxdl, VXGE_HW_OK, and vxge_trace.

Referenced by __vxge_hw_ring_create(), and vxge_hw_vpath_close().

◆ __vxge_hw_legacy_swapper_set()

enum vxge_hw_status __vxge_hw_legacy_swapper_set ( struct vxge_hw_legacy_reg __iomem legacy_reg)

Definition at line 684 of file vxge_config.c.

685 {
686  u64 val64;
688 
689  vxge_trace();
690 
691  val64 = readq(&legacy_reg->toc_swapper_fb);
692 
693  wmb();
694 
695  switch (val64) {
696 
698  return status;
699 
709  break;
710 
716  break;
717 
723  break;
724  }
725 
726  wmb();
727 
728  val64 = readq(&legacy_reg->toc_swapper_fb);
729  if (val64 != VXGE_HW_SWAPPER_INITIAL_VALUE)
731 
732  return status;
733 }
wmb()
struct vxge_hw_legacy_reg * legacy_reg
Definition: vxge_config.h:495
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_SWAPPER_BYTE_SWAPPED
Definition: vxge_reg.h:623
#define VXGE_HW_SWAPPER_BIT_FLIPPED
Definition: vxge_reg.h:624
#define VXGE_HW_SWAPPER_WRITE_BIT_FLAP_ENABLE
Definition: vxge_reg.h:636
#define VXGE_HW_SWAPPER_READ_BYTE_SWAP_ENABLE
Definition: vxge_reg.h:627
#define VXGE_HW_SWAPPER_READ_BIT_FLAP_ENABLE
Definition: vxge_reg.h:630
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_SWAPPER_INITIAL_VALUE
Definition: vxge_reg.h:622
uint8_t status
Status.
Definition: ena.h:16
#define VXGE_HW_SWAPPER_WRITE_BYTE_SWAP_ENABLE
Definition: vxge_reg.h:633
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_SWAPPER_BYTE_SWAPPED_BIT_FLIPPED
Definition: vxge_reg.h:625
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __vxge_hw_device::legacy_reg, vxge_hw_legacy_reg::pifm_rd_flip_en, vxge_hw_legacy_reg::pifm_rd_swap_en, vxge_hw_legacy_reg::pifm_wr_flip_en, vxge_hw_legacy_reg::pifm_wr_swap_en, readq(), status, vxge_hw_legacy_reg::toc_swapper_fb, VXGE_HW_ERR_SWAPPER_CTRL, VXGE_HW_OK, VXGE_HW_SWAPPER_BIT_FLIPPED, VXGE_HW_SWAPPER_BYTE_SWAPPED, VXGE_HW_SWAPPER_BYTE_SWAPPED_BIT_FLIPPED, VXGE_HW_SWAPPER_INITIAL_VALUE, VXGE_HW_SWAPPER_READ_BIT_FLAP_ENABLE, VXGE_HW_SWAPPER_READ_BYTE_SWAP_ENABLE, VXGE_HW_SWAPPER_WRITE_BIT_FLAP_ENABLE, VXGE_HW_SWAPPER_WRITE_BYTE_SWAP_ENABLE, vxge_trace, wmb(), and writeq().

Referenced by __vxge_hw_device_get_legacy_reg(), and __vxge_hw_vpath_initialize().

◆ __vxge_hw_vpath_swapper_set()

enum vxge_hw_status __vxge_hw_vpath_swapper_set ( struct vxge_hw_vpath_reg __iomem vpath_reg)

Definition at line 740 of file vxge_config.c.

741 {
742  vxge_trace();
743 
744 #if (__BYTE_ORDER != __BIG_ENDIAN)
745  u64 val64;
746 
748  wmb();
751  wmb();
752 #endif
753  return VXGE_HW_OK;
754 }
wmb()
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_VPATH_GENERAL_CFG1_CTL_BYTE_SWAPEN
Definition: vxge_reg.h:558
uint64_t u64
Definition: stdint.h:25
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
#define vxge_trace()
Definition: vxge_config.h:767
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References readq(), vxge_hw_vpath_reg::vpath_general_cfg1, __vxge_hw_device::vpath_reg, VXGE_HW_OK, VXGE_HW_VPATH_GENERAL_CFG1_CTL_BYTE_SWAPEN, vxge_trace, wmb(), and writeq().

Referenced by __vxge_hw_vpath_initialize().

◆ __vxge_hw_kdfc_swapper_set()

enum vxge_hw_status __vxge_hw_kdfc_swapper_set ( struct vxge_hw_legacy_reg __iomem legacy_reg,
struct vxge_hw_vpath_reg __iomem vpath_reg 
)

Definition at line 761 of file vxge_config.c.

764 {
765  u64 val64;
766 
767  vxge_trace();
768 
769  val64 = readq(&legacy_reg->pifm_wr_swap_en);
770 
772  val64 = readq(&vpath_reg->kdfcctl_cfg0);
773  wmb();
774 
778 
779  writeq(val64, &vpath_reg->kdfcctl_cfg0);
780  wmb();
781  }
782 
783  return VXGE_HW_OK;
784 }
wmb()
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO2
Definition: vxge_reg.h:573
struct vxge_hw_legacy_reg * legacy_reg
Definition: vxge_config.h:495
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO1
Definition: vxge_reg.h:572
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
uint64_t u64
Definition: stdint.h:25
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO0
Definition: vxge_reg.h:571
#define VXGE_HW_SWAPPER_WRITE_BYTE_SWAP_ENABLE
Definition: vxge_reg.h:633
#define vxge_trace()
Definition: vxge_config.h:767
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References vxge_hw_vpath_reg::kdfcctl_cfg0, __vxge_hw_device::legacy_reg, vxge_hw_legacy_reg::pifm_wr_swap_en, readq(), __vxge_hw_device::vpath_reg, VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO0, VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO1, VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO2, VXGE_HW_OK, VXGE_HW_SWAPPER_WRITE_BYTE_SWAP_ENABLE, vxge_trace, wmb(), and writeq().

Referenced by __vxge_hw_vpath_kdfc_configure().

◆ vxge_hw_vpath_strip_fcs_check()

enum vxge_hw_status vxge_hw_vpath_strip_fcs_check ( struct __vxge_hw_device hldev,
u64  vpath_mask 
)

Definition at line 790 of file vxge_config.c.

791 {
792  struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg;
794  int i = 0, j = 0;
795 
796  for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
797  if (!((vpath_mask) & vxge_mBIT(i)))
798  continue;
799  vpmgmt_reg = hldev->vpmgmt_reg[i];
800  for (j = 0; j < VXGE_HW_MAC_MAX_MAC_PORT_ID; j++) {
801  if (readq(&vpmgmt_reg->rxmac_cfg0_port_vpmgmt_clone[j])
803  return VXGE_HW_FAIL;
804  }
805  }
806  return status;
807 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_MAC_MAX_MAC_PORT_ID
Definition: vxge_traffic.h:34
u64 rxmac_cfg0_port_vpmgmt_clone[3]
Definition: vxge_reg.h:3916
#define VXGE_HW_MAX_VIRTUAL_PATHS
Definition: vxge_traffic.h:30
#define __iomem
Definition: igbvf_osdep.h:46
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
Definition: vxge_config.h:501
uint8_t status
Status.
Definition: ena.h:16
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
#define VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_STRIP_FCS
Definition: vxge_reg.h:96
vxge_hw_status
Definition: vxge_config.h:70

References __iomem, readq(), vxge_hw_vpmgmt_reg::rxmac_cfg0_port_vpmgmt_clone, status, __vxge_hw_device::vpmgmt_reg, VXGE_HW_FAIL, VXGE_HW_MAC_MAX_MAC_PORT_ID, VXGE_HW_MAX_VIRTUAL_PATHS, VXGE_HW_OK, VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_STRIP_FCS, and vxge_mBIT.

Referenced by vxge_probe().

◆ __vxge_hw_fifo_create()

enum vxge_hw_status __vxge_hw_fifo_create ( struct __vxge_hw_virtualpath vpath,
struct __vxge_hw_fifo fifo 
)

Definition at line 814 of file vxge_config.c.

816 {
818 
819  vxge_trace();
820 
821  fifo->vpathh = vpath;
823  fifo->hw_offset = fifo->sw_offset = 0;
824  fifo->nofl_db = vpath->nofl_db;
825  fifo->vp_id = vpath->vp_id;
826  fifo->vp_reg = vpath->vp_reg;
827  fifo->tx_intr_num = (vpath->vp_id * VXGE_HW_MAX_INTR_PER_VP)
829 
830  fifo->txdl = malloc_phys(sizeof(struct vxge_hw_fifo_txd)
831  * fifo->depth, fifo->depth);
832  if (!fifo->txdl) {
833  vxge_debug(VXGE_ERR, "%s:%d malloc_phys error\n",
834  __func__, __LINE__);
836  }
837  memset(fifo->txdl, 0, sizeof(struct vxge_hw_fifo_txd) * fifo->depth);
838  return status;
839 }
#define VXGE_HW_FIFO_TXD_DEPTH
Definition: vxge_config.h:329
struct __vxge_hw_virtualpath * vpathh
Definition: vxge_config.h:334
struct vxge_hw_fifo_txd - Transmit Descriptor
Definition: vxge_config.h:212
struct __vxge_hw_non_offload_db_wrapper * nofl_db
Definition: vxge_config.h:324
#define vxge_debug(mask, fmt...)
Definition: vxge_config.h:762
#define VXGE_HW_MAX_INTR_PER_VP
Definition: vxge_traffic.h:129
#define VXGE_HW_VPATH_INTR_TX
Definition: vxge_traffic.h:130
uint8_t status
Status.
Definition: ena.h:16
struct __vxge_hw_non_offload_db_wrapper * nofl_db
Definition: vxge_config.h:399
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:323
struct vxge_hw_fifo_txd * txdl
Definition: vxge_config.h:328
#define VXGE_ERR
Definition: vxge_config.h:54
void * malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition: malloc.c:706
void * memset(void *dest, int character, size_t len) __nonnull

References __vxge_hw_fifo::depth, __vxge_hw_fifo::hw_offset, malloc_phys(), memset(), __vxge_hw_fifo::nofl_db, __vxge_hw_virtualpath::nofl_db, status, __vxge_hw_fifo::sw_offset, __vxge_hw_fifo::tx_intr_num, __vxge_hw_fifo::txdl, __vxge_hw_fifo::vp_id, __vxge_hw_virtualpath::vp_id, __vxge_hw_fifo::vp_reg, __vxge_hw_virtualpath::vp_reg, __vxge_hw_fifo::vpathh, vxge_debug, VXGE_ERR, VXGE_HW_ERR_OUT_OF_MEMORY, VXGE_HW_FIFO_TXD_DEPTH, VXGE_HW_MAX_INTR_PER_VP, VXGE_HW_OK, VXGE_HW_VPATH_INTR_TX, and vxge_trace.

Referenced by vxge_hw_vpath_open().

◆ __vxge_hw_fifo_delete()

enum vxge_hw_status __vxge_hw_fifo_delete ( struct __vxge_hw_fifo fifo)

Definition at line 845 of file vxge_config.c.

846 {
847  vxge_trace();
848 
849  if (fifo->txdl)
850  free_phys(fifo->txdl,
851  sizeof(struct vxge_hw_fifo_txd) * fifo->depth);
852 
853  fifo->txdl = NULL;
854  fifo->hw_offset = fifo->sw_offset = 0;
855 
856  return VXGE_HW_OK;
857 }
struct vxge_hw_fifo_txd - Transmit Descriptor
Definition: vxge_config.h:212
void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys()
Definition: malloc.c:722
#define vxge_trace()
Definition: vxge_config.h:767
struct vxge_hw_fifo_txd * txdl
Definition: vxge_config.h:328
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321

References __vxge_hw_fifo::depth, free_phys(), __vxge_hw_fifo::hw_offset, NULL, __vxge_hw_fifo::sw_offset, __vxge_hw_fifo::txdl, VXGE_HW_OK, and vxge_trace.

Referenced by vxge_hw_vpath_close(), and vxge_hw_vpath_open().

◆ __vxge_hw_vpath_pci_read()

enum vxge_hw_status __vxge_hw_vpath_pci_read ( struct __vxge_hw_virtualpath vpath,
u32  phy_func_0,
u32  offset,
u32 val 
)

Definition at line 865 of file vxge_config.c.

867 {
868  u64 val64;
870  struct vxge_hw_vpath_reg __iomem *vp_reg = vpath->vp_reg;
871 
873 
874  if (phy_func_0)
876 
877  writeq(val64, &vp_reg->pci_config_access_cfg1);
878  wmb();
880  &vp_reg->pci_config_access_cfg2);
881  wmb();
882 
884  &vp_reg->pci_config_access_cfg2,
886 
887  if (status != VXGE_HW_OK)
888  goto exit;
889 
890  val64 = readq(&vp_reg->pci_config_access_status);
891 
894  *val = 0;
895  } else
896  *val = (u32)vxge_bVALn(val64, 32, 32);
897 exit:
898  return status;
899 }
wmb()
u64 pci_config_access_status
Definition: vxge_reg.h:4653
void __asmcall int val
Definition: setjmp.h:12
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_INTR_MASK_ALL
Definition: vxge_traffic.h:29
#define u32
Definition: vga.h:21
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
#define vxge_bVALn(bits, loc, n)
Definition: vxge_reg.h:35
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG2_REQ
Definition: vxge_reg.h:630
#define __iomem
Definition: igbvf_osdep.h:46
u64 pci_config_access_cfg1
Definition: vxge_reg.h:4648
uint8_t status
Status.
Definition: ena.h:16
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG1_SEL_FUNC0
Definition: vxge_reg.h:628
vxge_hw_status
Definition: vxge_config.h:70
uint16_t offset
Offset to command line.
Definition: bzimage.h:8
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG1_ADDRESS(val)
Definition: vxge_reg.h:627
#define VXGE_HW_PCI_CONFIG_ACCESS_STATUS_ACCESS_ERR
Definition: vxge_reg.h:632
u64 pci_config_access_cfg2
Definition: vxge_reg.h:4651
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
Definition: vxge_config.c:148

References __iomem, __vxge_hw_device_register_poll(), offset, vxge_hw_vpath_reg::pci_config_access_cfg1, vxge_hw_vpath_reg::pci_config_access_cfg2, vxge_hw_vpath_reg::pci_config_access_status, readq(), status, u32, val, __vxge_hw_virtualpath::vp_reg, vxge_bVALn, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_FAIL, VXGE_HW_INTR_MASK_ALL, VXGE_HW_OK, VXGE_HW_PCI_CONFIG_ACCESS_CFG1_ADDRESS, VXGE_HW_PCI_CONFIG_ACCESS_CFG1_SEL_FUNC0, VXGE_HW_PCI_CONFIG_ACCESS_CFG2_REQ, VXGE_HW_PCI_CONFIG_ACCESS_STATUS_ACCESS_ERR, wmb(), and writeq().

Referenced by __vxge_hw_vpath_initialize().

◆ __vxge_hw_vpath_func_id_get()

u32 __vxge_hw_vpath_func_id_get ( struct vxge_hw_vpmgmt_reg __iomem vpmgmt_reg)

Definition at line 906 of file vxge_config.c.

907 {
908  u64 val64;
909 
910  val64 = readq(&vpmgmt_reg->vpath_to_func_map_cfg1);
911 
912  return
914 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_VPATH_TO_FUNC_MAP_CFG1_GET_VPATH_TO_FUNC_MAP_CFG1(bits)
Definition: vxge_reg.h:45
uint32_t u32
Definition: stdint.h:23

References readq(), and VXGE_HW_VPATH_TO_FUNC_MAP_CFG1_GET_VPATH_TO_FUNC_MAP_CFG1.

Referenced by __vxge_hw_device_host_info_get(), and vxge_hw_device_hw_info_get().

◆ __vxge_hw_read_rts_ds()

static void __vxge_hw_read_rts_ds ( struct vxge_hw_vpath_reg __iomem vpath_reg,
u64  dta_struct_sel 
)
inlinestatic

Definition at line 920 of file vxge_config.c.

922 {
923  writeq(0, &vpath_reg->rts_access_steer_ctrl);
924  wmb();
925  writeq(dta_struct_sel, &vpath_reg->rts_access_steer_data0);
926  writeq(0, &vpath_reg->rts_access_steer_data1);
927  wmb();
928  return;
929 }
wmb()
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References wmb(), and writeq().

Referenced by __vxge_hw_vpath_card_info_get().

◆ __vxge_hw_vpath_card_info_get()

enum vxge_hw_status __vxge_hw_vpath_card_info_get ( struct vxge_hw_vpath_reg __iomem vpath_reg,
struct vxge_hw_device_hw_info hw_info 
)

Definition at line 936 of file vxge_config.c.

939 {
940  u32 i, j;
941  u64 val64;
942  u64 data1 = 0ULL;
943  u64 data2 = 0ULL;
945  u8 *serial_number = hw_info->serial_number;
946  u8 *part_number = hw_info->part_number;
947  u8 *product_desc = hw_info->product_desc;
948 
949  __vxge_hw_read_rts_ds(vpath_reg,
951 
958 
960  &vpath_reg->rts_access_steer_ctrl,
963 
964  if (status != VXGE_HW_OK)
965  return status;
966 
967  val64 = readq(&vpath_reg->rts_access_steer_ctrl);
968 
970  data1 = readq(&vpath_reg->rts_access_steer_data0);
971  ((u64 *)serial_number)[0] = be64_to_cpu(data1);
972 
973  data2 = readq(&vpath_reg->rts_access_steer_data1);
974  ((u64 *)serial_number)[1] = be64_to_cpu(data2);
975  status = VXGE_HW_OK;
976  } else
977  *serial_number = 0;
978 
979  __vxge_hw_read_rts_ds(vpath_reg,
981 
988 
990  &vpath_reg->rts_access_steer_ctrl,
993 
994  if (status != VXGE_HW_OK)
995  return status;
996 
997  val64 = readq(&vpath_reg->rts_access_steer_ctrl);
998 
1000 
1001  data1 = readq(&vpath_reg->rts_access_steer_data0);
1002  ((u64 *)part_number)[0] = be64_to_cpu(data1);
1003 
1004  data2 = readq(&vpath_reg->rts_access_steer_data1);
1005  ((u64 *)part_number)[1] = be64_to_cpu(data2);
1006 
1007  status = VXGE_HW_OK;
1008 
1009  } else
1010  *part_number = 0;
1011 
1012  j = 0;
1013 
1016 
1017  __vxge_hw_read_rts_ds(vpath_reg, i);
1018 
1025 
1027  &vpath_reg->rts_access_steer_ctrl,
1030 
1031  if (status != VXGE_HW_OK)
1032  return status;
1033 
1034  val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1035 
1037 
1038  data1 = readq(&vpath_reg->rts_access_steer_data0);
1039  ((u64 *)product_desc)[j++] = be64_to_cpu(data1);
1040 
1041  data2 = readq(&vpath_reg->rts_access_steer_data1);
1042  ((u64 *)product_desc)[j++] = be64_to_cpu(data2);
1043 
1044  status = VXGE_HW_OK;
1045  } else
1046  *product_desc = 0;
1047  }
1048 
1049  return status;
1050 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET(val)
Definition: vxge_reg.h:189
u32 data1
Definition: ar9003_mac.h:71
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS
Definition: vxge_reg.h:188
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE
Definition: vxge_reg.h:185
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_0
Definition: vxge_reg.h:421
u8 serial_number[VXGE_HW_INFO_LEN]
Definition: vxge_config.h:460
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_MEMO_ENTRY
Definition: vxge_reg.h:188
#define be64_to_cpu(value)
Definition: byteswap.h:117
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_SERIAL_NUMBER
Definition: vxge_reg.h:418
u8 product_desc[VXGE_HW_INFO_LEN]
Definition: vxge_config.h:462
static enum vxge_hw_status __vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr, u64 mask, u32 max_millis)
Definition: vxge_config.h:714
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_3
Definition: vxge_reg.h:424
uint8_t status
Status.
Definition: ena.h:16
u32 data2
Definition: ar9003_mac.h:73
u8 part_number[VXGE_HW_INFO_LEN]
Definition: vxge_config.h:461
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO
Definition: vxge_reg.h:204
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(val)
Definition: vxge_reg.h:183
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PART_NUMBER
Definition: vxge_reg.h:417
static void __vxge_hw_read_rts_ds(struct vxge_hw_vpath_reg __iomem *vpath_reg, u64 dta_struct_sel)
Definition: vxge_config.c:920
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val)
Definition: vxge_reg.h:184
uint8_t u8
Definition: stdint.h:19
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_pio_mem_write64(), __vxge_hw_read_rts_ds(), be64_to_cpu, data1, data2, vxge_hw_device_hw_info::part_number, vxge_hw_device_hw_info::product_desc, readq(), vxge_hw_device_hw_info::serial_number, status, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_OK, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_MEMO_ENTRY, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO, VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET, VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS, VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE, VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_0, VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_3, VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PART_NUMBER, and VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_SERIAL_NUMBER.

Referenced by vxge_hw_device_hw_info_get().

◆ __vxge_hw_vpath_fw_ver_get()

enum vxge_hw_status __vxge_hw_vpath_fw_ver_get ( struct vxge_hw_vpath_reg __iomem vpath_reg,
struct vxge_hw_device_hw_info hw_info 
)

Definition at line 1057 of file vxge_config.c.

1060 {
1061  u64 val64;
1062  u64 data1 = 0ULL;
1063  u64 data2 = 0ULL;
1064  struct vxge_hw_device_version *fw_version = &hw_info->fw_version;
1065  struct vxge_hw_device_date *fw_date = &hw_info->fw_date;
1066  struct vxge_hw_device_version *flash_version = &hw_info->flash_version;
1067  struct vxge_hw_device_date *flash_date = &hw_info->flash_date;
1069 
1076 
1078  &vpath_reg->rts_access_steer_ctrl,
1081 
1082  if (status != VXGE_HW_OK)
1083  goto exit;
1084 
1085  val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1086 
1088 
1089  data1 = readq(&vpath_reg->rts_access_steer_data0);
1090  data2 = readq(&vpath_reg->rts_access_steer_data1);
1091 
1092  fw_date->day =
1094  data1);
1095  fw_date->month =
1097  data1);
1098  fw_date->year =
1100  data1);
1101 
1102  snprintf(fw_date->date, VXGE_HW_FW_STRLEN, "%d/%d/%d",
1103  fw_date->month, fw_date->day, fw_date->year);
1104 
1105  fw_version->major =
1107  fw_version->minor =
1109  fw_version->build =
1111 
1112  snprintf(fw_version->version, VXGE_HW_FW_STRLEN, "%d.%d.%d",
1113  fw_version->major, fw_version->minor, fw_version->build);
1114 
1115  flash_date->day =
1117  flash_date->month =
1119  flash_date->year =
1121 
1122  snprintf(flash_date->date, VXGE_HW_FW_STRLEN, "%d/%d/%d",
1123  flash_date->month, flash_date->day, flash_date->year);
1124 
1125  flash_version->major =
1127  flash_version->minor =
1129  flash_version->build =
1131 
1132  snprintf(flash_version->version, VXGE_HW_FW_STRLEN, "%d.%d.%d",
1133  flash_version->major, flash_version->minor,
1134  flash_version->build);
1135 
1136  status = VXGE_HW_OK;
1137 
1138  } else
1139  status = VXGE_HW_FAIL;
1140 exit:
1141  return status;
1142 }
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_BUILD(bits)
Definition: vxge_reg.h:479
struct vxge_hw_device_date fw_date
Definition: vxge_config.h:457
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_DAY(bits)
Definition: vxge_reg.h:462
struct vxge_hw_device_date flash_date
Definition: vxge_config.h:459
struct vxge_hw_device_version fw_version
Definition: vxge_config.h:456
char date[VXGE_HW_FW_STRLEN]
Definition: vxge_config.h:262
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MAJOR(bits)
Definition: vxge_reg.h:451
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_FW_STRLEN
struct vxge_hw_device_date - Date Format @day: Day @month: Month @year: Year
Definition: vxge_config.h:257
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET(val)
Definition: vxge_reg.h:189
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MINOR(bits)
Definition: vxge_reg.h:454
u32 data1
Definition: ar9003_mac.h:71
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS
Definition: vxge_reg.h:188
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MONTH(bits)
Definition: vxge_reg.h:465
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MAJOR(bits)
Definition: vxge_reg.h:473
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_YEAR(bits)
Definition: vxge_reg.h:468
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_BUILD(bits)
Definition: vxge_reg.h:457
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE
Definition: vxge_reg.h:185
#define u32
Definition: vga.h:21
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MINOR(bits)
Definition: vxge_reg.h:476
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
struct vxge_hw_device_version flash_version
Definition: vxge_config.h:458
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_YEAR(bits)
Definition: vxge_reg.h:446
static enum vxge_hw_status __vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr, u64 mask, u32 max_millis)
Definition: vxge_config.h:714
uint8_t status
Status.
Definition: ena.h:16
u32 data2
Definition: ar9003_mac.h:73
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY
Definition: vxge_reg.h:186
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MONTH(bits)
Definition: vxge_reg.h:443
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO
Definition: vxge_reg.h:204
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(val)
Definition: vxge_reg.h:183
int snprintf(char *buf, size_t size, const char *fmt,...)
Write a formatted string to a buffer.
Definition: vsprintf.c:382
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_DAY(bits)
Definition: vxge_reg.h:440
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val)
Definition: vxge_reg.h:184
char version[VXGE_HW_FW_STRLEN]
Definition: vxge_config.h:269

References __vxge_hw_pio_mem_write64(), vxge_hw_device_version::build, data1, data2, vxge_hw_device_date::date, vxge_hw_device_date::day, vxge_hw_device_hw_info::flash_date, vxge_hw_device_hw_info::flash_version, vxge_hw_device_hw_info::fw_date, vxge_hw_device_hw_info::fw_version, vxge_hw_device_version::major, vxge_hw_device_version::minor, vxge_hw_device_date::month, readq(), snprintf(), status, u32, vxge_hw_device_version::version, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_FAIL, VXGE_HW_FW_STRLEN, VXGE_HW_OK, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO, VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET, VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS, VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_BUILD, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_DAY, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MAJOR, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MINOR, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MONTH, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_YEAR, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_BUILD, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_DAY, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MAJOR, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MINOR, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MONTH, VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_YEAR, and vxge_hw_device_date::year.

Referenced by vxge_hw_device_hw_info_get().

◆ __vxge_hw_vpath_addr_get()

enum vxge_hw_status __vxge_hw_vpath_addr_get ( struct vxge_hw_vpath_reg vpath_reg,
u8(macaddr)  [ETH_ALEN],
u8(macaddr_mask)  [ETH_ALEN] 
)

Definition at line 1149 of file vxge_config.c.

1152 {
1153  u32 i;
1154  u64 val64;
1155  u64 data1 = 0ULL;
1156  u64 data2 = 0ULL;
1159 
1160  while (1) {
1161  val64 = VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(action) |
1166 
1168  &vpath_reg->rts_access_steer_ctrl,
1171 
1172  if (status != VXGE_HW_OK)
1173  break;
1174 
1175  val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1176 
1178 
1179  data1 = readq(&vpath_reg->rts_access_steer_data0);
1180  data2 = readq(&vpath_reg->rts_access_steer_data1);
1181 
1182  data1 =
1184  data2 =
1186  data2);
1187 
1188  for (i = ETH_ALEN; i > 0; i--) {
1189  macaddr[i-1] = (u8)(data1 & 0xFF);
1190  data1 >>= 8;
1191 
1192  macaddr_mask[i-1] = (u8)(data2 & 0xFF);
1193  data2 >>= 8;
1194  }
1195  if (is_valid_ether_addr(macaddr)) {
1196  status = VXGE_HW_OK;
1197  break;
1198  }
1199  action =
1201  } else
1202  status = VXGE_HW_FAIL;
1203  }
1204 
1205  return status;
1206 }
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY
Definition: vxge_reg.h:185
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET(val)
Definition: vxge_reg.h:189
u32 data1
Definition: ar9003_mac.h:71
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA
Definition: vxge_reg.h:192
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS
Definition: vxge_reg.h:188
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY
Definition: vxge_reg.h:184
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE
Definition: vxge_reg.h:185
uint64_t u64
Definition: stdint.h:25
u64 rts_access_steer_data0
Definition: vxge_reg.h:4215
#define u8
Definition: igbvf_osdep.h:40
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
u64 rts_access_steer_ctrl
Definition: vxge_reg.h:4204
static enum vxge_hw_status __vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr, u64 mask, u32 max_millis)
Definition: vxge_config.h:714
#define ETH_ALEN
Definition: if_ether.h:8
static int is_valid_ether_addr(const void *addr)
Check if Ethernet address is valid.
Definition: ethernet.h:77
u64 rts_access_steer_data1
Definition: vxge_reg.h:4217
uint8_t status
Status.
Definition: ena.h:16
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(bits)
Definition: vxge_reg.h:365
u32 data2
Definition: ar9003_mac.h:73
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(val)
Definition: vxge_reg.h:183
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val)
Definition: vxge_reg.h:184
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(bits)
Definition: vxge_reg.h:206
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_pio_mem_write64(), data1, data2, ETH_ALEN, is_valid_ether_addr(), readq(), vxge_hw_vpath_reg::rts_access_steer_ctrl, vxge_hw_vpath_reg::rts_access_steer_data0, vxge_hw_vpath_reg::rts_access_steer_data1, status, u8, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_FAIL, VXGE_HW_OK, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY, VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL, VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA, VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET, VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS, VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE, VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR, and VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK.

Referenced by vxge_hw_device_hw_info_get().

◆ __vxge_hw_vpath_mgmt_read()

static enum vxge_hw_status __vxge_hw_vpath_mgmt_read ( struct __vxge_hw_virtualpath vpath)
static

Definition at line 1213 of file vxge_config.c.

1215 {
1216  u32 i, mtu = 0, max_pyld = 0;
1217  u64 val64;
1219 
1220  for (i = 0; i < VXGE_HW_MAC_MAX_MAC_PORT_ID; i++) {
1221 
1222  val64 = readq(&vpath->vpmgmt_reg->
1224  max_pyld =
1225  (u32)
1227  (val64);
1228  if (mtu < max_pyld)
1229  mtu = max_pyld;
1230  }
1231 
1233 
1235 
1238  else
1240 
1241  return status;
1242 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_MAC_MAX_MAC_PORT_ID
Definition: vxge_traffic.h:34
#define VXGE_HW_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK
Definition: vxge_reg.h:129
#define u32
Definition: vga.h:21
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_MAC_HEADER_MAX_SIZE
Definition: vxge_traffic.h:41
u64 xgmac_gen_status_vpmgmt_clone
Definition: vxge_reg.h:3950
#define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls)
Definition: vxge_config.h:517
#define VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN(bits)
Definition: vxge_reg.h:96
uint8_t status
Status.
Definition: ena.h:16
u64 rxmac_cfg0_port_vpmgmt_clone[3]
Definition: vxge_reg.h:94
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
Definition: vxge_config.h:398
uint32_t mtu
Maximum MTU.
Definition: ena.h:28
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_virtualpath::hldev, __vxge_hw_virtualpath::max_mtu, mtu, readq(), rxmac_cfg0_port_vpmgmt_clone, status, u32, __vxge_hw_virtualpath::vpmgmt_reg, VXGE_HW_DEVICE_LINK_STATE_SET, VXGE_HW_LINK_DOWN, VXGE_HW_LINK_UP, VXGE_HW_MAC_HEADER_MAX_SIZE, VXGE_HW_MAC_MAX_MAC_PORT_ID, VXGE_HW_OK, VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN, VXGE_HW_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK, and vxge_hw_vpmgmt_reg::xgmac_gen_status_vpmgmt_clone.

Referenced by __vxge_hw_vp_initialize().

◆ __vxge_hw_vpath_reset_check()

enum vxge_hw_status __vxge_hw_vpath_reset_check ( struct __vxge_hw_virtualpath vpath)

Definition at line 1250 of file vxge_config.c.

1251 {
1252  enum vxge_hw_status status;
1253 
1254  vxge_trace();
1255 
1259  1 << (16 - vpath->vp_id)),
1261 
1262  return status;
1263 }
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition: vxge_config.h:67
uint8_t status
Status.
Definition: ena.h:16
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
#define VXGE_HW_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(val)
Definition: vxge_reg.h:168
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
Definition: vxge_config.c:148

References __vxge_hw_device_register_poll(), __vxge_hw_device::common_reg, __vxge_hw_virtualpath::hldev, status, __vxge_hw_virtualpath::vp_id, vxge_hw_common_reg::vpath_rst_in_prog, VXGE_HW_DEF_DEVICE_POLL_MILLIS, VXGE_HW_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG, and vxge_trace.

Referenced by __vxge_hw_vp_initialize(), vxge_hw_vpath_recover_from_reset(), and vxge_reset_all_vpaths().

◆ __vxge_hw_vpath_reset()

enum vxge_hw_status __vxge_hw_vpath_reset ( struct __vxge_hw_device hldev,
u32  vp_id 
)

Definition at line 1270 of file vxge_config.c.

1271 {
1272  u64 val64;
1274 
1275  vxge_trace();
1276 
1277  val64 = VXGE_HW_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(1 << (16 - vp_id));
1278 
1280  &hldev->common_reg->cmn_rsthdlr_cfg0);
1281 
1282  return status;
1283 }
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
static void __vxge_hw_pio_mem_write32_upper(u32 val, void __iomem *addr)
Definition: vxge_config.h:703
#define VXGE_HW_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(val)
Definition: vxge_reg.h:72
uint64_t u64
Definition: stdint.h:25
#define vxge_bVALn(bits, loc, n)
Definition: vxge_reg.h:35
uint8_t status
Status.
Definition: ena.h:16
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_pio_mem_write32_upper(), vxge_hw_common_reg::cmn_rsthdlr_cfg0, __vxge_hw_device::common_reg, status, vxge_bVALn, VXGE_HW_CMN_RSTHDLR_CFG0_SW_RESET_VPATH, VXGE_HW_OK, and vxge_trace.

Referenced by __vxge_hw_vp_initialize(), and vxge_hw_vpath_reset().

◆ __vxge_hw_vpath_prc_configure()

void __vxge_hw_vpath_prc_configure ( struct __vxge_hw_device hldev)

Definition at line 1291 of file vxge_config.c.

1292 {
1293  u64 val64;
1294  struct __vxge_hw_virtualpath *vpath;
1295  struct vxge_hw_vpath_reg __iomem *vp_reg;
1296 
1297  vxge_trace();
1298 
1299  vpath = &hldev->virtual_path;
1300  vp_reg = vpath->vp_reg;
1301 
1302  val64 = readq(&vp_reg->prc_cfg1);
1304  writeq(val64, &vp_reg->prc_cfg1);
1305 
1306  val64 = readq(&vpath->vp_reg->prc_cfg6);
1307  val64 &= ~VXGE_HW_PRC_CFG6_RXD_CRXDT(0x1ff);
1308  val64 &= ~VXGE_HW_PRC_CFG6_RXD_SPAT(0x1ff);
1310  val64 |= VXGE_HW_PRC_CFG6_RXD_CRXDT(0x3);
1311  val64 |= VXGE_HW_PRC_CFG6_RXD_SPAT(0xf);
1312  writeq(val64, &vpath->vp_reg->prc_cfg6);
1313 
1315  (u64)virt_to_bus(vpath->ringh.rxdl) >> 3),
1316  &vp_reg->prc_cfg5);
1317 
1318  val64 = readq(&vp_reg->prc_cfg4);
1319  val64 |= VXGE_HW_PRC_CFG4_IN_SVC;
1320  val64 &= ~VXGE_HW_PRC_CFG4_RING_MODE(0x3);
1321  val64 |= VXGE_HW_PRC_CFG4_RING_MODE(
1324 
1325  writeq(val64, &vp_reg->prc_cfg4);
1326  return;
1327 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_PRC_CFG6_RXD_CRXDT(val)
Definition: vxge_reg.h:63
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
#define VXGE_HW_PRC_CFG4_RING_MODE(val)
Definition: vxge_reg.h:47
#define VXGE_HW_PRC_CFG1_RTI_TINT_DISABLE
Definition: vxge_reg.h:38
#define VXGE_HW_PRC_CFG5_RXD0_ADD(val)
Definition: vxge_reg.h:56
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
#define VXGE_HW_PRC_CFG6_DOORBELL_MODE_EN
Definition: vxge_reg.h:60
#define VXGE_HW_PRC_CFG4_RTH_DISABLE
Definition: vxge_reg.h:50
uint64_t u64
Definition: stdint.h:25
struct __vxge_hw_ring_block * rxdl
Definition: vxge_config.h:370
#define __iomem
Definition: igbvf_osdep.h:46
struct __vxge_hw_ring ringh
Definition: vxge_config.h:406
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define vxge_trace()
Definition: vxge_config.h:767
#define VXGE_HW_PRC_CFG4_IN_SVC
Definition: vxge_reg.h:46
#define VXGE_HW_PRC_CFG6_RXD_SPAT(val)
Definition: vxge_reg.h:65
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
#define VXGE_HW_PRC_CFG4_RING_MODE_ONE_BUFFER
Definition: vxge_reg.h:139

References __iomem, vxge_hw_vpath_reg::prc_cfg1, vxge_hw_vpath_reg::prc_cfg4, vxge_hw_vpath_reg::prc_cfg5, vxge_hw_vpath_reg::prc_cfg6, readq(), __vxge_hw_virtualpath::ringh, __vxge_hw_ring::rxdl, virt_to_bus(), __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, VXGE_HW_PRC_CFG1_RTI_TINT_DISABLE, VXGE_HW_PRC_CFG4_IN_SVC, VXGE_HW_PRC_CFG4_RING_MODE, VXGE_HW_PRC_CFG4_RING_MODE_ONE_BUFFER, VXGE_HW_PRC_CFG4_RTH_DISABLE, VXGE_HW_PRC_CFG5_RXD0_ADD, VXGE_HW_PRC_CFG6_DOORBELL_MODE_EN, VXGE_HW_PRC_CFG6_RXD_CRXDT, VXGE_HW_PRC_CFG6_RXD_SPAT, vxge_trace, and writeq().

Referenced by vxge_hw_vpath_open(), and vxge_hw_vpath_recover_from_reset().

◆ __vxge_hw_vpath_kdfc_configure()

enum vxge_hw_status __vxge_hw_vpath_kdfc_configure ( struct __vxge_hw_device hldev,
u32  vp_id 
)

Definition at line 1335 of file vxge_config.c.

1336 {
1337  u64 val64;
1338  u64 vpath_stride;
1340  struct __vxge_hw_virtualpath *vpath;
1341  struct vxge_hw_vpath_reg __iomem *vp_reg;
1342 
1343  vxge_trace();
1344 
1345  vpath = &hldev->virtual_path;
1346  vp_reg = vpath->vp_reg;
1347  status = __vxge_hw_kdfc_swapper_set(hldev->legacy_reg, vp_reg);
1348 
1349  if (status != VXGE_HW_OK)
1350  goto exit;
1351 
1352  val64 = readq(&vp_reg->kdfc_drbl_triplet_total);
1353 
1354  vpath->max_kdfc_db =
1356  val64+1)/2;
1357 
1358  vpath->max_nofl_db = vpath->max_kdfc_db;
1359 
1361  (vpath->max_nofl_db*2)-1);
1362 
1363  writeq(val64, &vp_reg->kdfc_fifo_trpl_partition);
1364 
1366  &vp_reg->kdfc_fifo_trpl_ctrl);
1367 
1368  val64 = readq(&vp_reg->kdfc_trpl_fifo_0_ctrl);
1369 
1370  val64 &= ~(VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE(0x3) |
1372 
1375 #if (__BYTE_ORDER != __BIG_ENDIAN)
1377 #endif
1379 
1380  writeq(val64, &vp_reg->kdfc_trpl_fifo_0_ctrl);
1381  writeq((u64)0, &vp_reg->kdfc_trpl_fifo_0_wb_address);
1382  wmb();
1383  vpath_stride = readq(&hldev->toc_reg->toc_kdfc_vpath_stride);
1384 
1385  vpath->nofl_db =
1387  (hldev->kdfc + (vp_id *
1389  vpath_stride)));
1390 exit:
1391  return status;
1392 }
wmb()
u64 kdfc_trpl_fifo_0_wb_address
Definition: vxge_reg.h:4157
struct vxge_hw_legacy_reg * legacy_reg
Definition: vxge_config.h:495
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE(val)
Definition: vxge_reg.h:101
u64 kdfc_fifo_trpl_partition
Definition: vxge_reg.h:4116
enum vxge_hw_status __vxge_hw_kdfc_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg, struct vxge_hw_vpath_reg __iomem *vpath_reg)
Definition: vxge_config.c:761
#define VXGE_HW_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE(bits)
Definition: vxge_reg.h:124
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SELECT(val)
Definition: vxge_reg.h:109
#define VXGE_HW_KDFC_DRBL_TRIPLET_TOTAL_GET_KDFC_MAX_SIZE(bits)
Definition: vxge_reg.h:105
#define u32
Definition: vga.h:21
uint64_t u64
Definition: stdint.h:25
u64 kdfc_trpl_fifo_0_ctrl
Definition: vxge_reg.h:4122
#define VXGE_HW_KDFC_FIFO_TRPL_CTRL_TRIPLET_ENABLE
Definition: vxge_reg.h:99
#define __iomem
Definition: igbvf_osdep.h:46
#define VXGE_HW_KDFC_FIFO_TRPL_PARTITION_LENGTH_0(val)
Definition: vxge_reg.h:95
u64 kdfc_drbl_triplet_total
Definition: vxge_reg.h:4167
uint8_t status
Status.
Definition: ena.h:16
struct __vxge_hw_non_offload_db_wrapper * nofl_db
Definition: vxge_config.h:399
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SWAP_EN
Definition: vxge_reg.h:103
u64 toc_kdfc_vpath_stride
Definition: vxge_reg.h:697
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
struct vxge_hw_toc_reg * toc_reg
Definition: vxge_config.h:496
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE_NON_OFFLOAD_ONLY
Definition: vxge_reg.h:109
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __iomem, __vxge_hw_kdfc_swapper_set(), __vxge_hw_device::kdfc, vxge_hw_vpath_reg::kdfc_drbl_triplet_total, vxge_hw_vpath_reg::kdfc_fifo_trpl_ctrl, vxge_hw_vpath_reg::kdfc_fifo_trpl_partition, vxge_hw_vpath_reg::kdfc_trpl_fifo_0_ctrl, vxge_hw_vpath_reg::kdfc_trpl_fifo_0_wb_address, __vxge_hw_device::legacy_reg, __vxge_hw_virtualpath::max_kdfc_db, __vxge_hw_virtualpath::max_nofl_db, __vxge_hw_virtualpath::nofl_db, readq(), status, vxge_hw_toc_reg::toc_kdfc_vpath_stride, __vxge_hw_device::toc_reg, u32, __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, VXGE_HW_KDFC_DRBL_TRIPLET_TOTAL_GET_KDFC_MAX_SIZE, VXGE_HW_KDFC_FIFO_TRPL_CTRL_TRIPLET_ENABLE, VXGE_HW_KDFC_FIFO_TRPL_PARTITION_LENGTH_0, VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE, VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE_NON_OFFLOAD_ONLY, VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SELECT, VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SWAP_EN, VXGE_HW_OK, VXGE_HW_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE, vxge_trace, wmb(), and writeq().

Referenced by __vxge_hw_vpath_initialize().

◆ __vxge_hw_vpath_mac_configure()

enum vxge_hw_status __vxge_hw_vpath_mac_configure ( struct __vxge_hw_device hldev)

Definition at line 1399 of file vxge_config.c.

1400 {
1401  u64 val64;
1403  struct __vxge_hw_virtualpath *vpath;
1404  struct vxge_hw_vpath_reg __iomem *vp_reg;
1405 
1406  vxge_trace();
1407 
1408  vpath = &hldev->virtual_path;
1409  vp_reg = vpath->vp_reg;
1410 
1412  vpath->vsport_number), &vp_reg->xmac_vsport_choice);
1413 
1414  val64 = readq(&vp_reg->rxmac_vcfg1);
1415 
1418 
1419  writeq(val64, &vp_reg->rxmac_vcfg1);
1420  return status;
1421 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
#define VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE(val)
Definition: vxge_reg.h:179
uint64_t u64
Definition: stdint.h:25
#define __iomem
Definition: igbvf_osdep.h:46
#define VXGE_HW_XMAC_VSPORT_CHOICE_VSPORT_NUMBER(val)
Definition: vxge_reg.h:202
uint8_t status
Status.
Definition: ena.h:16
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE
Definition: vxge_reg.h:180
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __iomem, readq(), vxge_hw_vpath_reg::rxmac_vcfg1, status, __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, __vxge_hw_virtualpath::vsport_number, VXGE_HW_OK, VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE, VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE, VXGE_HW_XMAC_VSPORT_CHOICE_VSPORT_NUMBER, vxge_trace, writeq(), and vxge_hw_vpath_reg::xmac_vsport_choice.

Referenced by __vxge_hw_vpath_initialize().

◆ __vxge_hw_vpath_tim_configure()

enum vxge_hw_status __vxge_hw_vpath_tim_configure ( struct __vxge_hw_device hldev,
u32  vp_id 
)

Definition at line 1429 of file vxge_config.c.

1430 {
1431  u64 val64;
1433  struct __vxge_hw_virtualpath *vpath;
1434  struct vxge_hw_vpath_reg __iomem *vp_reg;
1435 
1436  vxge_trace();
1437 
1438  vpath = &hldev->virtual_path;
1439  vp_reg = vpath->vp_reg;
1440 
1441  writeq((u64)0, &vp_reg->tim_dest_addr);
1442  writeq((u64)0, &vp_reg->tim_vpath_map);
1443  writeq((u64)0, &vp_reg->tim_bitmap);
1444  writeq((u64)0, &vp_reg->tim_remap);
1445 
1447  (vp_id * VXGE_HW_MAX_INTR_PER_VP) +
1449 
1450  val64 = readq(&vp_reg->tim_pci_cfg);
1451  val64 |= VXGE_HW_TIM_PCI_CFG_ADD_PAD;
1452  writeq(val64, &vp_reg->tim_pci_cfg);
1453 
1454  /* TX configuration */
1456  (VXGE_TTI_BTIMER_VAL * 1000) / 272);
1463  writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_TX]);
1464 
1469  writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_TX]);
1470 
1474  (VXGE_TTI_LTIMER_VAL * 1000) / 272);
1475  writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_TX]);
1476 
1477  /* RX configuration */
1479  (VXGE_RTI_BTIMER_VAL * 1000) / 272);
1484  writeq(val64, &vp_reg->tim_cfg1_int_num[VXGE_HW_VPATH_INTR_RX]);
1485 
1490  writeq(val64, &vp_reg->tim_cfg2_int_num[VXGE_HW_VPATH_INTR_RX]);
1491 
1495  (VXGE_RTI_LTIMER_VAL * 1000) / 272);
1496  writeq(val64, &vp_reg->tim_cfg3_int_num[VXGE_HW_VPATH_INTR_RX]);
1497 
1498  val64 = 0;
1505 
1506  return status;
1507 }
#define RTI_RX_UFC_A
Definition: vxge_main.h:118
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(val)
Definition: vxge_reg.h:271
#define VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(val)
Definition: vxge_reg.h:284
#define TTI_TX_URANGE_C
Definition: vxge_main.h:95
u64 tim_cfg2_int_num[4]
Definition: vxge_reg.h:4296
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
#define VXGE_HW_VPATH_INTR_EINTA
Definition: vxge_traffic.h:132
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
#define TTI_TX_UFC_A
Definition: vxge_main.h:96
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(val)
Definition: vxge_reg.h:277
u64 tim_cfg3_int_num[4]
Definition: vxge_reg.h:4301
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(val)
Definition: vxge_reg.h:276
u64 tim_cfg1_int_num[4]
Definition: vxge_reg.h:4286
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(val)
Definition: vxge_reg.h:278
#define VXGE_HW_VPATH_INTR_RX
Definition: vxge_traffic.h:131
#define VXGE_TTI_BTIMER_VAL
Definition: vxge_main.h:73
#define RTI_RX_URANGE_A
Definition: vxge_main.h:112
#define VXGE_HW_MAX_INTR_PER_VP
Definition: vxge_traffic.h:129
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(val)
Definition: vxge_reg.h:273
#define TTI_TX_UFC_B
Definition: vxge_main.h:97
#define VXGE_HW_VPATH_INTR_BMAP
Definition: vxge_traffic.h:133
#define TTI_TX_URANGE_B
Definition: vxge_main.h:94
#define VXGE_HW_TIM_PCI_CFG_ADD_PAD
Definition: vxge_reg.h:306
#define __iomem
Definition: igbvf_osdep.h:46
#define RTI_RX_URANGE_C
Definition: vxge_main.h:114
#define VXGE_HW_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL
Definition: vxge_traffic.h:138
#define VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(val)
Definition: vxge_reg.h:265
#define VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC
Definition: vxge_reg.h:269
#define VXGE_HW_VPATH_INTR_TX
Definition: vxge_traffic.h:130
#define RTI_RX_UFC_B
Definition: vxge_main.h:119
#define RTI_RX_UFC_D
Definition: vxge_main.h:121
#define TTI_TX_UFC_D
Definition: vxge_main.h:99
#define RTI_RX_UFC_C
Definition: vxge_main.h:120
uint8_t status
Status.
Definition: ena.h:16
#define VXGE_HW_TIM_CFG1_INT_NUM_TXFRM_CNT_EN
Definition: vxge_reg.h:267
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(val)
Definition: vxge_reg.h:272
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define TTI_TX_URANGE_A
Definition: vxge_main.h:93
#define VXGE_RTI_BTIMER_VAL
Definition: vxge_main.h:79
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(val)
Definition: vxge_reg.h:283
#define TTI_TX_UFC_C
Definition: vxge_main.h:98
#define VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI
Definition: vxge_reg.h:270
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(val)
Definition: vxge_reg.h:275
#define VXGE_RTI_LTIMER_VAL
Definition: vxge_main.h:80
#define VXGE_TTI_LTIMER_VAL
Definition: vxge_main.h:77
#define VXGE_HW_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL
Definition: vxge_traffic.h:137
#define VXGE_HW_TIM_RING_ASSN_INT_NUM(val)
Definition: vxge_reg.h:297
#define RTI_RX_URANGE_B
Definition: vxge_main.h:113
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __iomem, readq(), RTI_RX_UFC_A, RTI_RX_UFC_B, RTI_RX_UFC_C, RTI_RX_UFC_D, RTI_RX_URANGE_A, RTI_RX_URANGE_B, RTI_RX_URANGE_C, status, vxge_hw_vpath_reg::tim_bitmap, vxge_hw_vpath_reg::tim_cfg1_int_num, vxge_hw_vpath_reg::tim_cfg2_int_num, vxge_hw_vpath_reg::tim_cfg3_int_num, vxge_hw_vpath_reg::tim_dest_addr, vxge_hw_vpath_reg::tim_pci_cfg, vxge_hw_vpath_reg::tim_remap, vxge_hw_vpath_reg::tim_ring_assn, vxge_hw_vpath_reg::tim_vpath_map, TTI_TX_UFC_A, TTI_TX_UFC_B, TTI_TX_UFC_C, TTI_TX_UFC_D, TTI_TX_URANGE_A, TTI_TX_URANGE_B, TTI_TX_URANGE_C, __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, VXGE_HW_MAX_INTR_PER_VP, VXGE_HW_OK, VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL, VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC, VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI, VXGE_HW_TIM_CFG1_INT_NUM_TXFRM_CNT_EN, VXGE_HW_TIM_CFG1_INT_NUM_URNG_A, VXGE_HW_TIM_CFG1_INT_NUM_URNG_B, VXGE_HW_TIM_CFG1_INT_NUM_URNG_C, VXGE_HW_TIM_CFG2_INT_NUM_UEC_A, VXGE_HW_TIM_CFG2_INT_NUM_UEC_B, VXGE_HW_TIM_CFG2_INT_NUM_UEC_C, VXGE_HW_TIM_CFG2_INT_NUM_UEC_D, VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL, VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL, VXGE_HW_TIM_PCI_CFG_ADD_PAD, VXGE_HW_TIM_RING_ASSN_INT_NUM, VXGE_HW_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL, VXGE_HW_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL, VXGE_HW_VPATH_INTR_BMAP, VXGE_HW_VPATH_INTR_EINTA, VXGE_HW_VPATH_INTR_RX, VXGE_HW_VPATH_INTR_TX, VXGE_RTI_BTIMER_VAL, VXGE_RTI_LTIMER_VAL, vxge_trace, VXGE_TTI_BTIMER_VAL, VXGE_TTI_LTIMER_VAL, and writeq().

Referenced by __vxge_hw_vpath_initialize().

◆ __vxge_hw_vpath_initialize()

enum vxge_hw_status __vxge_hw_vpath_initialize ( struct __vxge_hw_device hldev,
u32  vp_id 
)

Definition at line 1515 of file vxge_config.c.

1516 {
1517  u64 val64;
1518  u32 val32;
1519  int i;
1521  struct __vxge_hw_virtualpath *vpath;
1522  struct vxge_hw_vpath_reg *vp_reg;
1523 
1524  vxge_trace();
1525 
1526  vpath = &hldev->virtual_path;
1527 
1528  if (!(hldev->vpath_assignments & vxge_mBIT(vp_id))) {
1530  goto exit;
1531  }
1532  vp_reg = vpath->vp_reg;
1534  if (status != VXGE_HW_OK)
1535  goto exit;
1536 
1538 
1539  if (status != VXGE_HW_OK)
1540  goto exit;
1541  val64 = readq(&vpath->vpmgmt_reg->xmac_vsport_choices_vp);
1542 
1543  for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
1544  if (val64 & vxge_mBIT(i))
1545  vpath->vsport_number = i;
1546  }
1547 
1549 
1550  if (status != VXGE_HW_OK)
1551  goto exit;
1552 
1553  status = __vxge_hw_vpath_kdfc_configure(hldev, vp_id);
1554 
1555  if (status != VXGE_HW_OK)
1556  goto exit;
1557 
1558  status = __vxge_hw_vpath_tim_configure(hldev, vp_id);
1559 
1560  if (status != VXGE_HW_OK)
1561  goto exit;
1562 
1563  val64 = readq(&vp_reg->rtdma_rd_optimization_ctrl);
1564 
1565  /* Get MRRS value from device control */
1566  status = __vxge_hw_vpath_pci_read(vpath, 1, 0x78, &val32);
1567 
1568  if (status == VXGE_HW_OK) {
1569  val32 = (val32 & VXGE_HW_PCI_EXP_DEVCTL_READRQ) >> 12;
1570  val64 &=
1572  val64 |=
1574 
1576  }
1577 
1579  val64 |=
1582 
1584  writeq(val64, &vp_reg->rtdma_rd_optimization_ctrl);
1585 
1586 exit:
1587  return status;
1588 }
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY(val)
Definition: vxge_reg.h:249
struct vxge_hw_legacy_reg * legacy_reg
Definition: vxge_config.h:495
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
enum vxge_hw_status __vxge_hw_vpath_mac_configure(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:1399
enum vxge_hw_status __vxge_hw_vpath_kdfc_configure(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1335
#define VXGE_HW_MAX_PAYLOAD_SIZE_512
Definition: vxge_config.h:68
#define VXGE_HW_MAX_VIRTUAL_PATHS
Definition: vxge_traffic.h:30
uint64_t u64
Definition: stdint.h:25
u64 xmac_vsport_choices_vp
Definition: vxge_reg.h:3946
#define VXGE_HW_PCI_EXP_DEVCTL_READRQ
Definition: vxge_reg.h:242
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN
Definition: vxge_reg.h:248
uint8_t status
Status.
Definition: ena.h:16
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
Definition: vxge_config.h:398
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
enum vxge_hw_status __vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
Definition: vxge_config.c:740
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
enum vxge_hw_status __vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
Definition: vxge_config.c:684
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_FILL_THRESH(val)
Definition: vxge_reg.h:243
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_WAIT_FOR_SPACE
Definition: vxge_reg.h:241
enum vxge_hw_status __vxge_hw_vpath_pci_read(struct __vxge_hw_virtualpath *vpath, u32 phy_func_0, u32 offset, u32 *val)
Definition: vxge_config.c:865
enum vxge_hw_status __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1429
u64 rtdma_rd_optimization_ctrl
Definition: vxge_reg.h:4259
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_legacy_swapper_set(), __vxge_hw_vpath_kdfc_configure(), __vxge_hw_vpath_mac_configure(), __vxge_hw_vpath_pci_read(), __vxge_hw_vpath_swapper_set(), __vxge_hw_vpath_tim_configure(), __vxge_hw_device::legacy_reg, readq(), vxge_hw_vpath_reg::rtdma_rd_optimization_ctrl, status, __vxge_hw_device::virtual_path, __vxge_hw_virtualpath::vp_reg, __vxge_hw_device::vpath_assignments, __vxge_hw_virtualpath::vpmgmt_reg, __vxge_hw_virtualpath::vsport_number, VXGE_HW_ERR_VPATH_NOT_AVAILABLE, VXGE_HW_MAX_PAYLOAD_SIZE_512, VXGE_HW_MAX_VIRTUAL_PATHS, VXGE_HW_OK, VXGE_HW_PCI_EXP_DEVCTL_READRQ, VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY, VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN, VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_FILL_THRESH, VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_WAIT_FOR_SPACE, vxge_mBIT, vxge_trace, writeq(), and vxge_hw_vpmgmt_reg::xmac_vsport_choices_vp.

Referenced by __vxge_hw_vp_initialize(), and vxge_hw_vpath_recover_from_reset().

◆ __vxge_hw_vp_initialize()

enum vxge_hw_status __vxge_hw_vp_initialize ( struct __vxge_hw_device hldev,
u32  vp_id,
struct __vxge_hw_virtualpath vpath 
)

Definition at line 1596 of file vxge_config.c.

1598 {
1600 
1601  vxge_trace();
1602 
1603  if (!(hldev->vpath_assignments & vxge_mBIT(vp_id))) {
1605  goto exit;
1606  }
1607 
1608  vpath->vp_id = vp_id;
1609  vpath->vp_open = VXGE_HW_VP_OPEN;
1610  vpath->hldev = hldev;
1611  vpath->vp_reg = hldev->vpath_reg[vp_id];
1612  vpath->vpmgmt_reg = hldev->vpmgmt_reg[vp_id];
1613 
1614  __vxge_hw_vpath_reset(hldev, vp_id);
1615 
1617  if (status != VXGE_HW_OK) {
1618  memset(vpath, 0, sizeof(struct __vxge_hw_virtualpath));
1619  goto exit;
1620  }
1621 
1623  hldev->tim_int_mask1, vp_id);
1624 
1625  status = __vxge_hw_vpath_initialize(hldev, vp_id);
1626 
1627  if (status != VXGE_HW_OK) {
1628  __vxge_hw_vp_terminate(hldev, vpath);
1629  goto exit;
1630  }
1631 
1633 exit:
1634  return status;
1635 }
u64 tim_int_mask0[4]
Definition: vxge_config.h:511
enum vxge_hw_status __vxge_hw_vpath_initialize(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1515
#define VXGE_HW_DEVICE_TIM_INT_MASK_SET(m0, m1, i)
Definition: vxge_config.h:519
static enum vxge_hw_status __vxge_hw_vpath_mgmt_read(struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1213
enum vxge_hw_status __vxge_hw_vpath_reset(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1270
u32 tim_int_mask1[4]
Definition: vxge_config.h:512
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
Definition: vxge_config.h:503
enum vxge_hw_status __vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1250
void __vxge_hw_vp_terminate(struct __vxge_hw_device *hldev, struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1642
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
Definition: vxge_config.h:501
uint8_t status
Status.
Definition: ena.h:16
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
Definition: vxge_config.h:398
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
#define VXGE_HW_VP_OPEN
Definition: vxge_config.h:394
void * memset(void *dest, int character, size_t len) __nonnull

References __vxge_hw_vp_terminate(), __vxge_hw_vpath_initialize(), __vxge_hw_vpath_mgmt_read(), __vxge_hw_vpath_reset(), __vxge_hw_vpath_reset_check(), __vxge_hw_virtualpath::hldev, memset(), status, __vxge_hw_device::tim_int_mask0, __vxge_hw_device::tim_int_mask1, __vxge_hw_virtualpath::vp_id, __vxge_hw_virtualpath::vp_open, __vxge_hw_virtualpath::vp_reg, __vxge_hw_device::vpath_assignments, __vxge_hw_device::vpath_reg, __vxge_hw_virtualpath::vpmgmt_reg, __vxge_hw_device::vpmgmt_reg, VXGE_HW_DEVICE_TIM_INT_MASK_SET, VXGE_HW_ERR_VPATH_NOT_AVAILABLE, VXGE_HW_OK, VXGE_HW_VP_OPEN, vxge_mBIT, and vxge_trace.

Referenced by vxge_hw_vpath_open().

◆ __vxge_hw_vp_terminate()

void __vxge_hw_vp_terminate ( struct __vxge_hw_device hldev,
struct __vxge_hw_virtualpath vpath 
)

Definition at line 1642 of file vxge_config.c.

1644 {
1645  vxge_trace();
1646 
1647  if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN)
1648  return;
1649 
1651  hldev->tim_int_mask1, vpath->vp_id);
1652 
1653  memset(vpath, 0, sizeof(struct __vxge_hw_virtualpath));
1654 }
u64 tim_int_mask0[4]
Definition: vxge_config.h:511
u32 tim_int_mask1[4]
Definition: vxge_config.h:512
#define VXGE_HW_DEVICE_TIM_INT_MASK_RESET(m0, m1, i)
Definition: vxge_config.h:530
#define vxge_trace()
Definition: vxge_config.h:767
#define VXGE_HW_VP_NOT_OPEN
Definition: vxge_config.h:393
void * memset(void *dest, int character, size_t len) __nonnull

References memset(), __vxge_hw_device::tim_int_mask0, __vxge_hw_device::tim_int_mask1, __vxge_hw_virtualpath::vp_id, __vxge_hw_virtualpath::vp_open, VXGE_HW_DEVICE_TIM_INT_MASK_RESET, VXGE_HW_VP_NOT_OPEN, and vxge_trace.

Referenced by __vxge_hw_vp_initialize(), vxge_hw_vpath_close(), and vxge_hw_vpath_open().

◆ vxge_hw_vpath_mtu_set()

enum vxge_hw_status vxge_hw_vpath_mtu_set ( struct __vxge_hw_virtualpath vpath,
u32  new_mtu 
)

Definition at line 1662 of file vxge_config.c.

1663 {
1664  u64 val64;
1666 
1667  vxge_trace();
1668 
1669  new_mtu += VXGE_HW_MAC_HEADER_MAX_SIZE;
1670 
1671  if ((new_mtu < VXGE_HW_MIN_MTU) || (new_mtu > vpath->max_mtu))
1673 
1674  val64 = readq(&vpath->vp_reg->rxmac_vcfg0);
1675 
1676  val64 &= ~VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff);
1677  val64 |= VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(new_mtu);
1678 
1679  writeq(val64, &vpath->vp_reg->rxmac_vcfg0);
1680 
1681  return status;
1682 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_MAC_HEADER_MAX_SIZE
Definition: vxge_traffic.h:41
uint8_t status
Status.
Definition: ena.h:16
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define VXGE_HW_MIN_MTU
Definition: vxge_config.h:34
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
#define VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(val)
Definition: vxge_reg.h:171
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __vxge_hw_virtualpath::max_mtu, readq(), vxge_hw_vpath_reg::rxmac_vcfg0, status, __vxge_hw_virtualpath::vp_reg, VXGE_HW_ERR_INVALID_MTU_SIZE, VXGE_HW_MAC_HEADER_MAX_SIZE, VXGE_HW_MIN_MTU, VXGE_HW_OK, VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN, vxge_trace, and writeq().

Referenced by vxge_open().

◆ vxge_hw_vpath_open()

enum vxge_hw_status vxge_hw_vpath_open ( struct __vxge_hw_device hldev,
struct vxge_vpath vpath 
)

Definition at line 1691 of file vxge_config.c.

1692 {
1693  struct __vxge_hw_virtualpath *vpathh;
1694  enum vxge_hw_status status;
1695 
1696  vxge_trace();
1697 
1698  vpathh = &hldev->virtual_path;
1699 
1700  if (vpath->vp_open == VXGE_HW_VP_OPEN) {
1702  goto vpath_open_exit1;
1703  }
1704 
1706  if (status != VXGE_HW_OK)
1707  goto vpath_open_exit1;
1708 
1709  status = __vxge_hw_fifo_create(vpathh, &vpathh->fifoh);
1710  if (status != VXGE_HW_OK)
1711  goto vpath_open_exit2;
1712 
1713  status = __vxge_hw_ring_create(vpathh, &vpathh->ringh);
1714  if (status != VXGE_HW_OK)
1715  goto vpath_open_exit3;
1716 
1718 
1719  return VXGE_HW_OK;
1720 
1721 vpath_open_exit3:
1722  __vxge_hw_fifo_delete(&vpathh->fifoh);
1723 vpath_open_exit2:
1724  __vxge_hw_vp_terminate(hldev, vpathh);
1725 vpath_open_exit1:
1726  return status;
1727 }
int vp_open
Definition: vxge_main.h:191
struct __vxge_hw_virtualpath virtual_path
Definition: vxge_config.h:507
enum vxge_hw_status __vxge_hw_fifo_delete(struct __vxge_hw_fifo *fifo)
Definition: vxge_config.c:845
void __vxge_hw_vp_terminate(struct __vxge_hw_device *hldev, struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1642
enum vxge_hw_status __vxge_hw_vp_initialize(struct __vxge_hw_device *hldev, u32 vp_id, struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1596
uint8_t status
Status.
Definition: ena.h:16
enum vxge_hw_status __vxge_hw_fifo_create(struct __vxge_hw_virtualpath *vpath, struct __vxge_hw_fifo *fifo)
Definition: vxge_config.c:814
struct __vxge_hw_ring ringh
Definition: vxge_config.h:406
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
struct __vxge_hw_fifo fifoh
Definition: vxge_config.h:407
void __vxge_hw_vpath_prc_configure(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:1291
#define VXGE_HW_VP_OPEN
Definition: vxge_config.h:394
enum vxge_hw_status __vxge_hw_ring_create(struct __vxge_hw_virtualpath *vpath, struct __vxge_hw_ring *ring)
Definition: vxge_config.c:616

References __vxge_hw_fifo_create(), __vxge_hw_fifo_delete(), __vxge_hw_ring_create(), __vxge_hw_vp_initialize(), __vxge_hw_vp_terminate(), __vxge_hw_vpath_prc_configure(), __vxge_hw_virtualpath::fifoh, __vxge_hw_device::first_vp_id, __vxge_hw_virtualpath::hldev, __vxge_hw_virtualpath::ringh, status, __vxge_hw_device::virtual_path, vxge_vpath::vp_open, VXGE_HW_ERR_INVALID_STATE, VXGE_HW_OK, VXGE_HW_VP_OPEN, and vxge_trace.

Referenced by vxge_open_vpaths().

◆ vxge_hw_vpath_rx_doorbell_init()

void vxge_hw_vpath_rx_doorbell_init ( struct __vxge_hw_virtualpath vpath)

Definition at line 1738 of file vxge_config.c.

1739 {
1740  u64 new_count, val64;
1741 
1742  vxge_trace();
1743 
1744  if (vpath->hldev->titan1) {
1745  new_count = readq(&vpath->vp_reg->rxdmem_size);
1746  new_count &= 0x1fff;
1747  } else
1748  new_count = VXGE_HW_RING_RXD_QWORDS_MODE_1 * 4;
1749 
1750  val64 = (VXGE_HW_RXDMEM_SIZE_PRC_RXDMEM_SIZE(new_count));
1751 
1753  &vpath->vp_reg->prc_rxd_doorbell);
1754 }
uint64_t readq(volatile uint64_t *io_addr)
Read 64-bit qword from memory-mapped device.
uint64_t u64
Definition: stdint.h:25
#define VXGE_HW_RING_RXD_QWORDS_MODE_1
Definition: vxge_config.h:364
#define VXGE_HW_RXDMEM_SIZE_PRC_RXDMEM_SIZE(val)
Definition: vxge_reg.h:81
#define VXGE_HW_PRC_RXD_DOORBELL_NEW_QW_CNT(val)
Definition: vxge_reg.h:77
struct vxge_hw_vpath_reg * vp_reg
Definition: vxge_config.h:397
#define vxge_trace()
Definition: vxge_config.h:767
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
void writeq(uint64_t data, volatile uint64_t *io_addr)
Write 64-bit qword to memory-mapped device.

References __vxge_hw_virtualpath::hldev, vxge_hw_vpath_reg::prc_rxd_doorbell, readq(), vxge_hw_vpath_reg::rxdmem_size, __vxge_hw_device::titan1, __vxge_hw_virtualpath::vp_reg, VXGE_HW_PRC_RXD_DOORBELL_NEW_QW_CNT, VXGE_HW_RING_RXD_QWORDS_MODE_1, VXGE_HW_RXDMEM_SIZE_PRC_RXDMEM_SIZE, vxge_trace, and writeq().

Referenced by vxge_open().

◆ vxge_hw_vpath_close()

enum vxge_hw_status vxge_hw_vpath_close ( struct __vxge_hw_virtualpath vpath)

Definition at line 1761 of file vxge_config.c.

1762 {
1763  struct __vxge_hw_device *devh = NULL;
1764  u32 vp_id = vpath->vp_id;
1766 
1767  vxge_trace();
1768 
1769  devh = vpath->hldev;
1770 
1771  if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1773  goto vpath_close_exit;
1774  }
1775 
1776  devh->vpaths_deployed &= ~vxge_mBIT(vp_id);
1777 
1778  __vxge_hw_ring_delete(&vpath->ringh);
1779 
1780  __vxge_hw_fifo_delete(&vpath->fifoh);
1781 
1782  __vxge_hw_vp_terminate(devh, vpath);
1783 
1784  vpath->vp_open = VXGE_HW_VP_NOT_OPEN;
1785 
1786 vpath_close_exit:
1787  return status;
1788 }
enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_ring *ring)
Definition: vxge_config.c:659
enum vxge_hw_status __vxge_hw_fifo_delete(struct __vxge_hw_fifo *fifo)
Definition: vxge_config.c:845
void __vxge_hw_vp_terminate(struct __vxge_hw_device *hldev, struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1642
uint8_t status
Status.
Definition: ena.h:16
#define vxge_mBIT(loc)
Definition: vxge_reg.h:24
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
struct __vxge_hw_ring ringh
Definition: vxge_config.h:406
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
struct __vxge_hw_fifo fifoh
Definition: vxge_config.h:407
#define VXGE_HW_VP_NOT_OPEN
Definition: vxge_config.h:393
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_fifo_delete(), __vxge_hw_ring_delete(), __vxge_hw_vp_terminate(), __vxge_hw_virtualpath::fifoh, __vxge_hw_virtualpath::hldev, NULL, __vxge_hw_virtualpath::ringh, status, __vxge_hw_virtualpath::vp_id, __vxge_hw_virtualpath::vp_open, __vxge_hw_device::vpaths_deployed, VXGE_HW_ERR_VPATH_NOT_OPEN, VXGE_HW_OK, VXGE_HW_VP_NOT_OPEN, vxge_mBIT, and vxge_trace.

Referenced by vxge_close_vpaths().

◆ vxge_hw_vpath_reset()

enum vxge_hw_status vxge_hw_vpath_reset ( struct __vxge_hw_virtualpath vpath)

Definition at line 1794 of file vxge_config.c.

1795 {
1796  enum vxge_hw_status status;
1797  u32 vp_id;
1798 
1799  vxge_trace();
1800 
1801  vp_id = vpath->vp_id;
1802 
1803  if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1805  goto exit;
1806  }
1807 
1808  status = __vxge_hw_vpath_reset(vpath->hldev, vp_id);
1809 exit:
1810  return status;
1811 }
enum vxge_hw_status __vxge_hw_vpath_reset(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1270
uint8_t status
Status.
Definition: ena.h:16
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
#define VXGE_HW_VP_NOT_OPEN
Definition: vxge_config.h:393
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_vpath_reset(), __vxge_hw_virtualpath::hldev, status, __vxge_hw_virtualpath::vp_id, __vxge_hw_virtualpath::vp_open, VXGE_HW_ERR_VPATH_NOT_OPEN, VXGE_HW_VP_NOT_OPEN, and vxge_trace.

Referenced by vxge_reset_all_vpaths().

◆ vxge_hw_vpath_recover_from_reset()

enum vxge_hw_status vxge_hw_vpath_recover_from_reset ( struct __vxge_hw_virtualpath vpath)

Definition at line 1819 of file vxge_config.c.

1820 {
1821  enum vxge_hw_status status;
1822  struct __vxge_hw_device *hldev;
1823  u32 vp_id;
1824 
1825  vxge_trace();
1826 
1827  vp_id = vpath->vp_id;
1828  hldev = vpath->hldev;
1829 
1830  if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1832  goto exit;
1833  }
1834 
1836  if (status != VXGE_HW_OK)
1837  goto exit;
1838 
1839  status = __vxge_hw_vpath_initialize(hldev, vp_id);
1840  if (status != VXGE_HW_OK)
1841  goto exit;
1842 
1844 
1845 exit:
1846  return status;
1847 }
enum vxge_hw_status __vxge_hw_vpath_initialize(struct __vxge_hw_device *hldev, u32 vp_id)
Definition: vxge_config.c:1515
enum vxge_hw_status __vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath)
Definition: vxge_config.c:1250
uint8_t status
Status.
Definition: ena.h:16
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
#define vxge_trace()
Definition: vxge_config.h:767
vxge_hw_status
Definition: vxge_config.h:70
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
#define VXGE_HW_VP_NOT_OPEN
Definition: vxge_config.h:393
void __vxge_hw_vpath_prc_configure(struct __vxge_hw_device *hldev)
Definition: vxge_config.c:1291
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_vpath_initialize(), __vxge_hw_vpath_prc_configure(), __vxge_hw_vpath_reset_check(), __vxge_hw_virtualpath::hldev, status, __vxge_hw_virtualpath::vp_id, __vxge_hw_virtualpath::vp_open, VXGE_HW_ERR_VPATH_NOT_OPEN, VXGE_HW_OK, VXGE_HW_VP_NOT_OPEN, and vxge_trace.

Referenced by vxge_reset_all_vpaths().

◆ vxge_hw_vpath_enable()

void vxge_hw_vpath_enable ( struct __vxge_hw_virtualpath vpath)

Definition at line 1855 of file vxge_config.c.

1856 {
1857  struct __vxge_hw_device *hldev;
1858  u64 val64;
1859 
1860  vxge_trace();
1861 
1862  hldev = vpath->hldev;
1863 
1865  1 << (16 - vpath->vp_id));
1866 
1868  &hldev->common_reg->cmn_rsthdlr_cfg1);
1869 }
struct vxge_hw_common_reg * common_reg
Definition: vxge_config.h:497
static void __vxge_hw_pio_mem_write32_upper(u32 val, void __iomem *addr)
Definition: vxge_config.h:703
#define VXGE_HW_CMN_RSTHDLR_CFG1_CLR_VPATH_RESET(val)
Definition: vxge_reg.h:74
uint64_t u64
Definition: stdint.h:25
#define vxge_bVALn(bits, loc, n)
Definition: vxge_reg.h:35
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
Definition: vxge_config.h:477
#define vxge_trace()
Definition: vxge_config.h:767
struct __vxge_hw_device * hldev
Definition: vxge_config.h:396
uint32_t u32
Definition: stdint.h:23

References __vxge_hw_pio_mem_write32_upper(), vxge_hw_common_reg::cmn_rsthdlr_cfg1, __vxge_hw_device::common_reg, __vxge_hw_virtualpath::hldev, __vxge_hw_virtualpath::vp_id, vxge_bVALn, VXGE_HW_CMN_RSTHDLR_CFG1_CLR_VPATH_RESET, and vxge_trace.

Referenced by vxge_open().