| 454 | } |
| 455 | |
| 456 | static uint32_t |
| 457 | intel_ntb_spad_read(const struct rte_rawdev *dev, int spad, bool peer) |
| 458 | { |
| 459 | struct ntb_hw *hw = dev->dev_private; |
| 460 | uint32_t spad_v, reg_off; |
| 461 | void *reg_addr; |
| 462 | |
| 463 | if (spad < 0 || spad >= hw->spad_cnt) { |
| 464 | NTB_LOG(ERR, "Invalid spad reg index."); |
| 465 | return 0; |
| 466 | } |
| 467 | |
| 468 | /* When peer is true, read peer spad reg */ |
| 469 | if (is_gen3_ntb(hw)) |
| 470 | reg_off = peer ? XEON_GEN3_B2B_SPAD_OFFSET : |
| 471 | XEON_IM_SPAD_OFFSET; |
| 472 | else if (is_gen4_ntb(hw)) |
| 473 | reg_off = peer ? XEON_GEN4_B2B_SPAD_OFFSET : |
| 474 | XEON_IM_SPAD_OFFSET; |
| 475 | else { |
| 476 | NTB_LOG(ERR, "Cannot read spad for unsupported device."); |
| 477 | return -ENOTSUP; |
| 478 | } |
| 479 | reg_addr = hw->hw_addr + reg_off + (spad << 2); |
| 480 | spad_v = rte_read32(reg_addr); |
| 481 | |
| 482 | return spad_v; |
| 483 | } |
| 484 | |
| 485 | static int |
| 486 | intel_ntb_spad_write(const struct rte_rawdev *dev, int spad, |
nothing calls this directly
no test coverage detected