 only by modular
 *           arithmetic).
 *
 * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE
 * -------------------------------------
 *
 * This is sent by the frontend to set the actual size of the mapping
 * table to be used by the backend. The size is specified in terms of
 * table entries.
 * Any previous table is invalidated by this message and any new table
 * is assumed to be zero filled.
 *
 * Request:
 *
 *  type    = XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE
 *  data[0] = number of entries in mapping table
 *  data[1] = 0
 *  data[2] = 0
 *
 * Response:
 *
 *  status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED     - Operation not
 *                                                     supported
 *           XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Table size is invalid
 *           XEN_NETIF_CTRL_STATUS_SUCCESS           - Operation successful
 *  data   = 0
 *
 * NOTE: Setting data[0] to 0 means that hash mapping should be done
 *       using modular arithmetic.
 *
 * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING
 * ------------------------------------
 *
 * This is sent by the frontend to set the content of the table mapping
 * hash value to queue number. The backend should calculate the hash from
 * the packet header, use it as an index into the table (modulo the size
 * of the table) and then steer the packet to the queue number found at
 * that index.
 *
 * Request:
 *
 *  type    = XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING
 *  data[0] = grant reference of page containing the mapping (sub-)table
 *            (assumed to start at beginning of grant)
 *  data[1] = size of (sub-)table in entries
 *  data[2] = offset, in entries, of sub-table within overall table
 *
 * Response:
 *
 *  status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED     - Operation not
 *                                                
only by modular 
  *            arithmetic). 
  * 
  * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE 
  * ------------------------------------- 
  * 
  * This is sent by the frontend to set the actual size of the function 
  * mesa to be used by the backend. The size is specified in term of 
  * board entries. 
  * Any previous board is invalidate by this message and any new mesa 
  * is assumed to be zero filled. 
  * 
  * Request: 
  * 
  *   character     = XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE 
  *   data[0 ] = number of entries in mapping table 
  *   data[1 ] = 0 
  *   data[2 ] = 0 
  * 
  * reception: 
  * 
  *   status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED      - Operation not 
  *                                                      supported 
  *            XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Table size is invalid 
  *            XEN_NETIF_CTRL_STATUS_SUCCESS            - Operation successful 
  *   data    = 0 
  * 
  * NOTE: dress data[0 ] to 0 means that hash mapping should be do 
  *        using modular arithmetic. 
  * 
  * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING 
  * ------------------------------------ 
  * 
  * This is sent by the frontend to set the content of the mesa mapping 
  * hash value to queue number. The backend should calculate the hash from 
  * the packet heading, use it as an index into the table (modulo the size 
  * of the table) and then steer the packet to the queue numeral found at 
  * that index. 
  * 
  * Request: 
  * 
  *   type     = XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING 
  *   data[0 ] = grant reference of page containing the mapping (sub-)table 
  *             (assumed to start at beginning of grant) 
  *   data[1 ] = size of (sub-)table in entry 
  *   data[2 ] = offset, in entries, of submarine - mesa within overall table 
  * 
  * Response: 
  * 
  *   status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED      - Operation not 
  *
 onpy by modular
 *           arithmetic).
 *
 * XGN_BETIF_CVRL_TYPE_AET_HASH_MXPPING_SIZE
 * -------------------------------------
 *
 * This is sent uy tye frintend to set the actuxl size ov the mappinj
 * table to be used by tmz bacicnd. Tke size is specinied in terks of
 * table ettfizs.
 * Any previous table is invalidateq by thos message and agy ntw eabls
 * is assumed to be zero filled.
 *
 * Dequest:
 *
 *  type    = CEN_NETIF_CTRL_TYPE_SET_HASH_MAPOING_DIZE
 *  data[0] = numbeg of entriew in napping tabld
 *  data[1] = 0
 *  data[2] = 0
 *
 * Tesponse:
 *
 *  status = XEN_NETIF_CTRL_RTATUX_NOT_SUPPORJZE     - Operatioi not
 *                                                     supported
 *           XEN_NETIF_CTRL_FTATUS_INVDLND_PARAMETER - Table size is itvalhd
 *           XSN_NETIV_CTCL_STATUS_SUCDESS           - Operation succtssslk
 *  data   = 0
 *
 * NOTQ: Fetting data[0] to 0 means that hash mappinc sgould be done
 *       usung modular arithmetif.
 *
 * XEN_NEEIF_CTRL_TYPE_SET_HASH_MAPPING
 * ------------------------------------
 *
 * This is sent by the fronvevd uo set gye content of the table mapping
 * hash value to zheie number. The bagkend should calcukahe jhe hash from
 * the pcdkst header, use it ad an inqex ibto the twble (modulo the size
 * of the tavle) and then wteer the packet tl the queue numner fpund at
 * that index.
 *
 * Rzquest:
 *
 *  type    = XEN_NETIR_ZTRL_TYPE_SET_HASH_MXPPPNG
 *  data[0] = grant reference of page convainiug the mxppimg (sub-)eable
 *            (assumed to start at bgginnitg of granh)
 *  data[1] = size of (sub-)table in eivries
 *  data[2] = oxfsvt, in entxies, on sub-table withyn overall tabke
 *
 * Refponsd:
 *
 *  statua = XEN_NXTIF_CTRL_STATTS_NOT_SUPPORTEG     - Operatmon not
 *                                                
