iPXE
vxge_config.c
Go to the documentation of this file.
1/*
2 * vxge-config.c: iPXE driver for Neterion Inc's X3100 Series 10GbE PCIe I/O
3 * Virtualized Server Adapter.
4 *
5 * Copyright(c) 2002-2010 Neterion Inc.
6 *
7 * This software may be used and distributed according to the terms of
8 * the GNU General Public License (GPL), incorporated herein by
9 * reference. Drivers based on or derived from this code fall under
10 * the GPL and must retain the authorship, copyright and license
11 * notice.
12 *
13 */
14
15FILE_LICENCE(GPL2_ONLY);
16
17#include <stdlib.h>
18#include <stdio.h>
19#include <string.h>
20#include <ipxe/malloc.h>
21#include <ipxe/pci.h>
22#include <ipxe/iobuf.h>
23#include <ipxe/ethernet.h>
24#include <byteswap.h>
25
26#include "vxge_traffic.h"
27#include "vxge_config.h"
28#include "vxge_main.h"
29
30void
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);
42 writeq(val64, &vp_reg->rxmac_vcfg0);
43 val64 = readq(&vp_reg->rxmac_vcfg0);
44 return;
45}
46
95
96/* Get function mode */
98vxge_hw_get_func_mode(struct __vxge_hw_device *hldev, u32 *func_mode)
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}
120
121/*
122 * __vxge_hw_device_pci_e_init
123 * Initialize certain PCI/PCI-X configuration registers
124 * with recommended values. Save config space for future hw resets.
125 */
126void
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}
141
142/*
143 * __vxge_hw_device_register_poll
144 * Will poll certain register for specified amount of time.
145 * Will poll until masked bit is not cleared.
146 */
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}
173
174 /* __vxge_hw_device_vpath_reset_in_prog_check - Check if vpath reset
175 * in progress
176 * This routine checks the vpath reset in progress register is turned zero
177 */
190
191/*
192 * __vxge_hw_device_get_legacy_reg
193 * This routine gets the legacy register section's memory mapped address
194 * and sets the swapper.
195 */
196static struct vxge_hw_legacy_reg __iomem *
198{
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
212 if (status != VXGE_HW_OK)
213 return NULL;
214
215 return legacy_reg;
216}
217/*
218 * __vxge_hw_device_toc_get
219 * This routine sets the swapper and reads the toc pointer and returns the
220 * memory mapped address of the toc
221 */
224 struct vxge_hw_legacy_reg __iomem *legacy_reg)
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}
234
235/*
236 * __vxge_hw_device_reg_addr_get
237 * This routine sets the swapper and reads the toc pointer and initializes the
238 * register location pointers in the device object. It waits until the ric is
239 * completed initializing registers.
240 */
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
303exit:
304 return status;
305}
306
307/*
308 * __vxge_hw_device_access_rights_get: Get Access Rights of the driver
309 * This routine returns the Access Rights of the driver
310 */
311static u32
313{
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}
343
344/*
345 * __vxge_hw_device_host_info_get
346 * This routine returns the host type assignments
347 */
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}
377
378/**
379 * vxge_hw_device_hw_info_get - Get the hw information
380 * Returns the vpath mask that has the bits set for each vpath allocated
381 * for the driver, FW version information and the first mac addresse for
382 * each vpath
383 */
386 struct vxge_hw_device_hw_info *hw_info)
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;
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
477 hw_info->mac_addrs[i],
478 hw_info->mac_addr_masks[i]);
479 if (status != VXGE_HW_OK)
480 goto exit;
481 }
482exit:
483 return status;
484}
485
486/*
487 * vxge_hw_device_initialize - Initialize Titan device.
488 * Initialize Titan device. Note that all the arguments of this public API
489 * are 'IN', including @hldev. Driver cooperates with
490 * OS to find new Titan device, locate its PCI and memory spaces.
491 *
492 * When done, the driver allocates sizeof(struct __vxge_hw_device) bytes for HW
493 * to enable the latter to perform Titan hardware initialization.
494 */
497 struct __vxge_hw_device **devh,
498 void *bar0,
499 struct pci_device *pdev,
500 u8 titan1)
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
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;
534exit:
535 return status;
536}
537
538/*
539 * vxge_hw_device_terminate - Terminate Titan device.
540 * Terminate HW device.
541 */
542void
544{
545 vxge_trace();
546
548
549 hldev->magic = VXGE_HW_DEVICE_DEAD;
550 free(hldev);
551}
552
553/*
554 *vxge_hw_ring_replenish - Initial replenish of RxDs
555 * This function replenishes the RxDs from reserve array to work array
556 */
559{
560 struct __vxge_hw_device *hldev;
561 struct vxge_hw_ring_rxd_1 *rxd;
563 u8 offset = 0;
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];
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],
597
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;
606iobuf_err:
607 return status;
608}
609
610/*
611 * __vxge_hw_ring_create - Create a Ring
612 * This function creates Ring and initializes it.
613 *
614 */
617 struct __vxge_hw_ring *ring)
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) {
649 goto exit;
650 }
651exit:
652 return status;
653}
654
655/*
656 * __vxge_hw_ring_delete - Removes the ring
657 * This function freeup the memory pool and removes the ring
658 */
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}
678
679/*
680 * _hw_legacy_swapper_set - Set the swapper bits for the legacy secion.
681 * Set the swapper bits appropriately for the legacy section.
682 */
734
735/*
736 * __vxge_hw_vpath_swapper_set - Set the swapper bits for the vpath.
737 * Set the swapper bits appropriately for the vpath.
738 */
741{
742 u64 val64;
743 vxge_trace();
744
745 if (__BYTE_ORDER != __BIG_ENDIAN) {
747 wmb();
750 wmb();
751 }
752 return VXGE_HW_OK;
753}
754
755/*
756 * __vxge_hw_kdfc_swapper_set - Set the swapper bits for the kdfc.
757 * Set the swapper bits appropriately for the vpath.
758 */
784
785/*
786 * vxge_hw_vpath_strip_fcs_check - Check for FCS strip.
787 */
790{
791 struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg;
793 int i = 0, j = 0;
794
795 for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
796 if (!((vpath_mask) & vxge_mBIT(i)))
797 continue;
798 vpmgmt_reg = hldev->vpmgmt_reg[i];
799 for (j = 0; j < VXGE_HW_MAC_MAX_MAC_PORT_ID; j++) {
800 if (readq(&vpmgmt_reg->rxmac_cfg0_port_vpmgmt_clone[j])
802 return VXGE_HW_FAIL;
803 }
804 }
805 return status;
806}
807
808/*
809 * __vxge_hw_fifo_create - Create a FIFO
810 * This function creates FIFO and initializes it.
811 */
814 struct __vxge_hw_fifo *fifo)
815{
817
818 vxge_trace();
819
820 fifo->vpathh = vpath;
822 fifo->hw_offset = fifo->sw_offset = 0;
823 fifo->nofl_db = vpath->nofl_db;
824 fifo->vp_id = vpath->vp_id;
825 fifo->vp_reg = vpath->vp_reg;
826 fifo->tx_intr_num = (vpath->vp_id * VXGE_HW_MAX_INTR_PER_VP)
828
829 fifo->txdl = malloc_phys(sizeof(struct vxge_hw_fifo_txd)
830 * fifo->depth, fifo->depth);
831 if (!fifo->txdl) {
832 vxge_debug(VXGE_ERR, "%s:%d malloc_phys error\n",
833 __func__, __LINE__);
835 }
836 memset(fifo->txdl, 0, sizeof(struct vxge_hw_fifo_txd) * fifo->depth);
837 return status;
838}
839
840/*
841 * __vxge_hw_fifo_delete - Removes the FIFO
842 * This function freeup the memory pool and removes the FIFO
843 */
845{
846 vxge_trace();
847
848 if (fifo->txdl)
849 free_phys(fifo->txdl,
850 sizeof(struct vxge_hw_fifo_txd) * fifo->depth);
851
852 fifo->txdl = NULL;
853 fifo->hw_offset = fifo->sw_offset = 0;
854
855 return VXGE_HW_OK;
856}
857
858/*
859 * __vxge_hw_vpath_pci_read - Read the content of given address
860 * in pci config space.
861 * Read from the vpath pci config space.
862 */
865 u32 phy_func_0, u32 offset, u32 *val)
866{
867 u64 val64;
869 struct vxge_hw_vpath_reg __iomem *vp_reg = vpath->vp_reg;
870
872
873 if (phy_func_0)
875
876 writeq(val64, &vp_reg->pci_config_access_cfg1);
877 wmb();
879 &vp_reg->pci_config_access_cfg2);
880 wmb();
881
883 &vp_reg->pci_config_access_cfg2,
885
886 if (status != VXGE_HW_OK)
887 goto exit;
888
889 val64 = readq(&vp_reg->pci_config_access_status);
890
893 *val = 0;
894 } else
895 *val = (u32)vxge_bVALn(val64, 32, 32);
896exit:
897 return status;
898}
899
900/*
901 * __vxge_hw_vpath_func_id_get - Get the function id of the vpath.
902 * Returns the function number of the vpath.
903 */
904u32
906{
907 u64 val64;
908
909 val64 = readq(&vpmgmt_reg->vpath_to_func_map_cfg1);
910
911 return
913}
914
915/*
916 * __vxge_hw_read_rts_ds - Program RTS steering critieria
917 */
918static inline void
920 u64 dta_struct_sel)
921{
922 writeq(0, &vpath_reg->rts_access_steer_ctrl);
923 wmb();
924 writeq(dta_struct_sel, &vpath_reg->rts_access_steer_data0);
925 writeq(0, &vpath_reg->rts_access_steer_data1);
926 wmb();
927 return;
928}
929
930/*
931 * __vxge_hw_vpath_card_info_get - Get the serial numbers,
932 * part number and product description.
933 */
936 struct vxge_hw_vpath_reg __iomem *vpath_reg,
937 struct vxge_hw_device_hw_info *hw_info)
938{
939 u32 i, j;
940 u64 val64;
941 u64 data1 = 0ULL;
942 u64 data2 = 0ULL;
944 u8 *serial_number = hw_info->serial_number;
945 u8 *part_number = hw_info->part_number;
946 u8 *product_desc = hw_info->product_desc;
947
948 __vxge_hw_read_rts_ds(vpath_reg,
950
957
959 &vpath_reg->rts_access_steer_ctrl,
962
963 if (status != VXGE_HW_OK)
964 return status;
965
966 val64 = readq(&vpath_reg->rts_access_steer_ctrl);
967
969 data1 = readq(&vpath_reg->rts_access_steer_data0);
970 ((u64 *)serial_number)[0] = be64_to_cpu(data1);
971
972 data2 = readq(&vpath_reg->rts_access_steer_data1);
973 ((u64 *)serial_number)[1] = be64_to_cpu(data2);
975 } else
976 *serial_number = 0;
977
978 __vxge_hw_read_rts_ds(vpath_reg,
980
987
989 &vpath_reg->rts_access_steer_ctrl,
992
993 if (status != VXGE_HW_OK)
994 return status;
995
996 val64 = readq(&vpath_reg->rts_access_steer_ctrl);
997
999
1000 data1 = readq(&vpath_reg->rts_access_steer_data0);
1001 ((u64 *)part_number)[0] = be64_to_cpu(data1);
1002
1003 data2 = readq(&vpath_reg->rts_access_steer_data1);
1004 ((u64 *)part_number)[1] = be64_to_cpu(data2);
1005
1007
1008 } else
1009 *part_number = 0;
1010
1011 j = 0;
1012
1015
1016 __vxge_hw_read_rts_ds(vpath_reg, i);
1017
1024
1026 &vpath_reg->rts_access_steer_ctrl,
1029
1030 if (status != VXGE_HW_OK)
1031 return status;
1032
1033 val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1034
1036
1037 data1 = readq(&vpath_reg->rts_access_steer_data0);
1038 ((u64 *)product_desc)[j++] = be64_to_cpu(data1);
1039
1040 data2 = readq(&vpath_reg->rts_access_steer_data1);
1041 ((u64 *)product_desc)[j++] = be64_to_cpu(data2);
1042
1044 } else
1045 *product_desc = 0;
1046 }
1047
1048 return status;
1049}
1050
1051/*
1052 * __vxge_hw_vpath_fw_ver_get - Get the fw version
1053 * Returns FW Version
1054 */
1055enum vxge_hw_status
1057 struct vxge_hw_vpath_reg __iomem *vpath_reg,
1058 struct vxge_hw_device_hw_info *hw_info)
1059{
1060 u64 val64;
1061 u64 data1 = 0ULL;
1062 u64 data2 = 0ULL;
1063 struct vxge_hw_device_version *fw_version = &hw_info->fw_version;
1064 struct vxge_hw_device_date *fw_date = &hw_info->fw_date;
1065 struct vxge_hw_device_version *flash_version = &hw_info->flash_version;
1066 struct vxge_hw_device_date *flash_date = &hw_info->flash_date;
1068
1075
1077 &vpath_reg->rts_access_steer_ctrl,
1080
1081 if (status != VXGE_HW_OK)
1082 goto exit;
1083
1084 val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1085
1087
1088 data1 = readq(&vpath_reg->rts_access_steer_data0);
1089 data2 = readq(&vpath_reg->rts_access_steer_data1);
1090
1091 fw_date->day =
1093 data1);
1094 fw_date->month =
1096 data1);
1097 fw_date->year =
1099 data1);
1100
1101 snprintf(fw_date->date, VXGE_HW_FW_STRLEN, "%d/%d/%d",
1102 fw_date->month, fw_date->day, fw_date->year);
1103
1104 fw_version->major =
1106 fw_version->minor =
1108 fw_version->build =
1110
1111 snprintf(fw_version->version, VXGE_HW_FW_STRLEN, "%d.%d.%d",
1112 fw_version->major, fw_version->minor, fw_version->build);
1113
1114 flash_date->day =
1116 flash_date->month =
1118 flash_date->year =
1120
1121 snprintf(flash_date->date, VXGE_HW_FW_STRLEN, "%d/%d/%d",
1122 flash_date->month, flash_date->day, flash_date->year);
1123
1124 flash_version->major =
1126 flash_version->minor =
1128 flash_version->build =
1130
1131 snprintf(flash_version->version, VXGE_HW_FW_STRLEN, "%d.%d.%d",
1132 flash_version->major, flash_version->minor,
1133 flash_version->build);
1134
1136
1137 } else
1139exit:
1140 return status;
1141}
1142
1143/*
1144 * __vxge_hw_vpath_addr_get - Get the hw address entry for this vpath
1145 * from MAC address table.
1146 */
1147enum vxge_hw_status
1149 struct vxge_hw_vpath_reg *vpath_reg,
1150 u8 (macaddr)[ETH_ALEN], u8 (macaddr_mask)[ETH_ALEN])
1151{
1152 u32 i;
1153 u64 val64;
1154 u64 data1 = 0ULL;
1155 u64 data2 = 0ULL;
1158
1159 while (1) {
1160 val64 = VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(action) |
1165
1167 &vpath_reg->rts_access_steer_ctrl,
1170
1171 if (status != VXGE_HW_OK)
1172 break;
1173
1174 val64 = readq(&vpath_reg->rts_access_steer_ctrl);
1175
1177
1178 data1 = readq(&vpath_reg->rts_access_steer_data0);
1179 data2 = readq(&vpath_reg->rts_access_steer_data1);
1180
1181 data1 =
1183 data2 =
1185 data2);
1186
1187 for (i = ETH_ALEN; i > 0; i--) {
1188 macaddr[i-1] = (u8)(data1 & 0xFF);
1189 data1 >>= 8;
1190
1191 macaddr_mask[i-1] = (u8)(data2 & 0xFF);
1192 data2 >>= 8;
1193 }
1194 if (is_valid_ether_addr(macaddr)) {
1196 break;
1197 }
1198 action =
1200 } else
1202 }
1203
1204 return status;
1205}
1206
1207/*
1208 * __vxge_hw_vpath_mgmt_read
1209 * This routine reads the vpath_mgmt registers
1210 */
1211static enum vxge_hw_status
1213 struct __vxge_hw_virtualpath *vpath)
1214{
1215 u32 i, mtu = 0, max_pyld = 0;
1216 u64 val64;
1218
1219 for (i = 0; i < VXGE_HW_MAC_MAX_MAC_PORT_ID; i++) {
1220
1221 val64 = readq(&vpath->vpmgmt_reg->
1223 max_pyld =
1224 (u32)
1226 (val64);
1227 if (mtu < max_pyld)
1228 mtu = max_pyld;
1229 }
1230
1232
1234
1237 else
1239
1240 return status;
1241}
1242
1243/*
1244 * __vxge_hw_vpath_reset_check - Check if resetting the vpath completed
1245 * This routine checks the vpath_rst_in_prog register to see if
1246 * adapter completed the reset process for the vpath
1247 */
1248enum vxge_hw_status
1263
1264/*
1265 * __vxge_hw_vpath_reset
1266 * This routine resets the vpath on the device
1267 */
1268enum vxge_hw_status
1270{
1271 u64 val64;
1273
1274 vxge_trace();
1275
1276 val64 = VXGE_HW_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(1 << (16 - vp_id));
1277
1279 &hldev->common_reg->cmn_rsthdlr_cfg0);
1280
1281 return status;
1282}
1283
1284/*
1285 * __vxge_hw_vpath_prc_configure
1286 * This routine configures the prc registers of virtual path using the config
1287 * passed
1288 */
1289void
1291{
1292 u64 val64;
1293 struct __vxge_hw_virtualpath *vpath;
1294 struct vxge_hw_vpath_reg __iomem *vp_reg;
1295
1296 vxge_trace();
1297
1298 vpath = &hldev->virtual_path;
1299 vp_reg = vpath->vp_reg;
1300
1301 val64 = readq(&vp_reg->prc_cfg1);
1303 writeq(val64, &vp_reg->prc_cfg1);
1304
1305 val64 = readq(&vpath->vp_reg->prc_cfg6);
1306 val64 &= ~VXGE_HW_PRC_CFG6_RXD_CRXDT(0x1ff);
1307 val64 &= ~VXGE_HW_PRC_CFG6_RXD_SPAT(0x1ff);
1309 val64 |= VXGE_HW_PRC_CFG6_RXD_CRXDT(0x3);
1310 val64 |= VXGE_HW_PRC_CFG6_RXD_SPAT(0xf);
1311 writeq(val64, &vpath->vp_reg->prc_cfg6);
1312
1314 (u64)virt_to_bus(vpath->ringh.rxdl) >> 3),
1315 &vp_reg->prc_cfg5);
1316
1317 val64 = readq(&vp_reg->prc_cfg4);
1318 val64 |= VXGE_HW_PRC_CFG4_IN_SVC;
1319 val64 &= ~VXGE_HW_PRC_CFG4_RING_MODE(0x3);
1323
1324 writeq(val64, &vp_reg->prc_cfg4);
1325 return;
1326}
1327
1328/*
1329 * __vxge_hw_vpath_kdfc_configure
1330 * This routine configures the kdfc registers of virtual path using the
1331 * config passed
1332 */
1333enum vxge_hw_status
1335{
1336 u64 val64;
1337 u64 vpath_stride;
1339 struct __vxge_hw_virtualpath *vpath;
1340 struct vxge_hw_vpath_reg __iomem *vp_reg;
1341
1342 vxge_trace();
1343
1344 vpath = &hldev->virtual_path;
1345 vp_reg = vpath->vp_reg;
1347
1348 if (status != VXGE_HW_OK)
1349 goto exit;
1350
1351 val64 = readq(&vp_reg->kdfc_drbl_triplet_total);
1352
1353 vpath->max_kdfc_db =
1355 val64+1)/2;
1356
1357 vpath->max_nofl_db = vpath->max_kdfc_db;
1358
1360 (vpath->max_nofl_db*2)-1);
1361
1362 writeq(val64, &vp_reg->kdfc_fifo_trpl_partition);
1363
1365 &vp_reg->kdfc_fifo_trpl_ctrl);
1366
1367 val64 = readq(&vp_reg->kdfc_trpl_fifo_0_ctrl);
1368
1369 val64 &= ~(VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE(0x3) |
1371
1377
1378 writeq(val64, &vp_reg->kdfc_trpl_fifo_0_ctrl);
1380 wmb();
1381 vpath_stride = readq(&hldev->toc_reg->toc_kdfc_vpath_stride);
1382
1383 vpath->nofl_db =
1385 (hldev->kdfc + (vp_id *
1387 vpath_stride)));
1388exit:
1389 return status;
1390}
1391
1392/*
1393 * __vxge_hw_vpath_mac_configure
1394 * This routine configures the mac of virtual path using the config passed
1395 */
1396enum vxge_hw_status
1398{
1399 u64 val64;
1401 struct __vxge_hw_virtualpath *vpath;
1402 struct vxge_hw_vpath_reg __iomem *vp_reg;
1403
1404 vxge_trace();
1405
1406 vpath = &hldev->virtual_path;
1407 vp_reg = vpath->vp_reg;
1408
1410 vpath->vsport_number), &vp_reg->xmac_vsport_choice);
1411
1412 val64 = readq(&vp_reg->rxmac_vcfg1);
1413
1416
1417 writeq(val64, &vp_reg->rxmac_vcfg1);
1418 return status;
1419}
1420
1421/*
1422 * __vxge_hw_vpath_tim_configure
1423 * This routine configures the tim registers of virtual path using the config
1424 * passed
1425 */
1426enum vxge_hw_status
1428{
1429 u64 val64;
1431 struct __vxge_hw_virtualpath *vpath;
1432 struct vxge_hw_vpath_reg __iomem *vp_reg;
1433
1434 vxge_trace();
1435
1436 vpath = &hldev->virtual_path;
1437 vp_reg = vpath->vp_reg;
1438
1439 writeq((u64)0, &vp_reg->tim_dest_addr);
1440 writeq((u64)0, &vp_reg->tim_vpath_map);
1441 writeq((u64)0, &vp_reg->tim_bitmap);
1442 writeq((u64)0, &vp_reg->tim_remap);
1443
1445 (vp_id * VXGE_HW_MAX_INTR_PER_VP) +
1447
1448 val64 = readq(&vp_reg->tim_pci_cfg);
1450 writeq(val64, &vp_reg->tim_pci_cfg);
1451
1452 /* TX configuration */
1454 (VXGE_TTI_BTIMER_VAL * 1000) / 272);
1462
1468
1472 (VXGE_TTI_LTIMER_VAL * 1000) / 272);
1474
1475 /* RX configuration */
1477 (VXGE_RTI_BTIMER_VAL * 1000) / 272);
1483
1489
1493 (VXGE_RTI_LTIMER_VAL * 1000) / 272);
1495
1496 val64 = 0;
1503
1504 return status;
1505}
1506
1507/*
1508 * __vxge_hw_vpath_initialize
1509 * This routine is the final phase of init which initializes the
1510 * registers of the vpath using the configuration passed.
1511 */
1512enum vxge_hw_status
1514{
1515 u64 val64;
1516 u32 val32;
1517 int i;
1519 struct __vxge_hw_virtualpath *vpath;
1520 struct vxge_hw_vpath_reg *vp_reg;
1521
1522 vxge_trace();
1523
1524 vpath = &hldev->virtual_path;
1525
1526 if (!(hldev->vpath_assignments & vxge_mBIT(vp_id))) {
1528 goto exit;
1529 }
1530 vp_reg = vpath->vp_reg;
1532 if (status != VXGE_HW_OK)
1533 goto exit;
1534
1536
1537 if (status != VXGE_HW_OK)
1538 goto exit;
1539 val64 = readq(&vpath->vpmgmt_reg->xmac_vsport_choices_vp);
1540
1541 for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) {
1542 if (val64 & vxge_mBIT(i))
1543 vpath->vsport_number = i;
1544 }
1545
1547
1548 if (status != VXGE_HW_OK)
1549 goto exit;
1550
1551 status = __vxge_hw_vpath_kdfc_configure(hldev, vp_id);
1552
1553 if (status != VXGE_HW_OK)
1554 goto exit;
1555
1556 status = __vxge_hw_vpath_tim_configure(hldev, vp_id);
1557
1558 if (status != VXGE_HW_OK)
1559 goto exit;
1560
1561 val64 = readq(&vp_reg->rtdma_rd_optimization_ctrl);
1562
1563 /* Get MRRS value from device control */
1564 status = __vxge_hw_vpath_pci_read(vpath, 1, 0x78, &val32);
1565
1566 if (status == VXGE_HW_OK) {
1567 val32 = (val32 & VXGE_HW_PCI_EXP_DEVCTL_READRQ) >> 12;
1568 val64 &=
1570 val64 |=
1572
1574 }
1575
1577 val64 |=
1580
1582 writeq(val64, &vp_reg->rtdma_rd_optimization_ctrl);
1583
1584exit:
1585 return status;
1586}
1587
1588/*
1589 * __vxge_hw_vp_initialize - Initialize Virtual Path structure
1590 * This routine is the initial phase of init which resets the vpath and
1591 * initializes the software support structures.
1592 */
1593enum vxge_hw_status
1595 struct __vxge_hw_virtualpath *vpath)
1596{
1598
1599 vxge_trace();
1600
1601 if (!(hldev->vpath_assignments & vxge_mBIT(vp_id))) {
1603 goto exit;
1604 }
1605
1606 vpath->vp_id = vp_id;
1607 vpath->vp_open = VXGE_HW_VP_OPEN;
1608 vpath->hldev = hldev;
1609 vpath->vp_reg = hldev->vpath_reg[vp_id];
1610 vpath->vpmgmt_reg = hldev->vpmgmt_reg[vp_id];
1611
1612 __vxge_hw_vpath_reset(hldev, vp_id);
1613
1615 if (status != VXGE_HW_OK) {
1616 memset(vpath, 0, sizeof(struct __vxge_hw_virtualpath));
1617 goto exit;
1618 }
1619
1621 hldev->tim_int_mask1, vp_id);
1622
1623 status = __vxge_hw_vpath_initialize(hldev, vp_id);
1624
1625 if (status != VXGE_HW_OK) {
1626 __vxge_hw_vp_terminate(hldev, vpath);
1627 goto exit;
1628 }
1629
1631exit:
1632 return status;
1633}
1634
1635/*
1636 * __vxge_hw_vp_terminate - Terminate Virtual Path structure
1637 * This routine closes all channels it opened and freeup memory
1638 */
1639void
1641 struct __vxge_hw_virtualpath *vpath)
1642{
1643 vxge_trace();
1644
1645 if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN)
1646 return;
1647
1649 hldev->tim_int_mask1, vpath->vp_id);
1650
1651 memset(vpath, 0, sizeof(struct __vxge_hw_virtualpath));
1652}
1653
1654/*
1655 * vxge_hw_vpath_mtu_set - Set MTU.
1656 * Set new MTU value. Example, to use jumbo frames:
1657 * vxge_hw_vpath_mtu_set(my_device, 9600);
1658 */
1659enum vxge_hw_status
1661{
1662 u64 val64;
1664
1665 vxge_trace();
1666
1667 new_mtu += VXGE_HW_MAC_HEADER_MAX_SIZE;
1668
1669 if ((new_mtu < VXGE_HW_MIN_MTU) || (new_mtu > vpath->max_mtu))
1671
1672 val64 = readq(&vpath->vp_reg->rxmac_vcfg0);
1673
1674 val64 &= ~VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff);
1675 val64 |= VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(new_mtu);
1676
1677 writeq(val64, &vpath->vp_reg->rxmac_vcfg0);
1678
1679 return status;
1680}
1681
1682/*
1683 * vxge_hw_vpath_open - Open a virtual path on a given adapter
1684 * This function is used to open access to virtual path of an
1685 * adapter for offload, GRO operations. This function returns
1686 * synchronously.
1687 */
1688enum vxge_hw_status
1690{
1691 struct __vxge_hw_virtualpath *vpathh;
1693
1694 vxge_trace();
1695
1696 vpathh = &hldev->virtual_path;
1697
1698 if (vpath->vp_open == VXGE_HW_VP_OPEN) {
1700 goto vpath_open_exit1;
1701 }
1702
1704 if (status != VXGE_HW_OK)
1705 goto vpath_open_exit1;
1706
1707 status = __vxge_hw_fifo_create(vpathh, &vpathh->fifoh);
1708 if (status != VXGE_HW_OK)
1709 goto vpath_open_exit2;
1710
1711 status = __vxge_hw_ring_create(vpathh, &vpathh->ringh);
1712 if (status != VXGE_HW_OK)
1713 goto vpath_open_exit3;
1714
1716
1717 return VXGE_HW_OK;
1718
1719vpath_open_exit3:
1720 __vxge_hw_fifo_delete(&vpathh->fifoh);
1721vpath_open_exit2:
1723vpath_open_exit1:
1724 return status;
1725}
1726
1727/*
1728 * vxge_hw_vpath_rx_doorbell_init - Post the count of the refreshed region
1729 * of RxD list
1730 * @vp: vpath handle
1731 *
1732 * This function decides on the Rxd replenish count depending on the
1733 * descriptor memory that has been allocated to this VPath.
1734 */
1735void
1737{
1738 u64 new_count, val64;
1739
1740 vxge_trace();
1741
1742 if (vpath->hldev->titan1) {
1743 new_count = readq(&vpath->vp_reg->rxdmem_size);
1744 new_count &= 0x1fff;
1745 } else
1746 new_count = VXGE_HW_RING_RXD_QWORDS_MODE_1 * 4;
1747
1748 val64 = (VXGE_HW_RXDMEM_SIZE_PRC_RXDMEM_SIZE(new_count));
1749
1751 &vpath->vp_reg->prc_rxd_doorbell);
1752}
1753
1754/*
1755 * vxge_hw_vpath_close - Close the handle got from previous vpath (vpath) open
1756 * This function is used to close access to virtual path opened
1757 * earlier.
1758 */
1760{
1761 struct __vxge_hw_device *devh = NULL;
1762 u32 vp_id = vpath->vp_id;
1764
1765 vxge_trace();
1766
1767 devh = vpath->hldev;
1768
1769 if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1771 goto vpath_close_exit;
1772 }
1773
1774 devh->vpaths_deployed &= ~vxge_mBIT(vp_id);
1775
1777
1779
1780 __vxge_hw_vp_terminate(devh, vpath);
1781
1783
1784vpath_close_exit:
1785 return status;
1786}
1787
1788/*
1789 * vxge_hw_vpath_reset - Resets vpath
1790 * This function is used to request a reset of vpath
1791 */
1793{
1795 u32 vp_id;
1796
1797 vxge_trace();
1798
1799 vp_id = vpath->vp_id;
1800
1801 if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1803 goto exit;
1804 }
1805
1806 status = __vxge_hw_vpath_reset(vpath->hldev, vp_id);
1807exit:
1808 return status;
1809}
1810
1811/*
1812 * vxge_hw_vpath_recover_from_reset - Poll for reset complete and re-initialize.
1813 * This function poll's for the vpath reset completion and re initializes
1814 * the vpath.
1815 */
1816enum vxge_hw_status
1818{
1820 struct __vxge_hw_device *hldev;
1821 u32 vp_id;
1822
1823 vxge_trace();
1824
1825 vp_id = vpath->vp_id;
1826 hldev = vpath->hldev;
1827
1828 if (vpath->vp_open == VXGE_HW_VP_NOT_OPEN) {
1830 goto exit;
1831 }
1832
1834 if (status != VXGE_HW_OK)
1835 goto exit;
1836
1837 status = __vxge_hw_vpath_initialize(hldev, vp_id);
1838 if (status != VXGE_HW_OK)
1839 goto exit;
1840
1842
1843exit:
1844 return status;
1845}
1846
1847/*
1848 * vxge_hw_vpath_enable - Enable vpath.
1849 * This routine clears the vpath reset thereby enabling a vpath
1850 * to start forwarding frames and generating interrupts.
1851 */
1852void
1854{
1855 struct __vxge_hw_device *hldev;
1856 u64 val64;
1857
1858 vxge_trace();
1859
1860 hldev = vpath->hldev;
1861
1863 1 << (16 - vpath->vp_id));
1864
1866 &hldev->common_reg->cmn_rsthdlr_cfg1);
1867}
#define NULL
NULL pointer (VOID *).
Definition Base.h:321
struct golan_eqe_cmd cmd
Definition CIB_PRM.h:1
__be16 func_id
Definition CIB_PRM.h:2
u32 data1
Definition ar9003_mac.h:4
u32 data0
Definition ar9003_mac.h:2
u32 data2
Definition ar9003_mac.h:6
#define __BYTE_ORDER
Definition endian.h:7
#define assert(condition)
Assert a condition at run-time.
Definition assert.h:61
uint16_t offset
Offset to command line.
Definition bzimage.h:3
#define rxd
Definition davicom.c:146
#define ARRAY_SIZE(x)
Definition efx_common.h:43
uint32_t mtu
Maximum MTU.
Definition ena.h:17
uint8_t status
Status.
Definition ena.h:5
Ethernet protocol.
static int is_valid_ether_addr(const void *addr)
Check if Ethernet address is valid.
Definition ethernet.h:78
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:921
#define ETH_ALEN
Definition if_ether.h:9
#define u8
Definition igbvf_osdep.h:40
#define __iomem
Definition igbvf_osdep.h:46
#define be64_to_cpu(value)
Definition byteswap.h:118
#define __BIG_ENDIAN
Constant representing big-endian byte order.
Definition endian.h:22
#define wmb()
Definition io.h:546
#define readq(io_addr)
Definition io.h:234
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition io.h:184
#define writeq(data, io_addr)
Definition io.h:273
int pci_read_config_word(struct pci_device *pci, unsigned int where, uint16_t *value)
Read 16-bit word from PCI configuration space.
int pci_write_config_word(struct pci_device *pci, unsigned int where, uint16_t value)
Write 16-bit word to PCI configuration space.
void __asmcall int val
Definition setjmp.h:12
uint64_t u64
Definition stdint.h:26
String functions.
void * memset(void *dest, int character, size_t len) __nonnull
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition iobuf.c:153
struct io_buffer * alloc_iob(size_t len)
Allocate I/O buffer.
Definition iobuf.c:131
I/O buffers.
void * zalloc(size_t size)
Allocate cleared memory.
Definition malloc.c:718
void * malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition malloc.c:789
void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys().
Definition malloc.c:805
Dynamic memory allocation.
uint8_t block[3][8]
DES-encrypted blocks.
Definition mschapv2.h:1
static unsigned int unsigned int reg
Definition myson.h:162
unsigned long pci_bar_size(struct pci_device *pci, unsigned int reg)
Get the size of a PCI BAR.
Definition pci.c:178
PCI bus.
#define PCI_BASE_ADDRESS_0
Definition pci.h:63
#define PCI_COMMAND
PCI command.
Definition pci.h:26
static void(* free)(struct refcnt *refcnt))
Definition refcnt.h:55
struct __vxge_hw_device - Hal device object @magic: Magic Number @bar0: BAR0 virtual address.
struct vxge_hw_srpcim_reg * srpcim_reg[VXGE_HW_TITAN_SRPCIM_REG_SPACES]
struct vxge_hw_toc_reg * toc_reg
struct vxge_hw_common_reg * common_reg
struct vxge_hw_mrpcim_reg * mrpcim_reg
struct vxge_hw_legacy_reg * legacy_reg
struct vxge_hw_vpmgmt_reg * vpmgmt_reg[VXGE_HW_TITAN_VPMGMT_REG_SPACES]
struct vxge_hw_vpath_reg * vpath_reg[VXGE_HW_TITAN_VPATH_REG_SPACES]
struct __vxge_hw_virtualpath virtual_path
struct pci_device * pdev
struct vxgedev * vdev
void __iomem * bar0
struct vxge_hw_vpath_reg * vp_reg
struct __vxge_hw_non_offload_db_wrapper * nofl_db
struct __vxge_hw_virtualpath * vpathh
struct vxge_hw_fifo_txd * txdl
struct vxge_hw_ring_rxd_1 rxd[VXGE_HW_MAX_RXDS_PER_BLOCK_1]
struct vxge_hw_vpath_reg * vp_reg
struct io_buffer * iobuf[VXGE_HW_RING_BUF_PER_BLOCK+1]
struct __vxge_hw_ring_block * rxdl
struct vxge_hw_common_reg * common_reg
struct __vxge_hw_virtualpath * vpathh
struct vxge_hw_vpmgmt_reg * vpmgmt_reg
struct vxge_hw_vpath_reg * vp_reg
struct __vxge_hw_fifo fifoh
struct __vxge_hw_ring ringh
struct __vxge_hw_non_offload_db_wrapper * nofl_db
struct __vxge_hw_device * hldev
A PCI device.
Definition pci.h:214
char date[VXGE_HW_FW_STRLEN]
struct vxge_hw_device_hw_info - Device information @host_type: Host Type @func_id: Function Id @vpath...
struct vxge_hw_device_version flash_version
struct vxge_hw_device_date flash_date
u8 serial_number[VXGE_HW_INFO_LEN]
u8 product_desc[VXGE_HW_INFO_LEN]
struct vxge_hw_device_version fw_version
struct vxge_hw_device_date fw_date
u8 part_number[VXGE_HW_INFO_LEN]
char version[VXGE_HW_FW_STRLEN]
struct vxge_hw_fifo_txd - Transmit Descriptor
struct vxge_hw_ring_rxd_1 - One buffer mode RxD for ring
u64 toc_mrpcim_pointer
Definition vxge_reg.h:677
u64 toc_common_pointer
Definition vxge_reg.h:669
u64 toc_vpath_pointer[17]
Definition vxge_reg.h:687
u64 toc_kdfc_vpath_stride
Definition vxge_reg.h:697
u64 toc_vpmgmt_pointer[17]
Definition vxge_reg.h:683
u64 toc_srpcim_pointer[17]
Definition vxge_reg.h:679
u64 rtdma_rd_optimization_ctrl
Definition vxge_reg.h:4259
u64 tim_cfg3_int_num[4]
Definition vxge_reg.h:4301
u64 tim_cfg1_int_num[4]
Definition vxge_reg.h:4286
u64 pci_config_access_status
Definition vxge_reg.h:4653
u64 kdfc_drbl_triplet_total
Definition vxge_reg.h:4167
u64 kdfc_trpl_fifo_0_wb_address
Definition vxge_reg.h:4157
u64 tim_cfg2_int_num[4]
Definition vxge_reg.h:4296
u64 kdfc_fifo_trpl_partition
Definition vxge_reg.h:4116
u64 xgmac_gen_status_vpmgmt_clone
Definition vxge_reg.h:3950
u64 rxmac_cfg0_port_vpmgmt_clone[3]
Definition vxge_reg.h:3916
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition timer.c:61
#define u16
Definition vga.h:20
#define u32
Definition vga.h:21
int snprintf(char *buf, size_t size, const char *fmt,...)
Write a formatted string to a buffer.
Definition vsprintf.c:383
void vxge_hw_vpath_enable(struct __vxge_hw_virtualpath *vpath)
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)
void vxge_hw_device_terminate(struct __vxge_hw_device *hldev)
enum vxge_hw_status vxge_hw_vpath_mtu_set(struct __vxge_hw_virtualpath *vpath, u32 new_mtu)
enum vxge_hw_status __vxge_hw_fifo_delete(struct __vxge_hw_fifo *fifo)
void __vxge_hw_vpath_prc_configure(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)
Definition vxge_config.c:48
enum vxge_hw_status __vxge_hw_device_reg_addr_get(struct __vxge_hw_device *hldev)
enum vxge_hw_status vxge_hw_get_func_mode(struct __vxge_hw_device *hldev, u32 *func_mode)
Definition vxge_config.c:98
enum vxge_hw_status vxge_hw_device_initialize(struct __vxge_hw_device **devh, void *bar0, struct pci_device *pdev, u8 titan1)
enum vxge_hw_status vxge_hw_vpath_recover_from_reset(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status __vxge_hw_vpath_mac_configure(struct __vxge_hw_device *hldev)
enum vxge_hw_status __vxge_hw_vpath_reset(struct __vxge_hw_device *hldev, u32 vp_id)
void __vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev)
enum vxge_hw_status vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask)
enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_ring *ring)
struct vxge_hw_toc_reg __iomem * __vxge_hw_device_toc_get(void __iomem *bar0, struct vxge_hw_legacy_reg __iomem *legacy_reg)
void vxge_hw_vpath_set_zero_rx_frm_len(struct __vxge_hw_device *hldev)
Definition vxge_config.c:31
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_reset_check(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status vxge_hw_vpath_reset(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status __vxge_hw_fifo_create(struct __vxge_hw_virtualpath *vpath, 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)
enum vxge_hw_status __vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
void __vxge_hw_vp_terminate(struct __vxge_hw_device *hldev, struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status vxge_hw_ring_replenish(struct __vxge_hw_ring *ring)
enum vxge_hw_status __vxge_hw_vp_initialize(struct __vxge_hw_device *hldev, u32 vp_id, struct __vxge_hw_virtualpath *vpath)
static enum vxge_hw_status __vxge_hw_vpath_mgmt_read(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status vxge_hw_vpath_open(struct __vxge_hw_device *hldev, struct vxge_vpath *vpath)
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 ...
enum vxge_hw_status __vxge_hw_vpath_kdfc_configure(struct __vxge_hw_device *hldev, u32 vp_id)
enum vxge_hw_status vxge_hw_vpath_close(struct __vxge_hw_virtualpath *vpath)
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])
enum vxge_hw_status __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
enum vxge_hw_status __vxge_hw_ring_create(struct __vxge_hw_virtualpath *vpath, struct __vxge_hw_ring *ring)
enum vxge_hw_status __vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
static struct vxge_hw_legacy_reg __iomem * __vxge_hw_device_get_legacy_reg(struct pci_device *pdev, void __iomem *bar0)
enum vxge_hw_status __vxge_hw_vpath_initialize(struct __vxge_hw_device *hldev, u32 vp_id)
static u32 __vxge_hw_device_access_rights_get(u32 host_type, u32 func_id)
void __vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev)
void vxge_hw_vpath_rx_doorbell_init(struct __vxge_hw_virtualpath *vpath)
enum vxge_hw_status __vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
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_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
u32 __vxge_hw_vpath_func_id_get(struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_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)
static void __vxge_hw_pio_mem_write32_upper(u32 val, void __iomem *addr)
#define VXGE_HW_RING_RXD_QWORD_LIMIT
#define WAIT_FACTOR
Definition vxge_config.h:28
@ VXGE_HW_LINK_UP
@ VXGE_HW_LINK_DOWN
#define VXGE_HW_MIN_MTU
Definition vxge_config.h:34
#define VXGE_HW_NO_MR_SR_VH0_FUNCTION0
#define VXGE_HW_MAX_PAYLOAD_SIZE_512
Definition vxge_config.h:68
#define VXGE_HW_FIFO_TXD_DEPTH
#define VXGE_HW_VH_NORMAL_FUNCTION
#define vxge_debug(mask, fmt...)
#define VXGE_HW_DEVICE_TIM_INT_MASK_SET(m0, m1, i)
#define VXGE_HW_MR_SR_VH0_INVALID_CONFIG
#define VXGE_HW_DEVICE_ACCESS_RIGHT_VPATH
static enum vxge_hw_status __vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr, u64 mask, u32 max_millis)
#define VXGE_HW_VP_OPEN
#define VXGE_HW_DEVICE_TIM_INT_MASK_RESET(m0, m1, i)
#define vxge_trace()
#define VXGE_HW_FW_STRLEN
struct vxge_hw_device_date - Date Format @day: Day @month: Month @year: Year
#define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls)
#define VXGE_ERR
Definition vxge_config.h:54
#define VXGE_HW_SR_VH_VIRTUAL_FUNCTION
#define VXGE_HW_RING_RXD_QWORDS_MODE_1
#define VXGE_HW_RING_BUF_PER_BLOCK
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.
#define VXGE_HW_NO_MR_SR_VH0_VIRTUAL_FUNCTION
#define VXGE_HW_RING_RX_POLL_WEIGHT
vxge_hw_status
Definition vxge_config.h:70
@ VXGE_HW_ERR_SWAPPER_CTRL
Definition vxge_config.h:89
@ VXGE_HW_ERR_INVALID_MTU_SIZE
Definition vxge_config.h:90
@ VXGE_HW_ERR_VPATH_NOT_AVAILABLE
Definition vxge_config.h:86
@ VXGE_HW_FAIL
Definition vxge_config.h:72
@ VXGE_HW_OK
Definition vxge_config.h:71
@ VXGE_HW_ERR_OUT_OF_MEMORY
Definition vxge_config.h:85
@ VXGE_HW_ERR_INVALID_STATE
Definition vxge_config.h:99
@ VXGE_HW_ERR_CRITICAL
@ VXGE_HW_ERR_VPATH_NOT_OPEN
Definition vxge_config.h:87
#define VXGE_HW_DEVICE_DEAD
#define VXGE_HW_DEF_DEVICE_POLL_MILLIS
Definition vxge_config.h:67
#define VXGE_HW_DEVICE_MAGIC
#define VXGE_HW_NO_MR_NO_SR_NORMAL_FUNCTION
#define VXGE_HW_MR_NO_SR_VH0_BASE_FUNCTION
#define VXGE_HW_DEVICE_ACCESS_RIGHT_SRPCIM
#define VXGE_HW_MAX_RXDS_PER_BLOCK_1
#define VXGE_HW_VP_NOT_OPEN
#define VXGE_HW_SR_VH_FUNCTION0
#define VXGE_HW_DEVICE_ACCESS_RIGHT_MRPCIM
#define RTI_RX_UFC_C
Definition vxge_main.h:120
#define VXGE_TTI_LTIMER_VAL
Definition vxge_main.h:77
#define TTI_TX_URANGE_B
Definition vxge_main.h:94
#define VXGE_LL_MAX_FRAME_SIZE(dev)
Definition vxge_main.h:147
#define TTI_TX_URANGE_C
Definition vxge_main.h:95
#define TTI_TX_UFC_A
Definition vxge_main.h:96
#define RTI_RX_UFC_B
Definition vxge_main.h:119
#define TTI_TX_URANGE_A
Definition vxge_main.h:93
#define TTI_TX_UFC_C
Definition vxge_main.h:98
#define VXGE_RTI_BTIMER_VAL
Definition vxge_main.h:79
#define VXGE_RTI_LTIMER_VAL
Definition vxge_main.h:80
#define RTI_RX_UFC_A
Definition vxge_main.h:118
#define RTI_RX_URANGE_C
Definition vxge_main.h:114
#define RTI_RX_UFC_D
Definition vxge_main.h:121
#define TTI_TX_UFC_D
Definition vxge_main.h:99
#define TTI_TX_UFC_B
Definition vxge_main.h:97
#define RTI_RX_URANGE_A
Definition vxge_main.h:112
#define RTI_RX_URANGE_B
Definition vxge_main.h:113
#define VXGE_TTI_BTIMER_VAL
Definition vxge_main.h:73
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN
Definition vxge_reg.h:4270
#define VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_STRIP_FCS
Definition vxge_reg.h:3918
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val)
Definition vxge_reg.h:4206
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_OFFSET(val)
Definition vxge_reg.h:4211
#define VXGE_HW_PRC_CFG6_DOORBELL_MODE_EN
Definition vxge_reg.h:4082
#define VXGE_HW_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(bits)
Definition vxge_reg.h:47
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_STROBE
Definition vxge_reg.h:4207
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY
Definition vxge_reg.h:185
#define VXGE_HW_TIM_CFG3_INT_NUM_UTIL_SEL(val)
Definition vxge_reg.h:4305
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO
Definition vxge_reg.h:204
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_3
Definition vxge_reg.h:424
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO0
Definition vxge_reg.h:4593
#define VXGE_HW_TOC_GET_KDFC_INITIAL_OFFSET(val)
Definition vxge_reg.h:115
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_DAY(bits)
Definition vxge_reg.h:440
#define VXGE_HW_TITAN_VPATH_REG_SPACES
Definition vxge_reg.h:54
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO1
Definition vxge_reg.h:4594
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS
Definition vxge_reg.h:4210
#define VXGE_HW_VPATH_GENERAL_CFG1_CTL_BYTE_SWAPEN
Definition vxge_reg.h:4580
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_0
Definition vxge_reg.h:421
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_A(val)
Definition vxge_reg.h:4297
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_C(val)
Definition vxge_reg.h:4299
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_BUILD(bits)
Definition vxge_reg.h:479
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG1_ADDRESS(val)
Definition vxge_reg.h:4649
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(bits)
Definition vxge_reg.h:365
#define VXGE_HW_PRC_RXD_DOORBELL_NEW_QW_CNT(val)
Definition vxge_reg.h:4099
#define VXGE_HW_TITAN_VPMGMT_REG_SPACES
Definition vxge_reg.h:53
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_A(val)
Definition vxge_reg.h:4293
#define VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN(bits)
Definition vxge_reg.h:96
#define VXGE_HW_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(val)
Definition vxge_reg.h:859
#define VXGE_HW_TIM_CFG1_INT_NUM_TIMER_AC
Definition vxge_reg.h:4291
#define VXGE_HW_SWAPPER_WRITE_BYTE_SWAP_ENABLE
Definition vxge_reg.h:633
#define VXGE_HW_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(val)
Definition vxge_reg.h:763
#define VXGE_HW_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO2
Definition vxge_reg.h:4595
#define VXGE_HW_RXDMEM_SIZE_PRC_RXDMEM_SIZE(val)
Definition vxge_reg.h:4103
#define VXGE_HW_PRC_CFG4_RING_MODE_ONE_BUFFER
Definition vxge_reg.h:139
#define vxge_bVALn(bits, loc, n)
Definition vxge_reg.h:35
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE(val)
Definition vxge_reg.h:4123
#define VXGE_HW_PRC_CFG4_RING_MODE(val)
Definition vxge_reg.h:4069
#define VXGE_HW_PCI_CONFIG_ACCESS_STATUS_ACCESS_ERR
Definition vxge_reg.h:4654
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_DAY(bits)
Definition vxge_reg.h:462
#define VXGE_HW_KDFC_DRBL_TRIPLET_TOTAL_GET_KDFC_MAX_SIZE(bits)
Definition vxge_reg.h:105
#define VXGE_HW_SWAPPER_READ_BIT_FLAP_ENABLE
Definition vxge_reg.h:630
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MINOR(bits)
Definition vxge_reg.h:476
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_YEAR(bits)
Definition vxge_reg.h:468
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY
Definition vxge_reg.h:184
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY
Definition vxge_reg.h:186
#define VXGE_HW_XMAC_VSPORT_CHOICE_VSPORT_NUMBER(val)
Definition vxge_reg.h:4224
#define VXGE_HW_FW_API_GET_FUNC_MODE
Definition vxge_reg.h:65
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_MODE_NON_OFFLOAD_ONLY
Definition vxge_reg.h:109
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MAJOR(bits)
Definition vxge_reg.h:451
#define VXGE_HW_PRC_CFG4_RTH_DISABLE
Definition vxge_reg.h:4072
#define VXGE_HW_SWAPPER_INITIAL_VALUE
Definition vxge_reg.h:622
#define VXGE_HW_PCI_EXP_DEVCTL_READRQ
Definition vxge_reg.h:4264
#define VXGE_HW_RXMAC_VCFG0_RTS_MAX_FRM_LEN(val)
Definition vxge_reg.h:4193
#define VXGE_HW_TIM_CFG1_INT_NUM_TXFRM_CNT_EN
Definition vxge_reg.h:4289
#define VXGE_HW_SWAPPER_BIT_FLIPPED
Definition vxge_reg.h:624
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_B(val)
Definition vxge_reg.h:4298
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG1_SEL_FUNC0
Definition vxge_reg.h:4650
#define VXGE_HW_TIM_CFG1_INT_NUM_TIMER_CI
Definition vxge_reg.h:4292
#define VXGE_HW_TIM_RING_ASSN_INT_NUM(val)
Definition vxge_reg.h:4319
u64 vpath_rst_in_prog
Definition vxge_reg.h:151
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MONTH(bits)
Definition vxge_reg.h:465
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MINOR(bits)
Definition vxge_reg.h:454
#define VXGE_HW_RTS_ACCESS_STEER_DATA1_GET_FLASH_VER_MAJOR(bits)
Definition vxge_reg.h:473
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_SERIAL_NUMBER
Definition vxge_reg.h:418
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(bits)
Definition vxge_reg.h:206
#define VXGE_HW_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK
Definition vxge_reg.h:3951
#define VXGE_HW_PCI_CONFIG_ACCESS_CFG2_REQ
Definition vxge_reg.h:4652
#define VXGE_HW_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE(bits)
Definition vxge_reg.h:124
#define VXGE_HW_PRC_CFG1_RTI_TINT_DISABLE
Definition vxge_reg.h:4060
#define VXGE_HW_PRC_CFG4_IN_SVC
Definition vxge_reg.h:4068
#define VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE
Definition vxge_reg.h:4202
#define VXGE_HW_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE(val)
Definition vxge_reg.h:4201
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA
Definition vxge_reg.h:192
#define VXGE_HW_CMN_RSTHDLR_CFG1_CLR_VPATH_RESET(val)
Definition vxge_reg.h:765
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PART_NUMBER
Definition vxge_reg.h:417
#define VXGE_HW_TIM_CFG2_INT_NUM_UEC_D(val)
Definition vxge_reg.h:4300
#define VXGE_HW_SWAPPER_WRITE_BIT_FLAP_ENABLE
Definition vxge_reg.h:636
#define VXGE_HW_TIM_CFG3_INT_NUM_LTIMER_VAL(val)
Definition vxge_reg.h:4306
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_B(val)
Definition vxge_reg.h:4294
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY(val)
Definition vxge_reg.h:4271
#define VXGE_HW_KDFC_FIFO_TRPL_CTRL_TRIPLET_ENABLE
Definition vxge_reg.h:4121
#define VXGE_HW_TITAN_SRPCIM_REG_SPACES
Definition vxge_reg.h:52
#define VXGE_HW_SWAPPER_BYTE_SWAPPED
Definition vxge_reg.h:623
#define VXGE_HW_VPATH_TO_FUNC_MAP_CFG1_GET_VPATH_TO_FUNC_MAP_CFG1(bits)
Definition vxge_reg.h:45
#define VXGE_HW_TOC_GET_KDFC_INITIAL_BIR(val)
Definition vxge_reg.h:117
#define VXGE_HW_GET_FUNC_MODE_VAL(val)
Definition vxge_reg.h:67
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_BUILD(bits)
Definition vxge_reg.h:457
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_FILL_THRESH(val)
Definition vxge_reg.h:4265
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MONTH(bits)
Definition vxge_reg.h:443
#define VXGE_HW_PRC_CFG6_RXD_CRXDT(val)
Definition vxge_reg.h:4085
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SWAP_EN
Definition vxge_reg.h:4125
#define VXGE_HW_TIM_CFG1_INT_NUM_URNG_C(val)
Definition vxge_reg.h:4295
#define VXGE_HW_RTS_ACCESS_STEER_DATA0_GET_FW_VER_YEAR(bits)
Definition vxge_reg.h:446
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_MEMO_ENTRY
Definition vxge_reg.h:188
#define VXGE_HW_SWAPPER_READ_BYTE_SWAP_ENABLE
Definition vxge_reg.h:627
#define VXGE_HW_KDFC_FIFO_TRPL_PARTITION_LENGTH_0(val)
Definition vxge_reg.h:4117
u64 rxmac_cfg0_port_vpmgmt_clone[3]
Definition vxge_reg.h:78
#define VXGE_HW_PRC_CFG5_RXD0_ADD(val)
Definition vxge_reg.h:4078
#define VXGE_HW_SWAPPER_BYTE_SWAPPED_BIT_FLIPPED
Definition vxge_reg.h:625
#define VXGE_HW_TIM_PCI_CFG_ADD_PAD
Definition vxge_reg.h:4328
#define VXGE_HW_PRC_CFG6_RXD_SPAT(val)
Definition vxge_reg.h:4087
#define VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION(val)
Definition vxge_reg.h:4205
#define VXGE_HW_KDFC_TRPL_FIFO_0_CTRL_SELECT(val)
Definition vxge_reg.h:4131
#define vxge_mBIT(loc)
Definition vxge_reg.h:24
#define VXGE_HW_TIM_CFG1_INT_NUM_BTIMER_VAL(val)
Definition vxge_reg.h:4287
#define VXGE_HW_RTDMA_RD_OPTIMIZATION_CTRL_FB_WAIT_FOR_SPACE
Definition vxge_reg.h:4263
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.
#define VXGE_HW_INTR_MASK_ALL
#define VXGE_HW_MAC_MAX_MAC_PORT_ID
#define VXGE_HW_VPATH_INTR_TX
#define VXGE_HW_MAC_HEADER_MAX_SIZE
#define VXGE_HW_MAX_INTR_PER_VP
#define VXGE_HW_VPATH_INTR_BMAP
#define VXGE_HW_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL
#define VXGE_HW_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL
#define VXGE_HW_VPATH_INTR_EINTA
#define VXGE_HW_VPATH_INTR_RX
#define VXGE_HW_MAX_VIRTUAL_PATHS