1f7917c00SJeff Kirsher /* 2f7917c00SJeff Kirsher * Copyright (c) 2003-2008 Chelsio, Inc. All rights reserved. 3f7917c00SJeff Kirsher * 4f7917c00SJeff Kirsher * This software is available to you under a choice of one of two 5f7917c00SJeff Kirsher * licenses. You may choose to be licensed under the terms of the GNU 6f7917c00SJeff Kirsher * General Public License (GPL) Version 2, available from the file 7f7917c00SJeff Kirsher * COPYING in the main directory of this source tree, or the 8f7917c00SJeff Kirsher * OpenIB.org BSD license below: 9f7917c00SJeff Kirsher * 10f7917c00SJeff Kirsher * Redistribution and use in source and binary forms, with or 11f7917c00SJeff Kirsher * without modification, are permitted provided that the following 12f7917c00SJeff Kirsher * conditions are met: 13f7917c00SJeff Kirsher * 14f7917c00SJeff Kirsher * - Redistributions of source code must retain the above 15f7917c00SJeff Kirsher * copyright notice, this list of conditions and the following 16f7917c00SJeff Kirsher * disclaimer. 17f7917c00SJeff Kirsher * 18f7917c00SJeff Kirsher * - Redistributions in binary form must reproduce the above 19f7917c00SJeff Kirsher * copyright notice, this list of conditions and the following 20f7917c00SJeff Kirsher * disclaimer in the documentation and/or other materials 21f7917c00SJeff Kirsher * provided with the distribution. 22f7917c00SJeff Kirsher * 23f7917c00SJeff Kirsher * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24f7917c00SJeff Kirsher * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25f7917c00SJeff Kirsher * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26f7917c00SJeff Kirsher * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27f7917c00SJeff Kirsher * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28f7917c00SJeff Kirsher * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29f7917c00SJeff Kirsher * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30f7917c00SJeff Kirsher * SOFTWARE. 31f7917c00SJeff Kirsher */ 32f7917c00SJeff Kirsher #ifndef __CHIOCTL_H__ 33f7917c00SJeff Kirsher #define __CHIOCTL_H__ 34f7917c00SJeff Kirsher 35f7917c00SJeff Kirsher /* 36f7917c00SJeff Kirsher * Ioctl commands specific to this driver. 37f7917c00SJeff Kirsher */ 38f7917c00SJeff Kirsher enum { 39f7917c00SJeff Kirsher CHELSIO_GETMTUTAB = 1029, 40f7917c00SJeff Kirsher CHELSIO_SETMTUTAB = 1030, 41f7917c00SJeff Kirsher CHELSIO_SET_PM = 1032, 42f7917c00SJeff Kirsher CHELSIO_GET_PM = 1033, 43f7917c00SJeff Kirsher CHELSIO_GET_MEM = 1038, 44f7917c00SJeff Kirsher CHELSIO_LOAD_FW = 1041, 45f7917c00SJeff Kirsher CHELSIO_SET_TRACE_FILTER = 1044, 46f7917c00SJeff Kirsher CHELSIO_SET_QSET_PARAMS = 1045, 47f7917c00SJeff Kirsher CHELSIO_GET_QSET_PARAMS = 1046, 48f7917c00SJeff Kirsher CHELSIO_SET_QSET_NUM = 1047, 49f7917c00SJeff Kirsher CHELSIO_GET_QSET_NUM = 1048, 50f7917c00SJeff Kirsher }; 51f7917c00SJeff Kirsher 52f7917c00SJeff Kirsher struct ch_reg { 53f7917c00SJeff Kirsher uint32_t cmd; 54f7917c00SJeff Kirsher uint32_t addr; 55f7917c00SJeff Kirsher uint32_t val; 56f7917c00SJeff Kirsher }; 57f7917c00SJeff Kirsher 58f7917c00SJeff Kirsher struct ch_cntxt { 59f7917c00SJeff Kirsher uint32_t cmd; 60f7917c00SJeff Kirsher uint32_t cntxt_type; 61f7917c00SJeff Kirsher uint32_t cntxt_id; 62f7917c00SJeff Kirsher uint32_t data[4]; 63f7917c00SJeff Kirsher }; 64f7917c00SJeff Kirsher 65f7917c00SJeff Kirsher /* context types */ 66f7917c00SJeff Kirsher enum { CNTXT_TYPE_EGRESS, CNTXT_TYPE_FL, CNTXT_TYPE_RSP, CNTXT_TYPE_CQ }; 67f7917c00SJeff Kirsher 68f7917c00SJeff Kirsher struct ch_desc { 69f7917c00SJeff Kirsher uint32_t cmd; 70f7917c00SJeff Kirsher uint32_t queue_num; 71f7917c00SJeff Kirsher uint32_t idx; 72f7917c00SJeff Kirsher uint32_t size; 73f7917c00SJeff Kirsher uint8_t data[128]; 74f7917c00SJeff Kirsher }; 75f7917c00SJeff Kirsher 76f7917c00SJeff Kirsher struct ch_mem_range { 77f7917c00SJeff Kirsher uint32_t cmd; 78f7917c00SJeff Kirsher uint32_t mem_id; 79f7917c00SJeff Kirsher uint32_t addr; 80f7917c00SJeff Kirsher uint32_t len; 81f7917c00SJeff Kirsher uint32_t version; 82*65dc2f1aSGustavo A. R. Silva uint8_t buf[]; 83f7917c00SJeff Kirsher }; 84f7917c00SJeff Kirsher 85f7917c00SJeff Kirsher struct ch_qset_params { 86f7917c00SJeff Kirsher uint32_t cmd; 87f7917c00SJeff Kirsher uint32_t qset_idx; 88f7917c00SJeff Kirsher int32_t txq_size[3]; 89f7917c00SJeff Kirsher int32_t rspq_size; 90f7917c00SJeff Kirsher int32_t fl_size[2]; 91f7917c00SJeff Kirsher int32_t intr_lat; 92f7917c00SJeff Kirsher int32_t polling; 93f7917c00SJeff Kirsher int32_t lro; 94f7917c00SJeff Kirsher int32_t cong_thres; 95f7917c00SJeff Kirsher int32_t vector; 96f7917c00SJeff Kirsher int32_t qnum; 97f7917c00SJeff Kirsher }; 98f7917c00SJeff Kirsher 99f7917c00SJeff Kirsher struct ch_pktsched_params { 100f7917c00SJeff Kirsher uint32_t cmd; 101f7917c00SJeff Kirsher uint8_t sched; 102f7917c00SJeff Kirsher uint8_t idx; 103f7917c00SJeff Kirsher uint8_t min; 104f7917c00SJeff Kirsher uint8_t max; 105f7917c00SJeff Kirsher uint8_t binding; 106f7917c00SJeff Kirsher }; 107f7917c00SJeff Kirsher 108f7917c00SJeff Kirsher #ifndef TCB_SIZE 109f7917c00SJeff Kirsher # define TCB_SIZE 128 110f7917c00SJeff Kirsher #endif 111f7917c00SJeff Kirsher 112f7917c00SJeff Kirsher /* TCB size in 32-bit words */ 113f7917c00SJeff Kirsher #define TCB_WORDS (TCB_SIZE / 4) 114f7917c00SJeff Kirsher 115f7917c00SJeff Kirsher enum { MEM_CM, MEM_PMRX, MEM_PMTX }; /* ch_mem_range.mem_id values */ 116f7917c00SJeff Kirsher 117f7917c00SJeff Kirsher struct ch_mtus { 118f7917c00SJeff Kirsher uint32_t cmd; 119f7917c00SJeff Kirsher uint32_t nmtus; 120f7917c00SJeff Kirsher uint16_t mtus[NMTUS]; 121f7917c00SJeff Kirsher }; 122f7917c00SJeff Kirsher 123f7917c00SJeff Kirsher struct ch_pm { 124f7917c00SJeff Kirsher uint32_t cmd; 125f7917c00SJeff Kirsher uint32_t tx_pg_sz; 126f7917c00SJeff Kirsher uint32_t tx_num_pg; 127f7917c00SJeff Kirsher uint32_t rx_pg_sz; 128f7917c00SJeff Kirsher uint32_t rx_num_pg; 129f7917c00SJeff Kirsher uint32_t pm_total; 130f7917c00SJeff Kirsher }; 131f7917c00SJeff Kirsher 132f7917c00SJeff Kirsher struct ch_tcam { 133f7917c00SJeff Kirsher uint32_t cmd; 134f7917c00SJeff Kirsher uint32_t tcam_size; 135f7917c00SJeff Kirsher uint32_t nservers; 136f7917c00SJeff Kirsher uint32_t nroutes; 137f7917c00SJeff Kirsher uint32_t nfilters; 138f7917c00SJeff Kirsher }; 139f7917c00SJeff Kirsher 140f7917c00SJeff Kirsher struct ch_tcb { 141f7917c00SJeff Kirsher uint32_t cmd; 142f7917c00SJeff Kirsher uint32_t tcb_index; 143f7917c00SJeff Kirsher uint32_t tcb_data[TCB_WORDS]; 144f7917c00SJeff Kirsher }; 145f7917c00SJeff Kirsher 146f7917c00SJeff Kirsher struct ch_tcam_word { 147f7917c00SJeff Kirsher uint32_t cmd; 148f7917c00SJeff Kirsher uint32_t addr; 149f7917c00SJeff Kirsher uint32_t buf[3]; 150f7917c00SJeff Kirsher }; 151f7917c00SJeff Kirsher 152f7917c00SJeff Kirsher struct ch_trace { 153f7917c00SJeff Kirsher uint32_t cmd; 154f7917c00SJeff Kirsher uint32_t sip; 155f7917c00SJeff Kirsher uint32_t sip_mask; 156f7917c00SJeff Kirsher uint32_t dip; 157f7917c00SJeff Kirsher uint32_t dip_mask; 158f7917c00SJeff Kirsher uint16_t sport; 159f7917c00SJeff Kirsher uint16_t sport_mask; 160f7917c00SJeff Kirsher uint16_t dport; 161f7917c00SJeff Kirsher uint16_t dport_mask; 162f7917c00SJeff Kirsher uint32_t vlan:12; 163f7917c00SJeff Kirsher uint32_t vlan_mask:12; 164f7917c00SJeff Kirsher uint32_t intf:4; 165f7917c00SJeff Kirsher uint32_t intf_mask:4; 166f7917c00SJeff Kirsher uint8_t proto; 167f7917c00SJeff Kirsher uint8_t proto_mask; 168f7917c00SJeff Kirsher uint8_t invert_match:1; 169f7917c00SJeff Kirsher uint8_t config_tx:1; 170f7917c00SJeff Kirsher uint8_t config_rx:1; 171f7917c00SJeff Kirsher uint8_t trace_tx:1; 172f7917c00SJeff Kirsher uint8_t trace_rx:1; 173f7917c00SJeff Kirsher }; 174f7917c00SJeff Kirsher 175f7917c00SJeff Kirsher #define SIOCCHIOCTL SIOCDEVPRIVATE 176f7917c00SJeff Kirsher 177f7917c00SJeff Kirsher #endif 178