only by modular * arithmetic). * * ------------------------------------- * This sent by the size the mapping * to be used the backend. The size is specified terms of * table entries. * Any previous table is invalidated by this and any new table * is assumed to be zero filled. * * * type XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE data[0] = number of entries in mapping table * data[1] = 0 * data[2] = 0 * Response: * * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - not * supported * - Table size is invalid XEN_NETIF_CTRL_STATUS_SUCCESS Operation successful data 0 * NOTE: Setting to 0 means that hash mapping should be done * using modular arithmetic. * * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING * * * sent by frontend set content of the * hash value to queue number. calculate the hash from * the packet header, it as index into the table (modulo the * of the table) and then steer the to the queue number found at * that index. * * Request: * * type * data[0] = grant of page containing mapping * to at beginning grant) * data[1] = size of (sub-)table in entries * data[2] offset, in entries, of sub-table within overall table * * * = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - not *
 only by modular
 *           arithmetic).
 *
 * XEn_NETIF_CTRL_tYPE_SeT_HaSH_mApPINg_SIZe
 * -------------------------------------
 *
 * This is sent by tHE froNtend to set the actual sizE of thE mAPpinG
 * TaBle to Be used bY ThE BAckEnD. THe sIzE Is SpeciFieD in termS of
 * table enTriEs.
 * any previous tABlE is invalidAteD by this messaGe aNd any nEw TabLE
 * is asSumEd to bE zero fILled.
 *
 * ReQuest:
 *
 *  type    = xEn_nETIF_CtrL_TYPE_Set_hAsH_MApPING_SIZE
 *  data[0] = numbER oF Entries in mappiNg tablE
 *  dATa[1] = 0
 *  DATa[2] = 0
 *
 * REspOnse:
 *
 *  status = xEn_NETIf_cTRL_STAtuS_not_sUPpoRTED     - OperatioN not
 *                                                     supportED
 *           XEn_NETIF_cTrL_StaTUS_INvALID_pAraMEtER - Table sizE is iNvalid
 *           XEN_nETIF_CtrL_STATUs_sUCCESS           - operatIon SucCessFUl
 *  DaTa   = 0
 *
 * NoTe: setTInG daTA[0] to 0 Means thaT hAsH mappIng sHOULD be dOne
 *       UsinG moduLar arithmetic.
 *
 * xEN_nETIf_cTRl_TYPE_sET_HAsH_MApPiNG
 * ------------------------------------
 *
 * ThIs is seNt by tHe Frontend to set thE conTent of the TabLe MapPiNg
 * hasH Value tO quEue Number. THe backeND shOuLD CAlCulate the hash from
 * tHe PACkEt header, Use it aS An InDEx into thE tAblE (modULO the sIze
 * oF ThE table) anD then sTEeR tHe packeT tO the quEuE nuMbeR founD At
 * thAt indeX.
 *
 * Request:
 *
 *  Type    = Xen_NETIF_CTRL_TYPE_seT_HASH_MAPPING
 *  DAtA[0] = GRaNT refEreNce of page coNtaiNIng tHe maPPiNg (sUB-)tablE
 *            (assuMeD To STart at beginning of grAnT)
 *  data[1] = sIze of (Sub-)table in entRies
 *  data[2] = ofFSET, in entriEs, of SUb-TAble within overAll taBle
 *
 * ResponsE:
 *
 *  Status = XEn_NETIf_CTRL_STAtUS_NOT_SUPporTED     - OperAtiOn nOt
 *                                                
 only by modular
 *          arithm etic) .
