CC: [email protected] CC: [email protected] TO: Arnd Bergmann <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git network-ioctl-v6 head: 53ee412663f70832b994bdeeb5f72a928764ffe3 commit: 1e44deef61cb16a66cc238ab857b027c600e29a4 [23/37] cxgb3: use ndo_siocdevprivate :::::: branch date: 23 hours ago :::::: commit date: 23 hours ago config: x86_64-randconfig-m001-20210723 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c:2206 cxgb_siocdevprivate() warn: potential spectre issue 'adapter->params.sge.qset' [r] (local cap) drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c:2224 cxgb_siocdevprivate() warn: potential spectre issue 'adapter->sge.qs' [r] (local cap) drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c:2296 cxgb_siocdevprivate() warn: potential spectre issue 'adapter->msix_info' [r] vim +2206 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2137 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2138 static int cxgb_siocdevprivate(struct net_device *dev, 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2139 struct ifreq *ifreq, 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2140 void __user *useraddr, 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2141 int cmd) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2142 { 5fbf816fe7d72b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-08-29 2143 struct port_info *pi = netdev_priv(dev); 5fbf816fe7d72b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-08-29 2144 struct adapter *adapter = pi->adapter; 5fbf816fe7d72b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-08-29 2145 int ret; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2146 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2147 if (cmd != SIOCCHIOCTL) 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2148 return -EOPNOTSUPP; 1e44deef61cb16 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Arnd Bergmann 2020-11-06 2149 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2150 if (copy_from_user(&cmd, useraddr, sizeof(cmd))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2151 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2152 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2153 switch (cmd) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2154 case CHELSIO_SET_QSET_PARAMS:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2155 int i; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2156 struct qset_params *q; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2157 struct ch_qset_params t; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2158 int q1 = pi->first_qset; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2159 int nqsets = pi->nqsets; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2160 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2161 if (!capable(CAP_NET_ADMIN)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2162 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2163 if (copy_from_user(&t, useraddr, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2164 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2165 if (t.cmd != CHELSIO_SET_QSET_PARAMS) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2166 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2167 if (t.qset_idx >= SGE_QSETS) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2168 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2169 if (!in_range(t.intr_lat, 0, M_NEWTIMER) || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2170 !in_range(t.cong_thres, 0, 255) || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2171 !in_range(t.txq_size[0], MIN_TXQ_ENTRIES, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2172 MAX_TXQ_ENTRIES) || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2173 !in_range(t.txq_size[1], MIN_TXQ_ENTRIES, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2174 MAX_TXQ_ENTRIES) || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2175 !in_range(t.txq_size[2], MIN_CTRL_TXQ_ENTRIES, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2176 MAX_CTRL_TXQ_ENTRIES) || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2177 !in_range(t.fl_size[0], MIN_FL_ENTRIES, 8e95a2026f3b43 drivers/net/cxgb3/cxgb3_main.c Joe Perches 2009-12-03 2178 MAX_RX_BUFFERS) || 8e95a2026f3b43 drivers/net/cxgb3/cxgb3_main.c Joe Perches 2009-12-03 2179 !in_range(t.fl_size[1], MIN_FL_ENTRIES, 8e95a2026f3b43 drivers/net/cxgb3/cxgb3_main.c Joe Perches 2009-12-03 2180 MAX_RX_JUMBO_BUFFERS) || 8e95a2026f3b43 drivers/net/cxgb3/cxgb3_main.c Joe Perches 2009-12-03 2181 !in_range(t.rspq_size, MIN_RSPQ_ENTRIES, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2182 MAX_RSPQ_ENTRIES)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2183 return -EINVAL; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2184 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2185 if ((adapter->flags & FULL_INIT_DONE) && 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2186 (t.rspq_size >= 0 || t.fl_size[0] >= 0 || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2187 t.fl_size[1] >= 0 || t.txq_size[0] >= 0 || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2188 t.txq_size[1] >= 0 || t.txq_size[2] >= 0 || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2189 t.polling >= 0 || t.cong_thres >= 0)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2190 return -EBUSY; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2191 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2192 /* Allow setting of any available qset when offload enabled */ 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2193 if (test_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map)) { 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2194 q1 = 0; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2195 for_each_port(adapter, i) { 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2196 pi = adap2pinfo(adapter, i); 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2197 nqsets += pi->first_qset + pi->nqsets; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2198 } 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2199 } 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2200 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2201 if (t.qset_idx < q1) 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2202 return -EINVAL; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2203 if (t.qset_idx > q1 + nqsets - 1) 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2204 return -EINVAL; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2205 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 @2206 q = &adapter->params.sge.qset[t.qset_idx]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2207 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2208 if (t.rspq_size >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2209 q->rspq_size = t.rspq_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2210 if (t.fl_size[0] >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2211 q->fl_size = t.fl_size[0]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2212 if (t.fl_size[1] >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2213 q->jumbo_size = t.fl_size[1]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2214 if (t.txq_size[0] >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2215 q->txq_size[0] = t.txq_size[0]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2216 if (t.txq_size[1] >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2217 q->txq_size[1] = t.txq_size[1]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2218 if (t.txq_size[2] >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2219 q->txq_size[2] = t.txq_size[2]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2220 if (t.cong_thres >= 0) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2221 q->cong_thres = t.cong_thres; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2222 if (t.intr_lat >= 0) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2223 struct sge_qset *qs = 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 @2224 &adapter->sge.qs[t.qset_idx]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2225 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2226 q->coalesce_usecs = t.intr_lat; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2227 t3_update_qset_coalesce(qs, q); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2228 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2229 if (t.polling >= 0) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2230 if (adapter->flags & USING_MSIX) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2231 q->polling = t.polling; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2232 else { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2233 /* No polling with INTx for T3A */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2234 if (adapter->params.rev == 0 && 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2235 !(adapter->flags & USING_MSI)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2236 t.polling = 0; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2237 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2238 for (i = 0; i < SGE_QSETS; i++) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2239 q = &adapter->params.sge. 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2240 qset[i]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2241 q->polling = t.polling; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2242 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2243 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2244 } d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2245 d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2246 if (t.lro >= 0) { d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2247 if (t.lro) d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2248 dev->wanted_features |= NETIF_F_GRO; d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2249 else d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2250 dev->wanted_features &= ~NETIF_F_GRO; d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2251 netdev_update_features(dev); d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2252 } 04ecb07241d873 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-28 2253 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2254 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2255 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2256 case CHELSIO_GET_QSET_PARAMS:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2257 struct qset_params *q; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2258 struct ch_qset_params t; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2259 int q1 = pi->first_qset; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2260 int nqsets = pi->nqsets; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2261 int i; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2262 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2263 if (copy_from_user(&t, useraddr, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2264 return -EFAULT; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2265 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2266 if (t.cmd != CHELSIO_GET_QSET_PARAMS) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2267 return -EINVAL; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2268 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2269 /* Display qsets for all ports when offload enabled */ 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2270 if (test_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map)) { 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2271 q1 = 0; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2272 for_each_port(adapter, i) { 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2273 pi = adap2pinfo(adapter, i); 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2274 nqsets = pi->first_qset + pi->nqsets; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2275 } 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2276 } 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2277 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2278 if (t.qset_idx >= nqsets) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2279 return -EINVAL; 676bcfece19f83 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Gustavo A. R. Silva 2018-07-16 2280 t.qset_idx = array_index_nospec(t.qset_idx, nqsets); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2281 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2282 q = &adapter->params.sge.qset[q1 + t.qset_idx]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2283 t.rspq_size = q->rspq_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2284 t.txq_size[0] = q->txq_size[0]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2285 t.txq_size[1] = q->txq_size[1]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2286 t.txq_size[2] = q->txq_size[2]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2287 t.fl_size[0] = q->fl_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2288 t.fl_size[1] = q->jumbo_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2289 t.polling = q->polling; d2fe2755342b30 drivers/net/cxgb3/cxgb3_main.c Michał Mirosław 2011-04-17 2290 t.lro = !!(dev->features & NETIF_F_GRO); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2291 t.intr_lat = q->coalesce_usecs; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2292 t.cong_thres = q->cong_thres; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2293 t.qnum = q1; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2294 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2295 if (adapter->flags & USING_MSIX) 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 @2296 t.vector = adapter->msix_info[q1 + t.qset_idx + 1].vec; 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2297 else 8c26376112fb4b drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2008-10-08 2298 t.vector = adapter->pdev->irq; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2299 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2300 if (copy_to_user(useraddr, &t, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2301 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2302 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2303 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2304 case CHELSIO_SET_QSET_NUM:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2305 struct ch_reg edata; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2306 unsigned int i, first_qset = 0, other_qsets = 0; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2307 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2308 if (!capable(CAP_NET_ADMIN)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2309 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2310 if (adapter->flags & FULL_INIT_DONE) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2311 return -EBUSY; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2312 if (copy_from_user(&edata, useraddr, sizeof(edata))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2313 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2314 if (edata.cmd != CHELSIO_SET_QSET_NUM) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2315 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2316 if (edata.val < 1 || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2317 (edata.val > 1 && !(adapter->flags & USING_MSIX))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2318 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2319 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2320 for_each_port(adapter, i) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2321 if (adapter->port[i] && adapter->port[i] != dev) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2322 other_qsets += adap2pinfo(adapter, i)->nqsets; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2323 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2324 if (edata.val + other_qsets > SGE_QSETS) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2325 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2326 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2327 pi->nqsets = edata.val; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2328 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2329 for_each_port(adapter, i) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2330 if (adapter->port[i]) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2331 pi = adap2pinfo(adapter, i); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2332 pi->first_qset = first_qset; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2333 first_qset += pi->nqsets; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2334 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2335 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2336 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2337 case CHELSIO_GET_QSET_NUM:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2338 struct ch_reg edata; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2339 49c37c0334a9b8 drivers/net/cxgb3/cxgb3_main.c Dan Rosenberg 2010-09-15 2340 memset(&edata, 0, sizeof(struct ch_reg)); 49c37c0334a9b8 drivers/net/cxgb3/cxgb3_main.c Dan Rosenberg 2010-09-15 2341 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2342 edata.cmd = CHELSIO_GET_QSET_NUM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2343 edata.val = pi->nqsets; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2344 if (copy_to_user(useraddr, &edata, sizeof(edata))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2345 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2346 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2347 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2348 case CHELSIO_LOAD_FW:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2349 u8 *fw_data; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2350 struct ch_mem_range t; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2351 1b3aa7afb60d34 drivers/net/cxgb3/cxgb3_main.c Alan Cox 2008-04-29 2352 if (!capable(CAP_SYS_RAWIO)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2353 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2354 if (copy_from_user(&t, useraddr, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2355 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2356 if (t.cmd != CHELSIO_LOAD_FW) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2357 return -EINVAL; 1b3aa7afb60d34 drivers/net/cxgb3/cxgb3_main.c Alan Cox 2008-04-29 2358 /* Check t.len sanity ? */ c5dc9a3581f486 drivers/net/cxgb3/cxgb3_main.c Julia Lawall 2010-05-21 2359 fw_data = memdup_user(useraddr + sizeof(t), t.len); c5dc9a3581f486 drivers/net/cxgb3/cxgb3_main.c Julia Lawall 2010-05-21 2360 if (IS_ERR(fw_data)) c5dc9a3581f486 drivers/net/cxgb3/cxgb3_main.c Julia Lawall 2010-05-21 2361 return PTR_ERR(fw_data); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2362 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2363 ret = t3_load_fw(adapter, fw_data, t.len); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2364 kfree(fw_data); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2365 if (ret) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2366 return ret; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2367 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2368 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2369 case CHELSIO_SETMTUTAB:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2370 struct ch_mtus m; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2371 int i; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2372 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2373 if (!is_offload(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2374 return -EOPNOTSUPP; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2375 if (!capable(CAP_NET_ADMIN)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2376 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2377 if (offload_running(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2378 return -EBUSY; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2379 if (copy_from_user(&m, useraddr, sizeof(m))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2380 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2381 if (m.cmd != CHELSIO_SETMTUTAB) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2382 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2383 if (m.nmtus != NMTUS) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2384 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2385 if (m.mtus[0] < 81) /* accommodate SACK */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2386 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2387 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2388 /* MTUs must be in ascending order */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2389 for (i = 1; i < NMTUS; ++i) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2390 if (m.mtus[i] < m.mtus[i - 1]) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2391 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2392 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2393 memcpy(adapter->params.mtus, m.mtus, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2394 sizeof(adapter->params.mtus)); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2395 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2396 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2397 case CHELSIO_GET_PM:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2398 struct tp_params *p = &adapter->params.tp; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2399 struct ch_pm m = {.cmd = CHELSIO_GET_PM }; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2400 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2401 if (!is_offload(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2402 return -EOPNOTSUPP; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2403 m.tx_pg_sz = p->tx_pg_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2404 m.tx_num_pg = p->tx_num_pgs; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2405 m.rx_pg_sz = p->rx_pg_size; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2406 m.rx_num_pg = p->rx_num_pgs; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2407 m.pm_total = p->pmtx_size + p->chan_rx_size * p->nchan; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2408 if (copy_to_user(useraddr, &m, sizeof(m))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2409 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2410 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2411 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2412 case CHELSIO_SET_PM:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2413 struct ch_pm m; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2414 struct tp_params *p = &adapter->params.tp; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2415 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2416 if (!is_offload(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2417 return -EOPNOTSUPP; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2418 if (!capable(CAP_NET_ADMIN)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2419 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2420 if (adapter->flags & FULL_INIT_DONE) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2421 return -EBUSY; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2422 if (copy_from_user(&m, useraddr, sizeof(m))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2423 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2424 if (m.cmd != CHELSIO_SET_PM) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2425 return -EINVAL; d9da466a3ce2ac drivers/net/cxgb3/cxgb3_main.c vignesh babu 2007-07-09 2426 if (!is_power_of_2(m.rx_pg_sz) || d9da466a3ce2ac drivers/net/cxgb3/cxgb3_main.c vignesh babu 2007-07-09 2427 !is_power_of_2(m.tx_pg_sz)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2428 return -EINVAL; /* not power of 2 */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2429 if (!(m.rx_pg_sz & 0x14000)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2430 return -EINVAL; /* not 16KB or 64KB */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2431 if (!(m.tx_pg_sz & 0x1554000)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2432 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2433 if (m.tx_num_pg == -1) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2434 m.tx_num_pg = p->tx_num_pgs; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2435 if (m.rx_num_pg == -1) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2436 m.rx_num_pg = p->rx_num_pgs; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2437 if (m.tx_num_pg % 24 || m.rx_num_pg % 24) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2438 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2439 if (m.rx_num_pg * m.rx_pg_sz > p->chan_rx_size || 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2440 m.tx_num_pg * m.tx_pg_sz > p->chan_tx_size) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2441 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2442 p->rx_pg_size = m.rx_pg_sz; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2443 p->tx_pg_size = m.tx_pg_sz; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2444 p->rx_num_pgs = m.rx_num_pg; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2445 p->tx_num_pgs = m.tx_num_pg; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2446 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2447 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2448 case CHELSIO_GET_MEM:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2449 struct ch_mem_range t; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2450 struct mc7 *mem; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2451 u64 buf[32]; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2452 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2453 if (!is_offload(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2454 return -EOPNOTSUPP; 3546d8f1bbe992 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Michael Ellerman 2020-01-24 2455 if (!capable(CAP_NET_ADMIN)) 3546d8f1bbe992 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Michael Ellerman 2020-01-24 2456 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2457 if (!(adapter->flags & FULL_INIT_DONE)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2458 return -EIO; /* need the memory controllers */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2459 if (copy_from_user(&t, useraddr, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2460 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2461 if (t.cmd != CHELSIO_GET_MEM) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2462 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2463 if ((t.addr & 7) || (t.len & 7)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2464 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2465 if (t.mem_id == MEM_CM) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2466 mem = &adapter->cm; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2467 else if (t.mem_id == MEM_PMRX) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2468 mem = &adapter->pmrx; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2469 else if (t.mem_id == MEM_PMTX) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2470 mem = &adapter->pmtx; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2471 else 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2472 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2473 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2474 /* 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2475 * Version scheme: 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2476 * bits 0..9: chip version 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2477 * bits 10..15: chip revision 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2478 */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2479 t.version = 3 | (adapter->params.rev << 10); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2480 if (copy_to_user(useraddr, &t, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2481 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2482 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2483 /* 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2484 * Read 256 bytes at a time as len can be large and we don't 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2485 * want to use huge intermediate buffers. 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2486 */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2487 useraddr += sizeof(t); /* advance to start of buffer */ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2488 while (t.len) { 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2489 unsigned int chunk = 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2490 min_t(unsigned int, t.len, sizeof(buf)); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2491 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2492 ret = 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2493 t3_mc7_bd_read(mem, t.addr / 8, chunk / 8, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2494 buf); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2495 if (ret) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2496 return ret; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2497 if (copy_to_user(useraddr, buf, chunk)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2498 return -EFAULT; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2499 useraddr += chunk; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2500 t.addr += chunk; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2501 t.len -= chunk; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2502 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2503 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2504 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2505 case CHELSIO_SET_TRACE_FILTER:{ 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2506 struct ch_trace t; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2507 const struct trace_params *tp; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2508 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2509 if (!capable(CAP_NET_ADMIN)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2510 return -EPERM; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2511 if (!offload_running(adapter)) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2512 return -EAGAIN; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2513 if (copy_from_user(&t, useraddr, sizeof(t))) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2514 return -EFAULT; 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2515 if (t.cmd != CHELSIO_SET_TRACE_FILTER) 2c05d88818ab65 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c Wenwen Wang 2018-10-05 2516 return -EINVAL; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2517 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2518 tp = (const struct trace_params *)&t.sip; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2519 if (t.config_tx) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2520 t3_config_trace_filter(adapter, tp, 0, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2521 t.invert_match, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2522 t.trace_tx); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2523 if (t.config_rx) 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2524 t3_config_trace_filter(adapter, tp, 1, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2525 t.invert_match, 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2526 t.trace_rx); 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2527 break; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2528 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2529 default: 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2530 return -EOPNOTSUPP; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2531 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2532 return 0; 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2533 } 4d22de3e6cc4a0 drivers/net/cxgb3/cxgb3_main.c Divy Le Ray 2007-01-18 2534 :::::: The code at line 2206 was first introduced by commit :::::: 4d22de3e6cc4a09c369b504cd8bcde3385a974cd Add support for the latest 1G/10G Chelsio adapter, T3. :::::: TO: Divy Le Ray <[email protected]> :::::: CC: Jeff Garzik <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
