マルチ・チャネル DMA PCI Express* 用インテル FPGA IP ユーザー・ガイド

ID 683821
日付 10/06/2023
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

8.2.2.3. User MSI-X

各 DMA キューには、2 つの割り込みが割り当てられます。
  • ディスクリプターの完了ステータスを報告するため。
  • User MSI-Xの場合: なんらかのイベントまたはエラーが発生すると、ユーザーロジックがUser MSI-X を生成します。

アプリケーションは、一連のレジスター済み割り込みアドレスをポーリングする責任があり、User MSI-X がトリガーされると、対応するレジスター済み割り込みコールバックが呼び出されます。現在、このコールバック・アドレスは、キュー・コンフィグレーション・レジスターのプライベート・ポインターで送信されています。

D2H キューの場合

int
rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,
                                               uint16_t nb_rx_desc, unsigned int socket_id,
                                               const struct rte_eth_rxconf *rx_conf,
                                               struct rte_mempool *mp)
struct rte_eth_rxconf {
        struct rte_eth_thresh rx_thresh; /**< RX ring threshold registers. */
        uint16_t rx_free_thresh; /**< Drives the freeing of RX descriptors. */
       uint64_t offloads;
	…
        uint64_t reserved_64s[2]; /**< Reserved for future fields */
        void *reserved_ptrs[2];    reserved_ptrs[0] should be populated with user MSIX callback
};

H2D キューの場合

Int
rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,
                                               uint16_t nb_tx_desc, unsigned int socket_id,
                                               const struct rte_eth_rxconf *tx_conf)
struct rte_eth_txconf {
        struct rte_eth_thresh tx_thresh; /**< TX ring threshold registers. */
        uint16_t tx_rs_thresh; /**< Drives the setting of RS bit on TXDs. */
        uint16_t tx_free_thresh; 
	…
        uint64_t reserved_64s[2]; /**< Reserved for future fields */
        void *reserved_ptrs[2];      reserved_ptrs[0] should be populated with user MSIX callback
};