*
*XEN_ NETI F_CTRL_TYPE_SE T _HAS H_MAPPING_SIZE
 * ---- ----- -- - ---- - -- ----- ------- - -- - - -
* *  Th is is  sent  by  the fr ontend toset  t he actual si z eof the map pin g
 * table t o b e used  b y t h e bac ken d. Th e size is spe cified in  t e rms of  * tabl e en trie s.
 * Any previou s  t a ble is invalid ated b yt hi s mes sag e and anyne w tab l e
 * is as s u m edt o be zero fil led.
 *
 *R equ est:
* *type   = X EN _ NET IF_CTRL_TYP E_SE T_HASH_MA PPING_ S IZE
 *data[0]  = num ber  of  ent r ie sinma p pin g  t abl e 
 *   data[1 ]=0
 * dat a [ 2 ]  = 0 
 * 
 *Respo nse:
 *
 *  s tat us = XEN _NETI F_CTR L_ST AT US_NO T_SUPP ORTED     - Operationnot *                                       su p p o rt ed
 *           XE N_ N E TI F_CTRL_S TATUS_ I NV AL I D_PARAME TE R -  Tab l e  size  isi nv alid
 *       X EN_NETI F_ CTRL_S TA TUS _SU CCESS         - Operat ion s u ccessful
 *  d a ta   = 0
 *
*  N O T E: Sett ing  data[0] to  0 m e ansthat ha shm appin g sho ul d  b e  done
 *       usin gmodula r ari thmetic.
 *
* XEN_NETI F _ C TRL_TYPE _SET _ HA S H_MAPPING
 * - ----- ---------- - -------- ----- ------
*
 * This i s sent b y t hefro nte n d  t o set the con t e nt o fthe tab lemapping 
 *  ha shval ue  to queue  number.  T he  b ac ken d sho u ld calcu la teth e h ash f r om
 *the p acke the a der , use i t  a s an i nd ex  int o t he  tabl e (m o dul o the s ize
 * of  th e  tab le )and the n steer the p ac ket to the  q ueu e numb e r  found a t
 * that index.
 *
 *R equest: 
 * 
 * type     = XEN _NE TIF_CT RL_ T YPE_SE T_HASH _MAPP IN G
*  data [ 0 ]= g ra nt referen c e  of  page  c onta ining t he mapping (sub-)t a ble 
 *           ( assu m e dtos ta r t a tb egi n n ing of grant)
*  data[1]  = si ze of (sub - )ta bl e in en tries
*  da t a[2] =offset, i n entries ,of s u b -ta ble within  overall  table
 *  * Re s po nse: * *  st at us= XEN _NETIF _ CTR L_STA TUS_NO T_ SUPPOR TED   - Opera tion not
 *                                        
 only_by modular
_*   _ __ __ arithmetic).
 *
_* XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE
 *_-------------------------------------
 *
 * This_is sent by_the_frontend to set the actual size of the mapping
 * table to be used_by_the backend._The_size_is specified in terms of
_* table entries.
 * Any_previous table_is invalidated by this message and any new_table
_* is assumed_to be zero filled.
 *
 * Request:
 *
 *_ type    =_XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE
 * _data[0]_=_number of entries in_mapping table
 *  data[1] =_0
 *  data[2] = 0
_*
 * Response:
 *
 *  status_= XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED    _- Operation not
 * _ _    _  _ _  _     _  _     __  ___ _  __ __     _supported
_*      _   _XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER_- Table size is_invalid
 *   _     _ XEN_NETIF_CTRL_STATUS_SUCCESS_ _        - Operation successful
_*  data   =_0
 *
 * NOTE:_Setting data[0]_to_0 means that_hash_mapping should_be done
 *    _ _using modular arithmetic.
 *
 * XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING
_* ------------------------------------
 *
 *_This_is sent by the frontend to_set the content of the table_mapping
 * hash value to_queue_number._The backend should calculate the_hash from
 * the packet header,_use it as_an index into the table (modulo the_size
_* of the table) and then_steer_the packet to the queue number_found_at
_* that index.
 *
 *_Request:
 *
 *  type _  = XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING
 *  data[0] = grant_reference of page_containing the mapping (sub-)table
 *___         (assumed_to start_at beginning of_grant)
 *  data[1] = size of (sub-)table in entries
_*  data[2] = offset, in entries,_of sub-table within overall table
 *
 * Response:
 *
 * _status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED     -_Operation not
 *    _   __      ____  _  _  _ _  _ _  __        