* [asm-generic:network-ioctl-v6 23/37] drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c:2206 cxgb_siocdevprivate() warn: potential spectre issue 'adapter->params.sge.qset' [r] (local cap)
@ 2021-07-23 6:01 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-23 6:01 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 52067 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-arch(a)vger.kernel.org
TO: Arnd Bergmann <arnd@arndb.de>
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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
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@line 2206 was first introduced by commit
:::::: 4d22de3e6cc4a09c369b504cd8bcde3385a974cd Add support for the latest 1G/10G Chelsio adapter, T3.
:::::: TO: Divy Le Ray <divy@chelsio.com>
:::::: CC: Jeff Garzik <jeff@garzik.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41286 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-07-23 6:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-23 6:01 [asm-generic:network-ioctl-v6 23/37] drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c:2206 cxgb_siocdevprivate() warn: potential spectre issue 'adapter->params.sge.qset' [r] (local cap) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.