JP6938399B2 - 通信装置、通信方法およびプログラム - Google Patents
通信装置、通信方法およびプログラム Download PDFInfo
- Publication number
- JP6938399B2 JP6938399B2 JP2018024189A JP2018024189A JP6938399B2 JP 6938399 B2 JP6938399 B2 JP 6938399B2 JP 2018024189 A JP2018024189 A JP 2018024189A JP 2018024189 A JP2018024189 A JP 2018024189A JP 6938399 B2 JP6938399 B2 JP 6938399B2
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- descriptor
- communication
- data
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Bus Control (AREA)
Description
特許文献1には、DMAコントローラを用いた通信パケットの生成方法が開示されている。まず、CPUは、ソフトウェア処理により通信ヘッダとディスクリプタとをそれぞれ1つずつ生成する。次にCPUは、DMAコントローラ付のMAC(Media Access Control)を起動し、MACは、ディスクリプタに従って通信ヘッダとペイロードとを取得する。そして、MACは、ペイロードに通信ヘッダを付加して1つの通信パケットを生成し、ネットワークに転送する。この通信パケットの生成方法を用いて複数の通信パケットをネットワークに転送する場合、上記のディススクリプタの生成とDMAコントローラの制御とを含む一連の処理を繰り返し実行する必要がある。
DMAコントローラの制御には、以下の3つの処理時間が必要である。(1)ディスクリプタに記述する情報を準備する時間、(2)準備した情報をディスクリプタに記述する時間、(3)1パケットごとにDMAコントローラを起動する時間、である。通信処理の高速化のためには、上記の処理時間の短縮が必要である。
そこで、本発明は、複数のデータの転送に係る処理時間を低減し、通信処理を高速化することを目的としている。
本実施形態における通信装置は、DMAコントローラが、ディスクリプタを連続して読み込み、連続してDMA転送を実行するように、チェーン先アドレスを含むディスクリプタを生成する。ここで、チェーン先アドレスとは、DMAコントローラが次にリードするディスクリプタのアドレスである。これにより、通信装置が外部機器に対してネットワーク経由で送信データを複数の通信パケットにより転送する場合、DMAコントローラを一度起動させるだけで、複数の通信パケットを生成することができる。つまり、DMAコントローラの制御にかかる処理時間を低減することができる。
通信装置100の各機能モジュールのうち、ソフトウェアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがROM等のメモリに記憶され、RAMに読み出してCPUが実行することにより実現される。ハードウェアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。
なお、図1に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
メインCPU10は、通信装置100上で稼働するアプリケーションソフトウェアを実行するとともに、通信装置100全体の制御を実行する。具体的には、メインCPU10は、アプリケーションソフトウェアを実行する上で必要となるデータやプログラムなどをメインメモリ20の内部に記憶し、必要に応じてシステムバス40を介して読み出しや書き込みを行う。
メインメモリ20は、システムバス40を介して、通信装置100内の各機能ブロックが共有して利用可能なメモリであり、DRAM(Dynamic Random Access Memory)等の半導体メモリにより構成することができる。メインメモリ20内部の領域は、プログラムを格納する領域やアプリケーションソフトウェアが使用するアプリケーションバッファ領域などに分けられる。
サブシステム30は、上述したように、通信装置100における通信プロトコル処理を実行するシステムであり、特に、サブシステム30は、TCP/IPプロトコル等の通信プロトコル処理に特化して外部機器とネットワークを介したデータ転送処理を担う。本実施形態において、サブシステム30は、通信プロトコル処理専用のハードウェア(ハードウェアアクセラレータ)を搭載して、通信プロトコル処理の一部をメインCPU10に替えて高速で実行する。なお、TCP/IPプロトコルは、説明を行うために示す一例であり、サブシステム30は、その他の通信プロトコルの通信プロトコル処理を実行することができる。
ローカルメモリ32は、サブシステム30のサブCPU31が利用可能なメモリであり、SRAM(Static Random Access Memory)等の半導体メモリにより構成することができる。また、ローカルメモリ32は、メインCPU10からもシステムバス40およびローカルバス36を介してアクセス可能である。
通信I/F33は、内部に送受信データを一時的に蓄積するバッファメモリを装備し、DMAコントローラ34のDMA転送によって、送受信データの入出力が行われる。なお、図1のDMAコントローラ34とは別に、通信I/F33がDMAコントローラを内蔵して、その内蔵DMAコントローラを用いてDMA転送による送受信データの入出力を行ってもよい。
DMAコントローラ34は、ディスクリプタに記述された内容に従ってソース側からディスティネーション側へデータ転送(DMA転送)を実行する。このディスクリプタには、データ転送元となるソース側のメモリ等のアドレス情報、データ転送先となるディスティネーション側のメモリ等のアドレス情報、およびデータ転送の転送サイズ等の情報が記述される。また、DMAコントローラ34は、DMA転送が完了すると、完了通知をディスクリプタ処理部35へ出力する機能を有する。
リード転送部342は、転送レジスタ部341にセットされた設定情報をもとにディスクリプタを読み込む。そして、リード転送部342は、読み込んだディスクリプタに記述された内容に従って、メインメモリ20、あるいはローカルメモリ32、あるいは後述する内部メモリ352からデータをリードすることができる。
演算部344は、転送レジスタ部341にセットされた設定情報に従って、リード転送部342から受け取ったデータに対する演算を実行する。具体的には、演算部344は、インターネットチェックサム演算やペイロードサム演算を行う。ここで、インターネットチェックサムとは、TCP/UDP/IP通信パケット内のチェックサム値を指し、16ビット毎の1の補数和を取り、さらにそれの1の補数を取ることで計算できる。また、ペイロードサムとは、ペイロードの総和であり、16ビットワード毎の1の補数和である。
なお、演算部344は、演算をスルーする動作モードで動作することもできる。この場合、DMAコントローラ34は、演算を実施せず単純なメモリ間のデータコピーとして使用することができる。
ディスクリプタ処理部35は、生成レジスタ部351と、内部メモリ352と、コア部353と、を備える。ディスクリプタ処理部35は、サブCPU31が実行する通信プロトコル処理を担っており、具体的には、通信プロトコル処理の中のディスクリプタ生成処理と、DMAコントローラ34の制御処理を肩代わりして実行する。
内部メモリ352は、コア部353やサブCPU31が利用可能なメモリであり、SRAM等の半導体メモリにより構成することができる。内部メモリ352は、コア部353によって生成されたディスクリプタを記憶する領域を持つ。
コア部353は、生成レジスタ部351にセットされた設定情報によりディスクリプタ生成処理を実行し、内部メモリ352にディスクリプタを保存する。さらに、コア部353は、内部メモリ352へのディスクリプタの保存を完了すると、DMA転送要求をDMAコントローラ34へ出力する機能を有する。
コア制御部353aは、生成レジスタ部351にセットされた設定情報に従って、ディスクリプタ生成部353bとDMAコントローラ制御部353cとを制御する。具体的には、コア制御部353aは、ディスクリプタ生成部353bに対してディスクリプタ生成を要求したり、DMAコントローラ制御部353bに対してディスクリプタ生成の完了通知を出力したりする。
ディスクリプタ生成部353bが生成するディスクリプタのサイズは、固定値である。ディスクリプタ生成部353bは、生成したディスクリプタを内部メモリ352に保存する。また、ディスクリプタ生成部353bは、生成したディスクリプタを内部メモリ352に書き込んだ数をカウントする機能も有する。
なお、DMA転送の完了通知は、DMAコントローラ34がディスクリプタ処理部35に対して割り込み信号で通知する方法がある。もしくは、DMAコントローラ制御部353cが転送レジスタ部341をポーリングすることで、DMA転送の完了通知を受け取る方法もある。
図2は、通信装置100が実行する通信パケット送信処理の一例を示すフローチャートである。この図2に示す処理は、例えば、通信装置100の通信機能が起動され、通信装置100がネットワーク37を介して外部機器と通信状態となったことを契機に開始される。ただし、図2に示す処理の開始タイミングは上記に限定されない。
以下では、通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとして、TCP/IPプロトコルを使用する例を説明する。なお、通信プロトコルは、TCP/IPプロトコル以外の通信プロトコルであってもよい。
ここで、サブCPU31に対して発行される通知には、現在の通信状態を示す情報が含まれる。現在の通信状態を示す情報は、例えば、TCPプロトコルを使用した通信の接続を開始することを示す情報、TCPプロトコルを使用したデータ転送を開始することを示す情報、TCPプロトコルを使用した通信の切断を開始する情報等を含む。
DMA転送の設定では、まず、サブCPU31がDMA転送の内容を記述したディスクリプタを生成してローカルメモリ32に保存する。次に、サブCPU31は、このディスクリプタを保存したローカルメモリ32のアドレス情報をDMAコントローラ34にセットする。このようにして、サブCPU31は、DMAコントローラ34にDMA転送を実行させる。このDMA転送の完了をもって、サブCPU31による通信プロトコルに従った送信処理の準備が完了したことになる。
前者の場合、まず、サブCPU31は、ローカルメモリ32内の送信データをペイロード単位で切り出し、内部メモリ352内の通信ヘッダと結合して1つの通信パケットとして通信I/F33に転送するDMA転送設定を実施する。後者の場合、まず、サブCPU31は、ローカルメモリ32に書き込まれた通信パケットを通信I/F33に転送するDMA転送設定を実施する。次に、サブCPU31は、DMAコントローラ34を起動し、上記のDMA転送設定に従って、通信ヘッダとペイロード、あるいは通信パケットを通信I/F33へDMA転送させる。これにより、通信I/F33は、データリンク層(MAC層)や物理層(PHY層)の通信処理を行った後、ネットワーク37を介して外部機器へ通信パケットを送信する。
例えば、メインCPU10で実行しているアプリケーションソフトウェアが、ユーザからの操作などで通信装置100と外部機器との接続を終了させる指示を検知した場合、外部機器との通信を終了させる事象となる。また、ユーザがネットワークケーブルを通信装置100から抜くなどして通信回線が断絶したことを通信I/F33が検知した場合も、外部機器との通信を終了させる事象となる。さらに、通信相手である外部機器から通信回線を切断する旨の通知を含んだ通信パケットを受信した場合も、同様に外部機器との通信を終了させる事象となる。
その後、サブCPU31からメインCPU20へ、通信回線の切断完了の通知が伝達されると、アプリケーションソフトウェアで通信回線が切断したことをユーザなどへ示す表示を行うことができる。なお、このとき、ディスクリプタ生成部353bが持つ後述するカウンタの値も“0”にクリアされる。
図3は、S4において実行される通信プロトコル処理を示すフローチャートである。以下、主にディスクリプタ生成部353bによるディスクリプタに記述する情報の計算処理について説明する。
まずS41において、サブCPU31は、ディスクリプタ生成情報として、ディスクリプタ生成に必要な設定情報を準備する。また、このS41では、サブCPU31は、通信パケットの通信ヘッダを生成し、ディスクリプタ処理部35内の生成レジスタ部351にディスクリプタ生成に必要な設定情報をセットする処理を実行する。ここで、上記設定情報は、図4の「生成レジスタ部へセットする情報」に示す設定情報401〜406である。これらの情報401〜406の内容について、以下に説明する。
設定情報402は、転送元情報に対して実行される演算種別である。ここで転送元情報は、DMAコントローラ34が転送元から入力するデータ(リード転送するデータ)である。この設定情報402は、リード転送部342がリードするデータに対して演算部344が実行する演算種別が、インターネットチェックサムであるか、インターネットチェックサムとペイロードサムとであるかを判断する情報である。
設定情報403は、生成する通信パケットの数であり、ディスクリプタ生成部353bが内部メモリ352に生成するディスクリプタの数を決定するための情報である。つまり、この設定情報403は、ディスクリプタチェーンするかを判断するための情報である。
設定情報405は、転送元情報のサイズであり、ローカルメモリ32に配置されているペイロードのサイズを特定するための情報である。なお、内部メモリ352に配置されている通信ヘッダのサイズは、設定情報401の各ヘッダ長より計算することができるため、設定情報405には含まれない。
設定情報406は、最終的に生成する通信パケットを記憶するアドレスであり、ライト転送部343が、内部メモリ352、もしくはローカルメモリ32、もしくは通信I/F33のバッファメモリに転送するデータの種別を判断するための情報である。ここで、転送する情報は、チェックサム値の演算結果もしくは通信パケットである。この設定情報406のアドレスは、演算結果もしくは通信パケットをDMA転送するための情報でもある。
次に、サブCPU31は、生成する通信パケットの数と同数の通信ヘッダをディスクリプタ処理部35内の内部メモリ352に生成する。ここで、サブCPU31は、内部メモリ352の連続した領域に複数の通信ヘッダを生成する。サブCPU31は、通信ヘッダを生成した後、図4に示すディスクリプタ生成に必要な設定情報をディスクリプタ処理部35内の生成レジスタ部351にセットする。
なお、通信ヘッダを完成させるために必要なチェックサム値は、DMAコントローラ34の演算部344がDMA転送と同時に演算する。そのため、このS41では、サブCPU31はチェックサム値の演算を行わない。つまり、サブCPU31は、チェックサム値の演算結果を除く通信ヘッダを生成する。
S43では、サブCPU31は、ディスクリプタ生成要求をディスクリプタ処理部35内の生成レジスタ部351にセットすることで、ディスクリプタ処理部35を起動する。
S44以降の処理では、ディスクリプタ生成部353bは、図4に示す設定情報401〜406をもとに、ディスクリプタに記述する情報として、図4に示す出力情報411〜415を計算する。
出力情報412は、転送元情報のアドレスを示す転送元アドレスである。転送元情報は、通信ヘッダのみの場合と、通信ヘッダとペイロードの両方である場合とがある。したがって、出力情報412は、通信ヘッダが配置されているアドレス情報、あるいは通信ヘッダとペイロードとが配置されているアドレス情報となる。このアドレス情報は、通信ヘッダとペイロードとのそれぞれに対して、設定情報403に示される生成する通信パケットの数だけ用意される。
出力情報413は、転送元情報のサイズであり、通信ヘッダ、あるいは通信ヘッダとペイロードとのサイズ情報である。このサイズ情報は、通信ヘッダとペイロードとのそれぞれに対して、設定情報403に示される生成する通信パケットの数だけ用意される。
出力情報415は、転送先へ転送する情報のサイズであり、通信パケットのサイズ情報である。ここで、出力情報415は、チェックサム値の演算結果のサイズ情報は含まない。演算結果は、常に2バイトの固定値であり、計算の必要がないためである。
具体的には、ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報をもとに、通信パケットを複数生成すると判定した場合、ディスクリプタをチェーンすると判定してS45に移行する。一方、ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報をもとに、通信パケットを1つのみ生成すると判定した場合、S46に移行する。このS44では、ディスクリプタ生成部353bは、図4の設定情報403をもとにディスクリプタをチェーンするか否かを判定する。
S46では、ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報をもとに、DMAコントローラ34のリード転送部342が読み込む通信ヘッダの転送元アドレスと転送サイズとを計算する。このS46において計算される転送元アドレスは、図4の出力情報412であり、転送サイズは、図4の出力情報413である。なお、転送元アドレス(出力情報412)および転送サイズ(出力情報413)の計算方法については、後述する。
S48では、ディスクリプタ生成部353bは、DMAコントローラ34のリード転送部342が転送するペイロードの転送元アドレスと転送サイズとを計算する。このS48において計算される転送元アドレスは、図4の出力情報412であり、転送サイズは、図4の出力情報413である。なお、転送元アドレス(出力情報412)および転送サイズ(出力情報413)の計算方法については、後述する。
S50では、ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報をもとに、ライト転送部343がローカルメモリ32に転送する通信パケットの転送先アドレスと、当該通信パケットの転送サイズとを計算する。このS50において計算される転送先アドレスは、図4の出力情報414であり、転送サイズは、図4の出力情報415である。なお、転送先アドレス(出力情報414)および転送サイズ(出力情報415)の計算方法については、後述する。
S52では、ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報をもとに、演算部344が内部メモリ352に出力する演算結果の転送先アドレスを計算する。このS52において計算される転送先アドレスは、図4の出力情報414であり、その計算方法については後述する。
S54では、ディスクリプタ生成部353bは、最小単位のカウントアップのみを実行し、S55に移行する。例えば、ディスクリプタ生成部353bは、S53から移行したときに最初のカウントアップを実行してカウンタ値を「1」とする。その後、ディスクリプタ生成部353bは、S53から移行する度にカウントアップを実施して、カウンタ値を「2」、「3」、…のようにカウントアップする。このカウントアップ処理は、ディスクリプタ生成部353bが内部メモリ352に書き込んだディスクリプタの個数をカウントする意味をもっている。
S56では、コア部353のDMAコントローラ制御部353cは、DMAコントローラ34に対してDMA転送を要求する。これにより、DMAコントローラ34は、ディスクリプタに従ってDMA転送を実行する。
次に、演算部344は、リード転送部342によって連続してリードされた通信ヘッダ、あるいは通信ヘッダとペイロードとに対して、転送レジスタ部341にセットされた設定情報に従って、インターネットチェックサム演算やペイロードサム演算を実行する。演算部344が演算を完了すると、DMAコントローラ34は、演算結果を内部メモリ352に保存されている通信ヘッダの所定の位置に書き込み、演算結果を含む通信ヘッダを完成させる。あるいは、DMAコントローラ34は、通信ヘッダをペイロードに結合した通信パケットをローカルメモリ32に書き込み、さらに演算結果を当該通信パケットの通信ヘッダの所定の位置に書き込むことで、通信パケットを完成させる。このように、DMAコントローラ34は、ディスクリプタに従ってDMA転送を実行し、内部メモリ352に通信ヘッダを完成させるか、もしくはローカルメモリ32に通信パケットを完成させる。
通信ヘッダもしくは通信パケットが完成すると、図3の処理を終了し、図2のS5へ移行する。
(出力情報411の計算アルゴリズム)
まず、出力情報411であるチェーン先アドレスを計算するアルゴリズムについて説明する。出力情報411は、設定情報402、403および406に基づいて計算することができる。この出力情報411は、図3のS45において計算される。
出力情報411の計算の中の、転送元アドレスから転送元情報を転送するディスクリプタ、つまりリード用ディスクリプタのチェーン先アドレスの計算アルゴリズムは、以下のとおりである。
ディスクリプタ生成部353bは、設定情報402をもとに、転送元情報が通信ヘッダであるか、通信ヘッダとペイロードとであるかを判断し、生成するディスクリプタの種別を決定する。ここで、生成するディスクリプタの種別は、通信ヘッダをDMA転送するためのディスクリプタ、もしくは通信ヘッダとペイロードとをDMA転送するためのディスクリプタである。
出力情報411のチェーン先アドレスの計算式は、次式により表される。
(通信ヘッダ用ディスクリプタのチェーン先アドレス[N])=(通信ヘッダ用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×(N+1) ………(1)
なお、上記Nは、カウント値であり、0から(生成する通信パケットの数(設定情報403)−1)の範囲の値である。ディスクリプタ生成部353bは、N=0から1、2、3・・・とカウントアップし、チェーン先アドレスを計算する。以降のカウント値Nについても同様である。
このように、転送元情報が通信ヘッダのみの場合、通信ヘッダを転送するための通信ヘッダ用ディスクリプタには、次にリードする通信ヘッダ用ディスクリプタのアドレスがチェーン先アドレスとして記述される。つまり、通信ヘッダ用ディスクリプタから通信ヘッダ用ディスクリプタへチェーンするようにディスクリプタが生成されることになる。
(通信ヘッダ用ディスクリプタのチェーン先アドレス[N])=(ペイロード用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×N ………(2)
(ペイロード用ディスクリプタのチェーン先アドレス[N])=(通信ヘッダ用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×(N+1) ………(3)
このように、転送元情報が通信ヘッダとペイロードとである場合、通信ヘッダ用ディスクリプタには、次にリードするペイロード用ディスクリプタのアドレスがチェーン先アドレスとして記述される。また、ペイロード用ディスクリプタには、次にリードする通信ヘッダ用ディスクリプタのアドレスがチェーン先アドレスとして記述される。つまり、通信ヘッダ用ディスクリプタからペイロード用ディスクリプタへチェーンし、さらにペイロード用ディスクリプタから通信ヘッダ用ディスクリプタへチェーンするようにディスクリプタが生成されることになる。
まず、ディスクリプタ生成部353bは、設定情報406をもとに、出力情報414の転送先アドレスへ転送するデータが、演算結果であるか、通信パケットと演算結果とであるかを判断し、生成するディスクリプタの種別を決定する。ここで、生成するディスクリプタの種別は、演算結果をDMA転送するためのディスクリプタ、もしくは通信パケットと演算結果とをDMA転送するためのディスクリプタである。
(演算結果用ディスクリプタのチェーン先アドレス[N])=(演算結果用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×(N+1) ………(4)
このように、転送先アドレスへ転送するデータが演算結果のみの場合、演算結果を転送するための演算結果用ディスクリプタには、次にリードする演算結果用ディスクリプタのアドレスがチェーン先アドレスとして記述される。つまり、演算結果用ディスクリプタから演算結果用ディスクリプタへチェーンするようにディスクリプタが生成されることになる。
(通信パケット用ディスクリプタのチェーン先アドレス[N])=(演算結果用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×N ………(5)
(演算結果用ディスクリプタのチェーン先アドレス[N])=(通信パケット用ディスクリプタの先頭アドレス)+(ディスクリプタのサイズ)×(N+1) ………(6)
このように、転送先アドレスへ転送するデータが通信パケットと演算結果とである場合、通信パケット用ディスクリプタには、次にリードする演算結果用ディスクリプタのアドレスがチェーン先アドレスとして記述される。また、演算結果用ディスクリプタには、次にリードする通信パケット用ディスクリプタのアドレスがチェーン先アドレスとして記述される。つまり、通信パケット用ディスクリプタから演算結果用ディスクリプタへチェーンし、さらに演算結果用ディスクリプタから通信パケット用ディスクリプタへチェーンするようにディスクリプタが生成されることになる。
次に、出力情報412および出力情報413の計算アルゴリズムについて説明する。
出力情報412の転送元アドレスは、設定情報403と、設定情報404とをもとに計算することができる。ここで、設定情報404は、連続する領域の先頭に配置されている通信ヘッダのアドレス、または転送する各ペイロードが配置されている全てのアドレスを指している。この出力情報412は、図3のS46、S48において計算される。
また、出力情報413の転送元情報のサイズは、設定情報401と、設定情報403と、設定情報405とから計算することができる。ここで、設定情報405は、転送する各ペイロードのサイズを指している。この出力情報413は、出力情報412と同様に、図3のS46、S48において計算される。
通信ヘッダは、ディスクリプタ処理部35の内部メモリ352の連続する領域に記憶されている。ディスクリプタ生成部353bは、設定情報401をもとに、使用する通信プロトコルのヘッダを判断し、各ヘッダ長から通信ヘッダのサイズを計算する。ここで、各ヘッダ長とは、MACヘッダ、IPv4/v6ヘッダ、TCP/UDPヘッダの長さを指す。通信ヘッダのサイズの計算式は以下のとおりである。次式により計算される通信ヘッダのサイズが出力情報413となる。
(通信ヘッダのサイズ)=(MACヘッダ長)+(IPv4/v6ヘッダ長)+(TCP/UDPヘッダ長) ………(7)
(通信ヘッダの転送元アドレス[N])=(転送元アドレス)+(通信ヘッダのサイズ)×N ………(8)
この場合、一つ目の通信ヘッダの転送元アドレスは、
(通信ヘッダの転送元アドレス[0])=0x0+0x36×0=0x0
と計算できる。また、二つ目の通信ヘッダの転送元アドレスは、
(通信ヘッダの転送元アドレス[1])=0x0+0x36×1=0x36
と計算できる。さらに、三つ目の通信ヘッダの転送元アドレスは、
(通信ヘッダの転送元アドレス[2])=0x0+0x36×2=0x6C
と計算できる。
ディスクリプタ生成部353bは、設定情報403と、設定情報404と、設定情報405と、MSSとにより、ペイロードの転送元アドレスを計算する。ここで、MSSは、TCP/UDPにおける1セグメントで転送可能なデータ長である。また、設定情報404は、各ペイロードが配置されているアドレスを指し、設定情報405は、各ペイロードの転送サイズを指す。
(ペイロードの転送元アドレス[N])=(ペイロードの先頭アドレス)+MSS×N ………(9)
(最後のペイロードの転送サイズ)=(セットされたペイロードの転送サイズ)−MSS×(生成する通信パケットの数−1) ………(10)
一つ目のペイロードの転送元アドレスは、
(ペイロードの転送元アドレス[0])=0x0+0x5B4×0=0x0
と計算できる。また、二つ目のペイロードの転送元アドレスは、
(ペイロードの転送元アドレス[1])=0x0+0x5B4×1=0x5B4
と計算できる。さらに、三つ目のペイロードの転送元アドレスは、
(ペイロードの転送元アドレス[2])=0x0+0x5B4×2=0xB68
と計算できる。
さらに、ペイロードの転送サイズは、MSS単位で分割されるため、一つ目、二つ目のペイロードの転送サイズは、それぞれ0x5B4(1460byte)となる。そして、三つ目のペイロードの転送サイズは、上記(10)式により、
(最後のペイロードの転送サイズ)=0xFA0−0x5B4×(3−1)=0x438(1080byte)
と計算できる。
(ペイロードの転送元アドレス[N])=(セットされた転送元アドレス[N]) ………(11)
(ペイロードの転送サイズ[N])=(セットされたペイロードの転送サイズ[N]) ………(12)
次に、出力情報414および出力情報415の計算アルゴリズムについて説明する。
出力情報414の転送先アドレスは、設定情報403と、設定情報404と、設定情報406とから計算することができる。この出力情報414は、図3のS50、S51、S52において計算される。
また、出力情報415の転送先へ転送する情報のサイズは、設定情報401と、設定情報403と、設定情報405とから計算することができる。この出力情報415は、図3のS50において計算される。
ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報401をもとに、どのように通信パケットを生成するかを判断し、転送先へ転送する情報の種別を決定する。ここで、転送先へ転送する情報の種別は、チェックサム値の演算結果、または通信パケットと演算結果である。
まず、ディスクリプタ生成部353bは、通信パケットの転送先アドレスを計算する。ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報406を、出力情報414の転送先アドレスとする。ここで、設定情報406は、設定情報403の生成する通信パケットの数だけ用意される。
(転送先アドレス[N])=(最終的に生成する通信パケットを記憶するアドレス[N]) ………(13)
そして、設定情報405のサイズがMSSより大きい、つまりMSSよりもペイロードのサイズが大きい場合、ディスクリプタ生成部353bは、通信パケットのサイズを以下の通り計算する。
(通信パケットのサイズ[N])=(通信ヘッダのサイズ)+MSS ………(14)
(最後の通信パケットのサイズ)=(通信ヘッダのサイズ)+(セットされたペイロードのサイズ)−MSS×(生成する通信パケットの数−1) ……..(15)
(通信パケットのサイズ)=0x36+0x5B4=0x5EA
と計算できる。そして、三つ目の通信パケットのサイズは、上記(15)式により、
(最後の通信パケットのサイズ)=0x36+0xFA0−0x5B4×(3−1)=0x46E(1134byte)
と計算できる。
(通信パケットのサイズ[N])=(通信ヘッダのサイズ)+(セットされたペイロードのサイズ[N]) ………(16)
(通信パケットのサイズ[0])=0x36+0x100=0x136(310byte)
と計算できる。また、二つ目の通信パケットのサイズは、
(通信パケットのサイズ[1])=0x36+0x200=0x236(566byte)
と計算できる。さらに、三つ目の通信パケットのサイズは、
(通信パケットのサイズ[2])=0x36+0x400=0x436(1078byte)
と計算できる。
ディスクリプタ生成部353bは、設定情報401と、設定情報403と、設定情報406とをもとに、以下のとおり演算結果の転送先アドレスを計算する。ここで、設定情報401の生成する通信パケットの種別は、MACヘッダ長、IPv4/v6ヘッダ長を指し、設定情報406の最終的に生成する通信パケットを記憶するアドレスは、ローカルメモリ32内の通信パケットの先頭アドレスを指す。
(転送先アドレス[N])=(最終的に生成する通信パケットを記憶するアドレス[N])+(MACヘッダ長)+(IPv4/v6ヘッダ長)+(TCP/UDPオフセット) ………(17)
ここで、TCP/UDPオフセットは、TCP/UDPヘッダの先頭アドレスから演算結果を挿入するアドレスまでのオフセット値である。具体的には、TCPオフセットは0x10、UDPオフセットは0x6である。
(転送先アドレス[0])=0x100+0xE+0x14+0x10=0x132
と計算できる。また、二つ目の演算結果の転送先アドレスは、
(転送先アドレス[1])=0x400+0xE+0x14+0x10=0x432
と計算できる。さらに、三つ目の演算結果の転送先アドレスは、
(転送先アドレス[2])=0x800+0xE+0x14+0x10=0x832
と計算できる。
ディスクリプタ生成部353bは、生成レジスタ部351にセットされた設定情報403と、設定情報404とにより、演算結果の転送先アドレスを計算する。ここで、設定情報404の転送元アドレスは、内部メモリ352内の通信ヘッダの先頭アドレスを指す。演算結果の転送先アドレスの計算式は、以下のとおりである。
(転送先アドレス[N])=(通信ヘッダの先頭アドレス[N])+(MACヘッダ長)+(IPv4/v6ヘッダ長)+(TCP/UDPオフセット) ………(18)
(転送先アドレス[0])=0x0+0xE+0x14+0x10=0x32
と計算できる。また、二つ目の演算結果の転送先アドレスは、
(転送先アドレス[1])=0x80+0xE+0x14+0x10=0xB2
と計算できる。さらに、三つ目の演算結果の転送先アドレスは、
(転送先アドレス[2])=0x100+0xE+0x14+0x10=0x196
と計算できる。
この場合、リード転送部342は、3つの通信ヘッダ501、503および505と、3つのペイロード502、504および506とを転送元アドレスから転送する。なお、図5では一例として、通信ヘッダは、MACヘッダ、IPv4ヘッダ、TCPヘッダにより構成されているが、IPv6ヘッダ、UDPヘッダにより構成されていてもよい。
図5において、通信ヘッダ用ディスクリプタ1(511)は、通信ヘッダ501をリードするためのディスクリプタであり、通信ヘッダ用ディスクリプタ2(512)は、通信ヘッダ503をリードするためのディスクリプタである。通信ヘッダ用ディスクリプタ3(513)は、通信ヘッダ505をリードするためのディスクリプタである。また、ペイロード用ディスクリプタ1(514)は、ペイロード502をリードするためのディスクリプタであり、ペイロード用ディスクリプタ2(515)は、ペイロード504をリードするためのディスクリプタである。ペイロード用ディスクリプタ3(516)は、ペイロード506をリードするためのディスクリプタである。
通信ヘッダ用ディスクリプタ1(511)には、チェーン先アドレスとして、ペイロード用ディスクリプタ1(514)のアドレスが記述される。ペイロード用ディスクリプタ1(514)には、チェーン先アドレスとして、通信ヘッダ用ディスクリプタ2(512)のアドレスが記述される。そして、通信ヘッダ用ディスクリプタ2(512)には、チェーン先アドレスとして、ペイロード用ディスクリプタ2(515)のアドレスが記述される。以下同様に、ペイロード用ディスクリプタ2(515)には、通信ヘッダ用ディスクリプタ3(513)のアドレス、通信ヘッダ用ディスクリプタ3(513)には、ペイロード用ディスクリプタ3(516)のアドレスが記述される。そして、ディスクリプタチェーンの最後であるペイロード用ディスクリプタ3(516)については、チェーン先アドレスの記述は行われない。各ディスクリプタに記述されるチェーン先アドレスは、前述した計算式(2)(3)により計算される。
なお、リード転送部342が通信ヘッダ501、503および505のみをDMA転送する場合には、ディスクリプタ生成部353bは、通信ヘッダ用ディスクリプタのみを生成する。この場合、通信ヘッダ用ディスクリプタ1(511)には、チェーン先アドレスとして、通信ヘッダ用ディスクリプタ2(512)のアドレスが記述される。また、通信ヘッダ用ディスクリプタ2(512)には、チェーン先アドレスとして、通信ヘッダ用ディスクリプタ3(513)のアドレスが記述され、通信ヘッダ用ディスクリプタ3(513)には、チェーン先アドレスの記述は行われない。つまり、リード転送部342は、図5の破線の矢印で示す順に各ディスクリプタ511〜513を読み込むことになる。
この場合、ライト転送部343は、通信ヘッダとペイロードとで構成された3つの通信パケット601、603および605と、3つの演算結果602、604および606とを転送先アドレスへ転送する。なお、図6では一例として、通信パケット601、603および605に含まれる通信ヘッダは、MACヘッダ、IPv4ヘッダ、TCPヘッダにより構成されているが、IPv6ヘッダ、UDPヘッダにより構成されていてもよい。
図6において、通信パケット用ディスクリプタ1(611)は、通信パケット601をリードするためのディスクリプタであり、通信パケット用ディスクリプタ2(612)は、通信パケット603をリードするためのディスクリプタである。通信パケット用ディスクリプタ3(613)は、通信パケット605をリードするためのディスクリプタである。また、演算結果用ディスクリプタ1(614)は、演算結果602をリードするためのディスクリプタであり、演算結果用ディスクリプタ2(615)は、演算結果604をリードするためのディスクリプタである。演算結果用ディスクリプタ3(616)は、演算結果606をリードするためのディスクリプタである。
通信パケット用ディスクリプタ1(611)には、チェーン先アドレス(出力情報411)として、演算結果用ディスクリプタ1(614)のアドレスが記述される。演算結果用ディスクリプタ1(614)には、チェーン先アドレス(出力情報411)として、通信パケット用ディスクリプタ2(612)のアドレスが記述される。そして、通信パケット用ディスクリプタ2(612)には、チェーン先アドレス(出力情報411)として、演算結果用ディスクリプタ2(615)のアドレスが記述される。以下同様に、演算結果用ディスクリプタ2(615)には、通信パケット用ディスクリプタ3(613)のアドレス、通信パケット用ディスクリプタ3(613)には、演算結果用ディスクリプタ3(616)のアドレスが記述される。そして、ディスクリプタチェーンの最後である演算結果用ディスクリプタ3(616)については、チェーン先アドレス(出力情報411)の記述は行われない。各ディスクリプタに記述するチェーン先アドレス(出力情報411)は、前述した計算式(5)(6)により計算される。
なお、ライト転送部343が演算結果602、604および606のみをDMA転送する場合には、ディスクリプタ生成部353bは、演算結果用ディスクリプタのみを生成する。この場合、演算結果用ディスクリプタ1(614)には、チェーン先アドレスとして、演算結果用ディスクリプタ2(615)のアドレスが記述される。また、演算結果用ディスクリプタ2(615)には、チェーン先アドレスとして、演算結果用ディスクリプタ3(616)のアドレスが記述され、演算結果用ディスクリプタ3(616)には、チェーン先アドレスの記述は行われない。つまり、ライト転送部343は、図6の破線の矢印で示す順に各ディスクリプタ614〜615を読み込むことになる。
本実施形態では、ディスクリプタ処理部35は、DMAコントローラ34がデータを入力するデータ転送(リード転送)が、複数の通信ヘッダの転送であるか、通信ヘッダとペイロードとの転送であるかに関する情報を取得する。そして、ディスクリプタ処理部35は、DMAコントローラ34が通信ヘッダのみをデータ転送する場合、通信ヘッダ用ディスクリプタから通信ヘッダ用ディスクリプタへチェーンするように、ディスクリプタを生成する。一方、ディスクリプタ処理部35は、DMAコントローラ34が通信ヘッダとペイロードとをデータ転送する場合は、通信ヘッダ用ディスクリプタからペイロード用ディスクリプタへチェーンするように、ディスクリプタを生成する。
したがって、通信装置100が外部機器に対してネットワーク経由で送信データを複数の通信パケットにより転送する場合、DMAコントローラ34を一度起動させるだけで、複数の通信パケットを生成することができる。つまり、DMAコントローラ34の制御にかかる処理時間を低減し、通信装置100の送信処理能力を向上させることができる。
例えば、DMAコントローラ34が出力するデータがチェックサム値の演算結果である場合、演算の種別がインターネットチェックサムの演算である場合、ディスクリプタ処理部35は、リード転送が複数の通信ヘッダの転送であると判定する。そして、演算の種別がインターネットチェックサムとペイロードサムとの演算である場合には、ディスクリプタ処理部35は、リード転送が通信ヘッダとペイロードとの転送であると判定する。
このように、ディスクリプタ処理部35は、DMAコントローラ34が出力するデータの種別に基づいて、リード転送の種別を適切に判定することができる。したがって、DMAコントローラ34が複数のデータを適切に入力するためのディスクリプタを適切に生成することができる。
このように、ディスクリプタ処理部35は、DMAコントローラ34が次にリードするディスクリプタのアドレスであるチェーン先アドレスを適切に計算し、チェーン先アドレスが記述されたディスクリプタを生成することができる。したがって、DMAコントローラ34は、複数のデータを適切な順番で転送元から連続して入力することができる。
このように、ディスクリプタ処理部35は、DMAコントローラ34がリードするペイロードの転送元のアドレスを適切に計算し、当該アドレスを、ペイロードをリード転送するためのディスクリプタに記述することができる。したがって、DMAコントローラ34は、MSSよりも大きなデータを転送する場合、所定のサイズで分割された複数のペイロードを適切な順番で転送元から連続して入力することができる。
このように、ディスクリプタ処理部35は、DMAコントローラ34がライトする演算結果の転送先のアドレスを適切に計算し、当該アドレスを、演算結果をライト転送するためのディスクリプタに記述することができる。したがって、DMAコントローラ34は、演算結果を通信ヘッダの適切な位置に書き込むことができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記録媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
Claims (15)
- DMA(Direct Memory Access)転送を実行する転送手段と、
前記転送手段によるDMA転送が、複数の第1のデータの転送であるか、前記第1のデータおよび第2のデータの転送であるかに関する情報を取得する取得手段と、
前記取得手段により取得された情報が、前記DMA転送が前記複数の第1のデータの転送であることを示す情報である場合、前記転送手段が前記第1のデータを転送するためのディスクリプタから、前記転送手段が異なる前記第1のデータを転送するためのディスクリプタへチェーンするように、前記ディスクリプタを生成し、
前記取得手段により取得された情報が、前記DMA転送が前記第1のデータおよび前記第2のデータの転送であることを示す情報である場合、前記転送手段が前記第1のデータを転送するためのディスクリプタから、前記転送手段が前記第2のデータを転送するためのディスクリプタへ、またはその逆にチェーンするように、前記ディスクリプタを生成する生成手段と、
前記生成手段により生成された前記ディスクリプタに基づいて前記転送手段によるDMA転送を実行することにより生成された複数の通信パケットを送信する送信手段と、
を備えることを特徴とする通信装置。 - 前記DMA転送が、前記転送手段がデータを入力するリード転送である場合、
前記第1のデータは通信ヘッダであり、前記第2のデータはペイロードであることを特徴とする請求項1に記載の通信装置。 - 前記DMA転送が、前記転送手段がデータを出力するライト転送である場合、
前記第1のデータは、前記転送手段が入力したデータに対して実行した演算の演算結果であり、前記第2のデータは、前記通信ヘッダを前記ペイロードに付加した通信パケットであることを特徴とする請求項2に記載の通信装置。 - 前記取得手段は、
前記転送手段が出力するデータの種別に基づいて、前記リード転送が、複数の前記通信ヘッダの転送であるか、前記通信ヘッダと前記ペイロードとの転送であるかを判定することを特徴とする請求項3に記載の通信装置。 - 前記取得手段は、前記転送手段が出力するデータの種別として前記演算の種別を取得し、
前記演算の種別がインターネットチェックサムの演算である場合、前記リード転送が、複数の前記通信ヘッダの転送であると判定し、
前記演算の種別が前記インターネットチェックサムとペイロードサムとの演算である場合、前記リード転送が、前記通信ヘッダと前記ペイロードとの転送であると判定することを特徴とする請求項3または4に記載の通信装置。 - 前記取得手段は、
前記転送手段が出力するデータの種別に基づいて、前記転送手段が出力するデータに前記通信パケットが含まれると判定した場合、前記リード転送が、前記通信ヘッダと前記ペイロードとの転送であると判定することを特徴とする請求項3から5のいずれか1項に記載の通信装置。 - 前記ディスクリプタの生成に必要な設定情報として、前記通信パケットの種別、前記通信パケットを記憶するアドレス情報、生成すべき前記通信パケットの数、前記転送手段が入力するデータの転送元のアドレス情報およびサイズ情報の少なくとも1つを取得する第2の取得手段をさらに備え、
前記生成手段は、
前記第2の取得手段により取得された設定情報に基づいて、前記ディスクリプタに記述する情報を計算し、前記ディスクリプタを生成することを特徴とする請求項3から6のいずれか1項に記載の通信装置。 - 前記生成手段は、
前記第2の取得手段により取得された設定情報に基づいて、前記ディスクリプタに記述する情報として、チェーン先のディスクリプタのアドレス情報、前記転送手段が転送するデータのアドレス情報およびサイズ情報を計算することを特徴とする請求項7に記載の通信装置。 - チェーンさせる複数の前記ディスクリプタを連続する領域に記憶する第1のメモリをさらに備え、
前記生成手段は、
前記生成すべき通信パケットの数と、前記第1のメモリにおける前記複数のディスクリプタの先頭アドレスと、前記ディスクリプタのサイズとに基づいて、前記チェーン先のディスクリプタのアドレスを計算し、前記ディスクリプタに記述することを特徴とする請求項8に記載の通信装置。 - 送信すべきデータを記憶する第2のメモリをさらに備え、
前記生成すべき通信パケットの数は、送信すべきデータを所定のサイズで分割した前記ペイロードの数であり、
前記生成手段は、
前記生成すべき通信パケットの数と、前記第2のメモリにおける前記送信すべきデータの先頭アドレスと、前記所定のサイズとに基づいて、前記転送するデータのアドレス情報として、前記ペイロードの転送元のアドレスを計算し、前記ペイロードをリード転送するための前記ディスクリプタに記述することを特徴とする請求項8または9に記載の通信装置。 - 前記通信ヘッダを記憶する第3のメモリをさらに備え、
前記生成手段は、
前記生成すべき通信パケットの数と、前記第3のメモリにおける前記通信ヘッダの先頭アドレスと、前記通信ヘッダのサイズとに基づいて、前記転送するデータのアドレス情報として、前記演算結果の転送先のアドレスを計算し、前記演算結果をライト転送するための前記ディスクリプタに記述することを特徴とする請求項8から10のいずれか1項に記載の通信装置。 - 前記生成手段により生成された前記ディスクリプタが記憶されているアドレスを前記転送手段に設定することで、前記転送手段に前記DMA転送の開始を指示する制御手段をさらに備えることを特徴とする請求項1から11のいずれか1項に記載の通信装置。
- 使用される通信プロトコルが、IPv4またはIPv6、もしくはTCPまたはUDPであることを特徴とする請求項1から12のいずれか1項に記載の通信装置。
- DMA(Direct Memory Access)転送を実行するステップと、
前記DMA転送が、複数の第1のデータの転送であるか、前記第1のデータおよび第2のデータの転送であるかに関する情報を取得するステップと、
取得された前記情報が、前記DMA転送が前記複数の第1のデータの転送であることを示す情報である場合、前記DMA転送により前記第1のデータを転送するためのディスクリプタから、前記DMA転送により異なる前記第1のデータを転送するためのディスクリプタへチェーンするように、前記ディスクリプタを生成し、
取得された前記情報が、前記DMA転送が前記第1のデータおよび前記第2のデータの転送であることを示す情報である場合、前記DMA転送により前記第1のデータを転送するためのディスクリプタから、前記DMA転送により前記第2のデータを転送するためのディスクリプタへ、またはその逆にチェーンするように、前記ディスクリプタを生成するステップと、
生成された前記ディスクリプタに基づいて前記DMA転送を実行することにより生成された複数の通信パケットを送信するステップと、を含むことを特徴とする通信方法。 - コンピュータを、請求項1から13のいずれか1項に記載された通信装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018024189A JP6938399B2 (ja) | 2018-02-14 | 2018-02-14 | 通信装置、通信方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018024189A JP6938399B2 (ja) | 2018-02-14 | 2018-02-14 | 通信装置、通信方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019139638A JP2019139638A (ja) | 2019-08-22 |
JP6938399B2 true JP6938399B2 (ja) | 2021-09-22 |
Family
ID=67695429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018024189A Active JP6938399B2 (ja) | 2018-02-14 | 2018-02-14 | 通信装置、通信方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6938399B2 (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4344576B2 (ja) * | 2003-09-26 | 2009-10-14 | 株式会社ルネサステクノロジ | パケット通信装置 |
JP4612821B2 (ja) * | 2004-09-10 | 2011-01-12 | キヤノン株式会社 | 通信制御装置及び方法 |
US20060221953A1 (en) * | 2005-04-01 | 2006-10-05 | Claude Basso | Method and apparatus for blind checksum and correction for network transmissions |
JP2009116386A (ja) * | 2007-11-01 | 2009-05-28 | Sony Corp | 情報処理装置および方法、並びにプログラム |
JP2013102556A (ja) * | 2013-03-05 | 2013-05-23 | Renesas Electronics Corp | 通信装置及び方法 |
JP6433146B2 (ja) * | 2014-04-22 | 2018-12-05 | キヤノン株式会社 | 情報処理装置、システム、情報処理方法、コンピュータプログラム |
-
2018
- 2018-02-14 JP JP2018024189A patent/JP6938399B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019139638A (ja) | 2019-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6433146B2 (ja) | 情報処理装置、システム、情報処理方法、コンピュータプログラム | |
TWI406133B (zh) | 資料處理設備及資料傳送方法 | |
WO2009070324A1 (en) | A method for setting parameters and determining latency in a chained device system | |
US10956347B2 (en) | Data transfer device, arithmetic processing device, and data transfer method | |
JP5482230B2 (ja) | 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
WO2016202158A1 (zh) | 一种报文传输方法、装置及计算机可读存储介质 | |
US8230137B2 (en) | Network processor, reception controller and data reception processing method performing direct memory access transfer | |
JP2005167965A (ja) | パケット処理方法および装置 | |
US11336297B2 (en) | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium | |
JP6938399B2 (ja) | 通信装置、通信方法およびプログラム | |
US9137167B2 (en) | Host ethernet adapter frame forwarding | |
JP2004207891A (ja) | データ通信装置、データ通信方法、データ通信プログラム及びデータ通信プログラムを記録した記録媒体 | |
JP2019016054A (ja) | 情報処理システム、情報処理装置、及び情報処理システムの制御方法 | |
JP5391449B2 (ja) | 記憶装置 | |
US9544401B2 (en) | Device and method for data communication using a transmission ring buffer | |
CN115550442A (zh) | 数据包传输方法、装置、电子设备及存储介质 | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN113438097B (zh) | 一种网络加速的实现方法及装置 | |
JP5360594B2 (ja) | Dma転送装置及び方法 | |
JP7027145B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US11102150B2 (en) | Communication apparatus and control method for communication apparatus | |
JP7005303B2 (ja) | 通信装置、パケット生成装置およびそれらの制御方法 | |
JP2012049883A (ja) | 通信装置およびパケット処理方法 | |
JP2008059452A (ja) | 画像処理装置、画像処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210721 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210803 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210901 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6938399 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |