162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright (c) 2003-2008 Chelsio, Inc. All rights reserved. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * This software is available to you under a choice of one of two 562306a36Sopenharmony_ci * licenses. You may choose to be licensed under the terms of the GNU 662306a36Sopenharmony_ci * General Public License (GPL) Version 2, available from the file 762306a36Sopenharmony_ci * COPYING in the main directory of this source tree, or the 862306a36Sopenharmony_ci * OpenIB.org BSD license below: 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Redistribution and use in source and binary forms, with or 1162306a36Sopenharmony_ci * without modification, are permitted provided that the following 1262306a36Sopenharmony_ci * conditions are met: 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * - Redistributions of source code must retain the above 1562306a36Sopenharmony_ci * copyright notice, this list of conditions and the following 1662306a36Sopenharmony_ci * disclaimer. 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * - Redistributions in binary form must reproduce the above 1962306a36Sopenharmony_ci * copyright notice, this list of conditions and the following 2062306a36Sopenharmony_ci * disclaimer in the documentation and/or other materials 2162306a36Sopenharmony_ci * provided with the distribution. 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 2462306a36Sopenharmony_ci * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2562306a36Sopenharmony_ci * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 2662306a36Sopenharmony_ci * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 2762306a36Sopenharmony_ci * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 2862306a36Sopenharmony_ci * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 2962306a36Sopenharmony_ci * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3062306a36Sopenharmony_ci * SOFTWARE. 3162306a36Sopenharmony_ci */ 3262306a36Sopenharmony_ci#ifndef __CHIOCTL_H__ 3362306a36Sopenharmony_ci#define __CHIOCTL_H__ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/* 3662306a36Sopenharmony_ci * Ioctl commands specific to this driver. 3762306a36Sopenharmony_ci */ 3862306a36Sopenharmony_cienum { 3962306a36Sopenharmony_ci CHELSIO_GETMTUTAB = 1029, 4062306a36Sopenharmony_ci CHELSIO_SETMTUTAB = 1030, 4162306a36Sopenharmony_ci CHELSIO_SET_PM = 1032, 4262306a36Sopenharmony_ci CHELSIO_GET_PM = 1033, 4362306a36Sopenharmony_ci CHELSIO_GET_MEM = 1038, 4462306a36Sopenharmony_ci CHELSIO_LOAD_FW = 1041, 4562306a36Sopenharmony_ci CHELSIO_SET_TRACE_FILTER = 1044, 4662306a36Sopenharmony_ci CHELSIO_SET_QSET_PARAMS = 1045, 4762306a36Sopenharmony_ci CHELSIO_GET_QSET_PARAMS = 1046, 4862306a36Sopenharmony_ci CHELSIO_SET_QSET_NUM = 1047, 4962306a36Sopenharmony_ci CHELSIO_GET_QSET_NUM = 1048, 5062306a36Sopenharmony_ci}; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistruct ch_reg { 5362306a36Sopenharmony_ci uint32_t cmd; 5462306a36Sopenharmony_ci uint32_t addr; 5562306a36Sopenharmony_ci uint32_t val; 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_cistruct ch_cntxt { 5962306a36Sopenharmony_ci uint32_t cmd; 6062306a36Sopenharmony_ci uint32_t cntxt_type; 6162306a36Sopenharmony_ci uint32_t cntxt_id; 6262306a36Sopenharmony_ci uint32_t data[4]; 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci/* context types */ 6662306a36Sopenharmony_cienum { CNTXT_TYPE_EGRESS, CNTXT_TYPE_FL, CNTXT_TYPE_RSP, CNTXT_TYPE_CQ }; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistruct ch_desc { 6962306a36Sopenharmony_ci uint32_t cmd; 7062306a36Sopenharmony_ci uint32_t queue_num; 7162306a36Sopenharmony_ci uint32_t idx; 7262306a36Sopenharmony_ci uint32_t size; 7362306a36Sopenharmony_ci uint8_t data[128]; 7462306a36Sopenharmony_ci}; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cistruct ch_mem_range { 7762306a36Sopenharmony_ci uint32_t cmd; 7862306a36Sopenharmony_ci uint32_t mem_id; 7962306a36Sopenharmony_ci uint32_t addr; 8062306a36Sopenharmony_ci uint32_t len; 8162306a36Sopenharmony_ci uint32_t version; 8262306a36Sopenharmony_ci uint8_t buf[]; 8362306a36Sopenharmony_ci}; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistruct ch_qset_params { 8662306a36Sopenharmony_ci uint32_t cmd; 8762306a36Sopenharmony_ci uint32_t qset_idx; 8862306a36Sopenharmony_ci int32_t txq_size[3]; 8962306a36Sopenharmony_ci int32_t rspq_size; 9062306a36Sopenharmony_ci int32_t fl_size[2]; 9162306a36Sopenharmony_ci int32_t intr_lat; 9262306a36Sopenharmony_ci int32_t polling; 9362306a36Sopenharmony_ci int32_t lro; 9462306a36Sopenharmony_ci int32_t cong_thres; 9562306a36Sopenharmony_ci int32_t vector; 9662306a36Sopenharmony_ci int32_t qnum; 9762306a36Sopenharmony_ci}; 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_cistruct ch_pktsched_params { 10062306a36Sopenharmony_ci uint32_t cmd; 10162306a36Sopenharmony_ci uint8_t sched; 10262306a36Sopenharmony_ci uint8_t idx; 10362306a36Sopenharmony_ci uint8_t min; 10462306a36Sopenharmony_ci uint8_t max; 10562306a36Sopenharmony_ci uint8_t binding; 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#ifndef TCB_SIZE 10962306a36Sopenharmony_ci# define TCB_SIZE 128 11062306a36Sopenharmony_ci#endif 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci/* TCB size in 32-bit words */ 11362306a36Sopenharmony_ci#define TCB_WORDS (TCB_SIZE / 4) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_cienum { MEM_CM, MEM_PMRX, MEM_PMTX }; /* ch_mem_range.mem_id values */ 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_cistruct ch_mtus { 11862306a36Sopenharmony_ci uint32_t cmd; 11962306a36Sopenharmony_ci uint32_t nmtus; 12062306a36Sopenharmony_ci uint16_t mtus[NMTUS]; 12162306a36Sopenharmony_ci}; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_cistruct ch_pm { 12462306a36Sopenharmony_ci uint32_t cmd; 12562306a36Sopenharmony_ci uint32_t tx_pg_sz; 12662306a36Sopenharmony_ci uint32_t tx_num_pg; 12762306a36Sopenharmony_ci uint32_t rx_pg_sz; 12862306a36Sopenharmony_ci uint32_t rx_num_pg; 12962306a36Sopenharmony_ci uint32_t pm_total; 13062306a36Sopenharmony_ci}; 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_cistruct ch_tcam { 13362306a36Sopenharmony_ci uint32_t cmd; 13462306a36Sopenharmony_ci uint32_t tcam_size; 13562306a36Sopenharmony_ci uint32_t nservers; 13662306a36Sopenharmony_ci uint32_t nroutes; 13762306a36Sopenharmony_ci uint32_t nfilters; 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistruct ch_tcb { 14162306a36Sopenharmony_ci uint32_t cmd; 14262306a36Sopenharmony_ci uint32_t tcb_index; 14362306a36Sopenharmony_ci uint32_t tcb_data[TCB_WORDS]; 14462306a36Sopenharmony_ci}; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_cistruct ch_tcam_word { 14762306a36Sopenharmony_ci uint32_t cmd; 14862306a36Sopenharmony_ci uint32_t addr; 14962306a36Sopenharmony_ci uint32_t buf[3]; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_cistruct ch_trace { 15362306a36Sopenharmony_ci uint32_t cmd; 15462306a36Sopenharmony_ci uint32_t sip; 15562306a36Sopenharmony_ci uint32_t sip_mask; 15662306a36Sopenharmony_ci uint32_t dip; 15762306a36Sopenharmony_ci uint32_t dip_mask; 15862306a36Sopenharmony_ci uint16_t sport; 15962306a36Sopenharmony_ci uint16_t sport_mask; 16062306a36Sopenharmony_ci uint16_t dport; 16162306a36Sopenharmony_ci uint16_t dport_mask; 16262306a36Sopenharmony_ci uint32_t vlan:12; 16362306a36Sopenharmony_ci uint32_t vlan_mask:12; 16462306a36Sopenharmony_ci uint32_t intf:4; 16562306a36Sopenharmony_ci uint32_t intf_mask:4; 16662306a36Sopenharmony_ci uint8_t proto; 16762306a36Sopenharmony_ci uint8_t proto_mask; 16862306a36Sopenharmony_ci uint8_t invert_match:1; 16962306a36Sopenharmony_ci uint8_t config_tx:1; 17062306a36Sopenharmony_ci uint8_t config_rx:1; 17162306a36Sopenharmony_ci uint8_t trace_tx:1; 17262306a36Sopenharmony_ci uint8_t trace_rx:1; 17362306a36Sopenharmony_ci}; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci#define SIOCCHIOCTL SIOCDEVPRIVATE 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci#endif 178