diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/cxgb3/adapter.h | 1 | ||||
-rw-r--r-- | drivers/net/cxgb3/cxgb3_ctl_defs.h | 7 | ||||
-rw-r--r-- | drivers/net/cxgb3/cxgb3_offload.c | 67 | ||||
-rw-r--r-- | drivers/net/cxgb3/sge.c | 67 | ||||
-rw-r--r-- | drivers/net/ppp_generic.c | 6 | ||||
-rw-r--r-- | drivers/net/usb/asix.c | 5 | ||||
-rw-r--r-- | drivers/net/usb/catc.c | 41 | ||||
-rw-r--r-- | drivers/net/usb/dm9601.c | 5 | ||||
-rw-r--r-- | drivers/net/usb/kaweth.c | 17 | ||||
-rw-r--r-- | drivers/net/usb/mcs7830.c | 5 | ||||
-rw-r--r-- | drivers/net/usb/pegasus.c | 33 | ||||
-rw-r--r-- | drivers/net/usb/rtl8150.c | 38 | ||||
-rw-r--r-- | drivers/net/usb/smsc95xx.c | 5 |
13 files changed, 206 insertions, 91 deletions
diff --git a/drivers/net/cxgb3/adapter.h b/drivers/net/cxgb3/adapter.h index c190a69c4d71..5b346f9eaa8b 100644 --- a/drivers/net/cxgb3/adapter.h +++ b/drivers/net/cxgb3/adapter.h | |||
@@ -63,6 +63,7 @@ struct port_info { | |||
63 | struct link_config link_config; | 63 | struct link_config link_config; |
64 | struct net_device_stats netstats; | 64 | struct net_device_stats netstats; |
65 | int activity; | 65 | int activity; |
66 | __be32 iscsi_ipv4addr; | ||
66 | }; | 67 | }; |
67 | 68 | ||
68 | enum { /* adapter flags */ | 69 | enum { /* adapter flags */ |
diff --git a/drivers/net/cxgb3/cxgb3_ctl_defs.h b/drivers/net/cxgb3/cxgb3_ctl_defs.h index 1d8d46eb3c96..55099eb3c70e 100644 --- a/drivers/net/cxgb3/cxgb3_ctl_defs.h +++ b/drivers/net/cxgb3/cxgb3_ctl_defs.h | |||
@@ -57,6 +57,7 @@ enum { | |||
57 | RDMA_GET_MIB = 19, | 57 | RDMA_GET_MIB = 19, |
58 | 58 | ||
59 | GET_RX_PAGE_INFO = 50, | 59 | GET_RX_PAGE_INFO = 50, |
60 | GET_ISCSI_IPV4ADDR = 51, | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | /* | 63 | /* |
@@ -86,6 +87,12 @@ struct iff_mac { | |||
86 | u16 vlan_tag; | 87 | u16 vlan_tag; |
87 | }; | 88 | }; |
88 | 89 | ||
90 | /* Structure used to request a port's iSCSI IPv4 address */ | ||
91 | struct iscsi_ipv4addr { | ||
92 | struct net_device *dev; /* the net_device */ | ||
93 | __be32 ipv4addr; /* the return iSCSI IPv4 address */ | ||
94 | }; | ||
95 | |||
89 | struct pci_dev; | 96 | struct pci_dev; |
90 | 97 | ||
91 | /* | 98 | /* |
diff --git a/drivers/net/cxgb3/cxgb3_offload.c b/drivers/net/cxgb3/cxgb3_offload.c index 265aa8a15afa..1ce69b742804 100644 --- a/drivers/net/cxgb3/cxgb3_offload.c +++ b/drivers/net/cxgb3/cxgb3_offload.c | |||
@@ -182,7 +182,9 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter, | |||
182 | static int cxgb_ulp_iscsi_ctl(struct adapter *adapter, unsigned int req, | 182 | static int cxgb_ulp_iscsi_ctl(struct adapter *adapter, unsigned int req, |
183 | void *data) | 183 | void *data) |
184 | { | 184 | { |
185 | int i; | ||
185 | int ret = 0; | 186 | int ret = 0; |
187 | unsigned int val = 0; | ||
186 | struct ulp_iscsi_info *uiip = data; | 188 | struct ulp_iscsi_info *uiip = data; |
187 | 189 | ||
188 | switch (req) { | 190 | switch (req) { |
@@ -191,32 +193,55 @@ static int cxgb_ulp_iscsi_ctl(struct adapter *adapter, unsigned int req, | |||
191 | uiip->llimit = t3_read_reg(adapter, A_ULPRX_ISCSI_LLIMIT); | 193 | uiip->llimit = t3_read_reg(adapter, A_ULPRX_ISCSI_LLIMIT); |
192 | uiip->ulimit = t3_read_reg(adapter, A_ULPRX_ISCSI_ULIMIT); | 194 | uiip->ulimit = t3_read_reg(adapter, A_ULPRX_ISCSI_ULIMIT); |
193 | uiip->tagmask = t3_read_reg(adapter, A_ULPRX_ISCSI_TAGMASK); | 195 | uiip->tagmask = t3_read_reg(adapter, A_ULPRX_ISCSI_TAGMASK); |
196 | |||
197 | val = t3_read_reg(adapter, A_ULPRX_ISCSI_PSZ); | ||
198 | for (i = 0; i < 4; i++, val >>= 8) | ||
199 | uiip->pgsz_factor[i] = val & 0xFF; | ||
200 | |||
201 | val = t3_read_reg(adapter, A_TP_PARA_REG7); | ||
202 | uiip->max_txsz = | ||
203 | uiip->max_rxsz = min((val >> S_PMMAXXFERLEN0)&M_PMMAXXFERLEN0, | ||
204 | (val >> S_PMMAXXFERLEN1)&M_PMMAXXFERLEN1); | ||
194 | /* | 205 | /* |
195 | * On tx, the iscsi pdu has to be <= tx page size and has to | 206 | * On tx, the iscsi pdu has to be <= tx page size and has to |
196 | * fit into the Tx PM FIFO. | 207 | * fit into the Tx PM FIFO. |
197 | */ | 208 | */ |
198 | uiip->max_txsz = min(adapter->params.tp.tx_pg_size, | 209 | val = min(adapter->params.tp.tx_pg_size, |
199 | t3_read_reg(adapter, A_PM1_TX_CFG) >> 17); | 210 | t3_read_reg(adapter, A_PM1_TX_CFG) >> 17); |
200 | /* on rx, the iscsi pdu has to be < rx page size and the | 211 | uiip->max_txsz = min(val, uiip->max_txsz); |
201 | whole pdu + cpl headers has to fit into one sge buffer */ | 212 | |
202 | uiip->max_rxsz = min_t(unsigned int, | 213 | /* set MaxRxData to 16224 */ |
203 | adapter->params.tp.rx_pg_size, | 214 | val = t3_read_reg(adapter, A_TP_PARA_REG2); |
204 | (adapter->sge.qs[0].fl[1].buf_size - | 215 | if ((val >> S_MAXRXDATA) != 0x3f60) { |
205 | sizeof(struct cpl_rx_data) * 2 - | 216 | val &= (M_RXCOALESCESIZE << S_RXCOALESCESIZE); |
206 | sizeof(struct cpl_rx_data_ddp))); | 217 | val |= V_MAXRXDATA(0x3f60); |
218 | printk(KERN_INFO | ||
219 | "%s, iscsi set MaxRxData to 16224 (0x%x).\n", | ||
220 | adapter->name, val); | ||
221 | t3_write_reg(adapter, A_TP_PARA_REG2, val); | ||
222 | } | ||
223 | |||
224 | /* | ||
225 | * on rx, the iscsi pdu has to be < rx page size and the | ||
226 | * the max rx data length programmed in TP | ||
227 | */ | ||
228 | val = min(adapter->params.tp.rx_pg_size, | ||
229 | ((t3_read_reg(adapter, A_TP_PARA_REG2)) >> | ||
230 | S_MAXRXDATA) & M_MAXRXDATA); | ||
231 | uiip->max_rxsz = min(val, uiip->max_rxsz); | ||
207 | break; | 232 | break; |
208 | case ULP_ISCSI_SET_PARAMS: | 233 | case ULP_ISCSI_SET_PARAMS: |
209 | t3_write_reg(adapter, A_ULPRX_ISCSI_TAGMASK, uiip->tagmask); | 234 | t3_write_reg(adapter, A_ULPRX_ISCSI_TAGMASK, uiip->tagmask); |
210 | /* set MaxRxData and MaxCoalesceSize to 16224 */ | ||
211 | t3_write_reg(adapter, A_TP_PARA_REG2, 0x3f603f60); | ||
212 | /* program the ddp page sizes */ | 235 | /* program the ddp page sizes */ |
213 | { | 236 | for (i = 0; i < 4; i++) |
214 | int i; | 237 | val |= (uiip->pgsz_factor[i] & 0xF) << (8 * i); |
215 | unsigned int val = 0; | 238 | if (val && (val != t3_read_reg(adapter, A_ULPRX_ISCSI_PSZ))) { |
216 | for (i = 0; i < 4; i++) | 239 | printk(KERN_INFO |
217 | val |= (uiip->pgsz_factor[i] & 0xF) << (8 * i); | 240 | "%s, setting iscsi pgsz 0x%x, %u,%u,%u,%u.\n", |
218 | if (val) | 241 | adapter->name, val, uiip->pgsz_factor[0], |
219 | t3_write_reg(adapter, A_ULPRX_ISCSI_PSZ, val); | 242 | uiip->pgsz_factor[1], uiip->pgsz_factor[2], |
243 | uiip->pgsz_factor[3]); | ||
244 | t3_write_reg(adapter, A_ULPRX_ISCSI_PSZ, val); | ||
220 | } | 245 | } |
221 | break; | 246 | break; |
222 | default: | 247 | default: |
@@ -407,6 +432,12 @@ static int cxgb_offload_ctl(struct t3cdev *tdev, unsigned int req, void *data) | |||
407 | rx_page_info->page_size = tp->rx_pg_size; | 432 | rx_page_info->page_size = tp->rx_pg_size; |
408 | rx_page_info->num = tp->rx_num_pgs; | 433 | rx_page_info->num = tp->rx_num_pgs; |
409 | break; | 434 | break; |
435 | case GET_ISCSI_IPV4ADDR: { | ||
436 | struct iscsi_ipv4addr *p = data; | ||
437 | struct port_info *pi = netdev_priv(p->dev); | ||
438 | p->ipv4addr = pi->iscsi_ipv4addr; | ||
439 | break; | ||
440 | } | ||
410 | default: | 441 | default: |
411 | return -EOPNOTSUPP; | 442 | return -EOPNOTSUPP; |
412 | } | 443 | } |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 63eb97473c8b..6c641a889471 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/ip.h> | 36 | #include <linux/ip.h> |
37 | #include <linux/tcp.h> | 37 | #include <linux/tcp.h> |
38 | #include <linux/dma-mapping.h> | 38 | #include <linux/dma-mapping.h> |
39 | #include <net/arp.h> | ||
39 | #include "common.h" | 40 | #include "common.h" |
40 | #include "regs.h" | 41 | #include "regs.h" |
41 | #include "sge_defs.h" | 42 | #include "sge_defs.h" |
@@ -1863,6 +1864,54 @@ static void restart_tx(struct sge_qset *qs) | |||
1863 | } | 1864 | } |
1864 | 1865 | ||
1865 | /** | 1866 | /** |
1867 | * cxgb3_arp_process - process an ARP request probing a private IP address | ||
1868 | * @adapter: the adapter | ||
1869 | * @skb: the skbuff containing the ARP request | ||
1870 | * | ||
1871 | * Check if the ARP request is probing the private IP address | ||
1872 | * dedicated to iSCSI, generate an ARP reply if so. | ||
1873 | */ | ||
1874 | static void cxgb3_arp_process(struct adapter *adapter, struct sk_buff *skb) | ||
1875 | { | ||
1876 | struct net_device *dev = skb->dev; | ||
1877 | struct port_info *pi; | ||
1878 | struct arphdr *arp; | ||
1879 | unsigned char *arp_ptr; | ||
1880 | unsigned char *sha; | ||
1881 | __be32 sip, tip; | ||
1882 | |||
1883 | if (!dev) | ||
1884 | return; | ||
1885 | |||
1886 | skb_reset_network_header(skb); | ||
1887 | arp = arp_hdr(skb); | ||
1888 | |||
1889 | if (arp->ar_op != htons(ARPOP_REQUEST)) | ||
1890 | return; | ||
1891 | |||
1892 | arp_ptr = (unsigned char *)(arp + 1); | ||
1893 | sha = arp_ptr; | ||
1894 | arp_ptr += dev->addr_len; | ||
1895 | memcpy(&sip, arp_ptr, sizeof(sip)); | ||
1896 | arp_ptr += sizeof(sip); | ||
1897 | arp_ptr += dev->addr_len; | ||
1898 | memcpy(&tip, arp_ptr, sizeof(tip)); | ||
1899 | |||
1900 | pi = netdev_priv(dev); | ||
1901 | if (tip != pi->iscsi_ipv4addr) | ||
1902 | return; | ||
1903 | |||
1904 | arp_send(ARPOP_REPLY, ETH_P_ARP, sip, dev, tip, sha, | ||
1905 | dev->dev_addr, sha); | ||
1906 | |||
1907 | } | ||
1908 | |||
1909 | static inline int is_arp(struct sk_buff *skb) | ||
1910 | { | ||
1911 | return skb->protocol == htons(ETH_P_ARP); | ||
1912 | } | ||
1913 | |||
1914 | /** | ||
1866 | * rx_eth - process an ingress ethernet packet | 1915 | * rx_eth - process an ingress ethernet packet |
1867 | * @adap: the adapter | 1916 | * @adap: the adapter |
1868 | * @rq: the response queue that received the packet | 1917 | * @rq: the response queue that received the packet |
@@ -1885,7 +1934,7 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq, | |||
1885 | pi = netdev_priv(skb->dev); | 1934 | pi = netdev_priv(skb->dev); |
1886 | if (pi->rx_csum_offload && p->csum_valid && p->csum == htons(0xffff) && | 1935 | if (pi->rx_csum_offload && p->csum_valid && p->csum == htons(0xffff) && |
1887 | !p->fragment) { | 1936 | !p->fragment) { |
1888 | rspq_to_qset(rq)->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; | 1937 | qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; |
1889 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1938 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1890 | } else | 1939 | } else |
1891 | skb->ip_summed = CHECKSUM_NONE; | 1940 | skb->ip_summed = CHECKSUM_NONE; |
@@ -1900,16 +1949,28 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq, | |||
1900 | grp, | 1949 | grp, |
1901 | ntohs(p->vlan), | 1950 | ntohs(p->vlan), |
1902 | p); | 1951 | p); |
1903 | else | 1952 | else { |
1953 | if (unlikely(pi->iscsi_ipv4addr && | ||
1954 | is_arp(skb))) { | ||
1955 | unsigned short vtag = ntohs(p->vlan) & | ||
1956 | VLAN_VID_MASK; | ||
1957 | skb->dev = vlan_group_get_device(grp, | ||
1958 | vtag); | ||
1959 | cxgb3_arp_process(adap, skb); | ||
1960 | } | ||
1904 | __vlan_hwaccel_rx(skb, grp, ntohs(p->vlan), | 1961 | __vlan_hwaccel_rx(skb, grp, ntohs(p->vlan), |
1905 | rq->polling); | 1962 | rq->polling); |
1963 | } | ||
1906 | else | 1964 | else |
1907 | dev_kfree_skb_any(skb); | 1965 | dev_kfree_skb_any(skb); |
1908 | } else if (rq->polling) { | 1966 | } else if (rq->polling) { |
1909 | if (lro) | 1967 | if (lro) |
1910 | lro_receive_skb(&qs->lro_mgr, skb, p); | 1968 | lro_receive_skb(&qs->lro_mgr, skb, p); |
1911 | else | 1969 | else { |
1970 | if (unlikely(pi->iscsi_ipv4addr && is_arp(skb))) | ||
1971 | cxgb3_arp_process(adap, skb); | ||
1912 | netif_receive_skb(skb); | 1972 | netif_receive_skb(skb); |
1973 | } | ||
1913 | } else | 1974 | } else |
1914 | netif_rx(skb); | 1975 | netif_rx(skb); |
1915 | } | 1976 | } |
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 3ee7830d458d..c832d600d1e8 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
@@ -179,7 +179,7 @@ struct channel { | |||
179 | */ | 179 | */ |
180 | static DEFINE_MUTEX(all_ppp_mutex); | 180 | static DEFINE_MUTEX(all_ppp_mutex); |
181 | static atomic_t ppp_unit_count = ATOMIC_INIT(0); | 181 | static atomic_t ppp_unit_count = ATOMIC_INIT(0); |
182 | static struct idr ppp_units_idr; | 182 | static DEFINE_IDR(ppp_units_idr); |
183 | 183 | ||
184 | /* | 184 | /* |
185 | * all_channels_lock protects all_channels and last_channel_index, | 185 | * all_channels_lock protects all_channels and last_channel_index, |
@@ -852,8 +852,6 @@ static int __init ppp_init(void) | |||
852 | "ppp"); | 852 | "ppp"); |
853 | } | 853 | } |
854 | 854 | ||
855 | idr_init(&ppp_units_idr); | ||
856 | |||
857 | out: | 855 | out: |
858 | if (err) | 856 | if (err) |
859 | printk(KERN_ERR "failed to register PPP device (%d)\n", err); | 857 | printk(KERN_ERR "failed to register PPP device (%d)\n", err); |
@@ -2435,7 +2433,7 @@ ppp_create_interface(int unit, int *retp) | |||
2435 | if (unit_find(&ppp_units_idr, unit)) | 2433 | if (unit_find(&ppp_units_idr, unit)) |
2436 | goto out2; /* unit already exists */ | 2434 | goto out2; /* unit already exists */ |
2437 | else { | 2435 | else { |
2438 | /* darn, someone is cheatting us? */ | 2436 | /* darn, someone is cheating us? */ |
2439 | *retp = -EINVAL; | 2437 | *retp = -EINVAL; |
2440 | goto out2; | 2438 | goto out2; |
2441 | } | 2439 | } |
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c index de57490103fc..e009481c606c 100644 --- a/drivers/net/usb/asix.c +++ b/drivers/net/usb/asix.c | |||
@@ -246,10 +246,11 @@ out: | |||
246 | static void asix_async_cmd_callback(struct urb *urb) | 246 | static void asix_async_cmd_callback(struct urb *urb) |
247 | { | 247 | { |
248 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; | 248 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; |
249 | int status = urb->status; | ||
249 | 250 | ||
250 | if (urb->status < 0) | 251 | if (status < 0) |
251 | printk(KERN_DEBUG "asix_async_cmd_callback() failed with %d", | 252 | printk(KERN_DEBUG "asix_async_cmd_callback() failed with %d", |
252 | urb->status); | 253 | status); |
253 | 254 | ||
254 | kfree(req); | 255 | kfree(req); |
255 | usb_free_urb(urb); | 256 | usb_free_urb(urb); |
diff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c index d7621239059a..cb7acbbb2798 100644 --- a/drivers/net/usb/catc.c +++ b/drivers/net/usb/catc.c | |||
@@ -229,14 +229,15 @@ static void catc_rx_done(struct urb *urb) | |||
229 | u8 *pkt_start = urb->transfer_buffer; | 229 | u8 *pkt_start = urb->transfer_buffer; |
230 | struct sk_buff *skb; | 230 | struct sk_buff *skb; |
231 | int pkt_len, pkt_offset = 0; | 231 | int pkt_len, pkt_offset = 0; |
232 | int status = urb->status; | ||
232 | 233 | ||
233 | if (!catc->is_f5u011) { | 234 | if (!catc->is_f5u011) { |
234 | clear_bit(RX_RUNNING, &catc->flags); | 235 | clear_bit(RX_RUNNING, &catc->flags); |
235 | pkt_offset = 2; | 236 | pkt_offset = 2; |
236 | } | 237 | } |
237 | 238 | ||
238 | if (urb->status) { | 239 | if (status) { |
239 | dbg("rx_done, status %d, length %d", urb->status, urb->actual_length); | 240 | dbg("rx_done, status %d, length %d", status, urb->actual_length); |
240 | return; | 241 | return; |
241 | } | 242 | } |
242 | 243 | ||
@@ -273,12 +274,12 @@ static void catc_rx_done(struct urb *urb) | |||
273 | 274 | ||
274 | if (catc->is_f5u011) { | 275 | if (catc->is_f5u011) { |
275 | if (atomic_read(&catc->recq_sz)) { | 276 | if (atomic_read(&catc->recq_sz)) { |
276 | int status; | 277 | int state; |
277 | atomic_dec(&catc->recq_sz); | 278 | atomic_dec(&catc->recq_sz); |
278 | dbg("getting extra packet"); | 279 | dbg("getting extra packet"); |
279 | urb->dev = catc->usbdev; | 280 | urb->dev = catc->usbdev; |
280 | if ((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { | 281 | if ((state = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { |
281 | dbg("submit(rx_urb) status %d", status); | 282 | dbg("submit(rx_urb) status %d", state); |
282 | } | 283 | } |
283 | } else { | 284 | } else { |
284 | clear_bit(RX_RUNNING, &catc->flags); | 285 | clear_bit(RX_RUNNING, &catc->flags); |
@@ -290,8 +291,9 @@ static void catc_irq_done(struct urb *urb) | |||
290 | { | 291 | { |
291 | struct catc *catc = urb->context; | 292 | struct catc *catc = urb->context; |
292 | u8 *data = urb->transfer_buffer; | 293 | u8 *data = urb->transfer_buffer; |
293 | int status; | 294 | int status = urb->status; |
294 | unsigned int hasdata = 0, linksts = LinkNoChange; | 295 | unsigned int hasdata = 0, linksts = LinkNoChange; |
296 | int res; | ||
295 | 297 | ||
296 | if (!catc->is_f5u011) { | 298 | if (!catc->is_f5u011) { |
297 | hasdata = data[1] & 0x80; | 299 | hasdata = data[1] & 0x80; |
@@ -307,7 +309,7 @@ static void catc_irq_done(struct urb *urb) | |||
307 | linksts = LinkBad; | 309 | linksts = LinkBad; |
308 | } | 310 | } |
309 | 311 | ||
310 | switch (urb->status) { | 312 | switch (status) { |
311 | case 0: /* success */ | 313 | case 0: /* success */ |
312 | break; | 314 | break; |
313 | case -ECONNRESET: /* unlink */ | 315 | case -ECONNRESET: /* unlink */ |
@@ -316,7 +318,7 @@ static void catc_irq_done(struct urb *urb) | |||
316 | return; | 318 | return; |
317 | /* -EPIPE: should clear the halt */ | 319 | /* -EPIPE: should clear the halt */ |
318 | default: /* error */ | 320 | default: /* error */ |
319 | dbg("irq_done, status %d, data %02x %02x.", urb->status, data[0], data[1]); | 321 | dbg("irq_done, status %d, data %02x %02x.", status, data[0], data[1]); |
320 | goto resubmit; | 322 | goto resubmit; |
321 | } | 323 | } |
322 | 324 | ||
@@ -336,17 +338,17 @@ static void catc_irq_done(struct urb *urb) | |||
336 | atomic_inc(&catc->recq_sz); | 338 | atomic_inc(&catc->recq_sz); |
337 | } else { | 339 | } else { |
338 | catc->rx_urb->dev = catc->usbdev; | 340 | catc->rx_urb->dev = catc->usbdev; |
339 | if ((status = usb_submit_urb(catc->rx_urb, GFP_ATOMIC)) < 0) { | 341 | if ((res = usb_submit_urb(catc->rx_urb, GFP_ATOMIC)) < 0) { |
340 | err("submit(rx_urb) status %d", status); | 342 | err("submit(rx_urb) status %d", res); |
341 | } | 343 | } |
342 | } | 344 | } |
343 | } | 345 | } |
344 | resubmit: | 346 | resubmit: |
345 | status = usb_submit_urb (urb, GFP_ATOMIC); | 347 | res = usb_submit_urb (urb, GFP_ATOMIC); |
346 | if (status) | 348 | if (res) |
347 | err ("can't resubmit intr, %s-%s, status %d", | 349 | err ("can't resubmit intr, %s-%s, status %d", |
348 | catc->usbdev->bus->bus_name, | 350 | catc->usbdev->bus->bus_name, |
349 | catc->usbdev->devpath, status); | 351 | catc->usbdev->devpath, res); |
350 | } | 352 | } |
351 | 353 | ||
352 | /* | 354 | /* |
@@ -378,9 +380,9 @@ static void catc_tx_done(struct urb *urb) | |||
378 | { | 380 | { |
379 | struct catc *catc = urb->context; | 381 | struct catc *catc = urb->context; |
380 | unsigned long flags; | 382 | unsigned long flags; |
381 | int r; | 383 | int r, status = urb->status; |
382 | 384 | ||
383 | if (urb->status == -ECONNRESET) { | 385 | if (status == -ECONNRESET) { |
384 | dbg("Tx Reset."); | 386 | dbg("Tx Reset."); |
385 | urb->status = 0; | 387 | urb->status = 0; |
386 | catc->netdev->trans_start = jiffies; | 388 | catc->netdev->trans_start = jiffies; |
@@ -390,8 +392,8 @@ static void catc_tx_done(struct urb *urb) | |||
390 | return; | 392 | return; |
391 | } | 393 | } |
392 | 394 | ||
393 | if (urb->status) { | 395 | if (status) { |
394 | dbg("tx_done, status %d, length %d", urb->status, urb->actual_length); | 396 | dbg("tx_done, status %d, length %d", status, urb->actual_length); |
395 | return; | 397 | return; |
396 | } | 398 | } |
397 | 399 | ||
@@ -502,9 +504,10 @@ static void catc_ctrl_done(struct urb *urb) | |||
502 | struct catc *catc = urb->context; | 504 | struct catc *catc = urb->context; |
503 | struct ctrl_queue *q; | 505 | struct ctrl_queue *q; |
504 | unsigned long flags; | 506 | unsigned long flags; |
507 | int status = urb->status; | ||
505 | 508 | ||
506 | if (urb->status) | 509 | if (status) |
507 | dbg("ctrl_done, status %d, len %d.", urb->status, urb->actual_length); | 510 | dbg("ctrl_done, status %d, len %d.", status, urb->actual_length); |
508 | 511 | ||
509 | spin_lock_irqsave(&catc->ctrl_lock, flags); | 512 | spin_lock_irqsave(&catc->ctrl_lock, flags); |
510 | 513 | ||
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c index db3377dae9d5..edd244f3acb5 100644 --- a/drivers/net/usb/dm9601.c +++ b/drivers/net/usb/dm9601.c | |||
@@ -123,10 +123,11 @@ static int dm_write_reg(struct usbnet *dev, u8 reg, u8 value) | |||
123 | static void dm_write_async_callback(struct urb *urb) | 123 | static void dm_write_async_callback(struct urb *urb) |
124 | { | 124 | { |
125 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; | 125 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; |
126 | int status = urb->status; | ||
126 | 127 | ||
127 | if (urb->status < 0) | 128 | if (status < 0) |
128 | printk(KERN_DEBUG "dm_write_async_callback() failed with %d\n", | 129 | printk(KERN_DEBUG "dm_write_async_callback() failed with %d\n", |
129 | urb->status); | 130 | status); |
130 | 131 | ||
131 | kfree(req); | 132 | kfree(req); |
132 | usb_free_urb(urb); | 133 | usb_free_urb(urb); |
diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c index fdbf3be24fda..2ee034f70d1c 100644 --- a/drivers/net/usb/kaweth.c +++ b/drivers/net/usb/kaweth.c | |||
@@ -516,8 +516,9 @@ static void int_callback(struct urb *u) | |||
516 | { | 516 | { |
517 | struct kaweth_device *kaweth = u->context; | 517 | struct kaweth_device *kaweth = u->context; |
518 | int act_state; | 518 | int act_state; |
519 | int status = u->status; | ||
519 | 520 | ||
520 | switch (u->status) { | 521 | switch (status) { |
521 | case 0: /* success */ | 522 | case 0: /* success */ |
522 | break; | 523 | break; |
523 | case -ECONNRESET: /* unlink */ | 524 | case -ECONNRESET: /* unlink */ |
@@ -598,6 +599,7 @@ static void kaweth_usb_receive(struct urb *urb) | |||
598 | { | 599 | { |
599 | struct kaweth_device *kaweth = urb->context; | 600 | struct kaweth_device *kaweth = urb->context; |
600 | struct net_device *net = kaweth->net; | 601 | struct net_device *net = kaweth->net; |
602 | int status = urb->status; | ||
601 | 603 | ||
602 | int count = urb->actual_length; | 604 | int count = urb->actual_length; |
603 | int count2 = urb->transfer_buffer_length; | 605 | int count2 = urb->transfer_buffer_length; |
@@ -606,7 +608,7 @@ static void kaweth_usb_receive(struct urb *urb) | |||
606 | 608 | ||
607 | struct sk_buff *skb; | 609 | struct sk_buff *skb; |
608 | 610 | ||
609 | if(unlikely(urb->status == -ECONNRESET || urb->status == -ESHUTDOWN)) | 611 | if(unlikely(status == -ECONNRESET || status == -ESHUTDOWN)) |
610 | /* we are killed - set a flag and wake the disconnect handler */ | 612 | /* we are killed - set a flag and wake the disconnect handler */ |
611 | { | 613 | { |
612 | kaweth->end = 1; | 614 | kaweth->end = 1; |
@@ -621,10 +623,10 @@ static void kaweth_usb_receive(struct urb *urb) | |||
621 | } | 623 | } |
622 | spin_unlock(&kaweth->device_lock); | 624 | spin_unlock(&kaweth->device_lock); |
623 | 625 | ||
624 | if(urb->status && urb->status != -EREMOTEIO && count != 1) { | 626 | if(status && status != -EREMOTEIO && count != 1) { |
625 | err("%s RX status: %d count: %d packet_len: %d", | 627 | err("%s RX status: %d count: %d packet_len: %d", |
626 | net->name, | 628 | net->name, |
627 | urb->status, | 629 | status, |
628 | count, | 630 | count, |
629 | (int)pkt_len); | 631 | (int)pkt_len); |
630 | kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); | 632 | kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); |
@@ -775,10 +777,11 @@ static void kaweth_usb_transmit_complete(struct urb *urb) | |||
775 | { | 777 | { |
776 | struct kaweth_device *kaweth = urb->context; | 778 | struct kaweth_device *kaweth = urb->context; |
777 | struct sk_buff *skb = kaweth->tx_skb; | 779 | struct sk_buff *skb = kaweth->tx_skb; |
780 | int status = urb->status; | ||
778 | 781 | ||
779 | if (unlikely(urb->status != 0)) | 782 | if (unlikely(status != 0)) |
780 | if (urb->status != -ENOENT) | 783 | if (status != -ENOENT) |
781 | dbg("%s: TX status %d.", kaweth->net->name, urb->status); | 784 | dbg("%s: TX status %d.", kaweth->net->name, status); |
782 | 785 | ||
783 | netif_wake_queue(kaweth->net); | 786 | netif_wake_queue(kaweth->net); |
784 | dev_kfree_skb_irq(skb); | 787 | dev_kfree_skb_irq(skb); |
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c index bbcc76ae3c9c..5385d66b306e 100644 --- a/drivers/net/usb/mcs7830.c +++ b/drivers/net/usb/mcs7830.c | |||
@@ -115,10 +115,11 @@ static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, void *data) | |||
115 | static void mcs7830_async_cmd_callback(struct urb *urb) | 115 | static void mcs7830_async_cmd_callback(struct urb *urb) |
116 | { | 116 | { |
117 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; | 117 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; |
118 | int status = urb->status; | ||
118 | 119 | ||
119 | if (urb->status < 0) | 120 | if (status < 0) |
120 | printk(KERN_DEBUG "%s() failed with %d\n", | 121 | printk(KERN_DEBUG "%s() failed with %d\n", |
121 | __func__, urb->status); | 122 | __func__, status); |
122 | 123 | ||
123 | kfree(req); | 124 | kfree(req); |
124 | usb_free_urb(urb); | 125 | usb_free_urb(urb); |
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c index 075e8e94225e..166880c113d6 100644 --- a/drivers/net/usb/pegasus.c +++ b/drivers/net/usb/pegasus.c | |||
@@ -99,11 +99,12 @@ static int update_eth_regs_async(pegasus_t *); | |||
99 | static void ctrl_callback(struct urb *urb) | 99 | static void ctrl_callback(struct urb *urb) |
100 | { | 100 | { |
101 | pegasus_t *pegasus = urb->context; | 101 | pegasus_t *pegasus = urb->context; |
102 | int status = urb->status; | ||
102 | 103 | ||
103 | if (!pegasus) | 104 | if (!pegasus) |
104 | return; | 105 | return; |
105 | 106 | ||
106 | switch (urb->status) { | 107 | switch (status) { |
107 | case 0: | 108 | case 0: |
108 | if (pegasus->flags & ETH_REGS_CHANGE) { | 109 | if (pegasus->flags & ETH_REGS_CHANGE) { |
109 | pegasus->flags &= ~ETH_REGS_CHANGE; | 110 | pegasus->flags &= ~ETH_REGS_CHANGE; |
@@ -119,7 +120,7 @@ static void ctrl_callback(struct urb *urb) | |||
119 | default: | 120 | default: |
120 | if (netif_msg_drv(pegasus) && printk_ratelimit()) | 121 | if (netif_msg_drv(pegasus) && printk_ratelimit()) |
121 | dev_dbg(&pegasus->intf->dev, "%s, status %d\n", | 122 | dev_dbg(&pegasus->intf->dev, "%s, status %d\n", |
122 | __func__, urb->status); | 123 | __func__, status); |
123 | } | 124 | } |
124 | pegasus->flags &= ~ETH_REGS_CHANGED; | 125 | pegasus->flags &= ~ETH_REGS_CHANGED; |
125 | wake_up(&pegasus->ctrl_wait); | 126 | wake_up(&pegasus->ctrl_wait); |
@@ -611,6 +612,7 @@ static void read_bulk_callback(struct urb *urb) | |||
611 | pegasus_t *pegasus = urb->context; | 612 | pegasus_t *pegasus = urb->context; |
612 | struct net_device *net; | 613 | struct net_device *net; |
613 | int rx_status, count = urb->actual_length; | 614 | int rx_status, count = urb->actual_length; |
615 | int status = urb->status; | ||
614 | u8 *buf = urb->transfer_buffer; | 616 | u8 *buf = urb->transfer_buffer; |
615 | __u16 pkt_len; | 617 | __u16 pkt_len; |
616 | 618 | ||
@@ -621,7 +623,7 @@ static void read_bulk_callback(struct urb *urb) | |||
621 | if (!netif_device_present(net) || !netif_running(net)) | 623 | if (!netif_device_present(net) || !netif_running(net)) |
622 | return; | 624 | return; |
623 | 625 | ||
624 | switch (urb->status) { | 626 | switch (status) { |
625 | case 0: | 627 | case 0: |
626 | break; | 628 | break; |
627 | case -ETIME: | 629 | case -ETIME: |
@@ -639,11 +641,11 @@ static void read_bulk_callback(struct urb *urb) | |||
639 | case -ECONNRESET: | 641 | case -ECONNRESET: |
640 | case -ESHUTDOWN: | 642 | case -ESHUTDOWN: |
641 | if (netif_msg_ifdown(pegasus)) | 643 | if (netif_msg_ifdown(pegasus)) |
642 | pr_debug("%s: rx unlink, %d\n", net->name, urb->status); | 644 | pr_debug("%s: rx unlink, %d\n", net->name, status); |
643 | return; | 645 | return; |
644 | default: | 646 | default: |
645 | if (netif_msg_rx_err(pegasus)) | 647 | if (netif_msg_rx_err(pegasus)) |
646 | pr_debug("%s: RX status %d\n", net->name, urb->status); | 648 | pr_debug("%s: RX status %d\n", net->name, status); |
647 | goto goon; | 649 | goto goon; |
648 | } | 650 | } |
649 | 651 | ||
@@ -769,6 +771,7 @@ static void write_bulk_callback(struct urb *urb) | |||
769 | { | 771 | { |
770 | pegasus_t *pegasus = urb->context; | 772 | pegasus_t *pegasus = urb->context; |
771 | struct net_device *net; | 773 | struct net_device *net; |
774 | int status = urb->status; | ||
772 | 775 | ||
773 | if (!pegasus) | 776 | if (!pegasus) |
774 | return; | 777 | return; |
@@ -778,7 +781,7 @@ static void write_bulk_callback(struct urb *urb) | |||
778 | if (!netif_device_present(net) || !netif_running(net)) | 781 | if (!netif_device_present(net) || !netif_running(net)) |
779 | return; | 782 | return; |
780 | 783 | ||
781 | switch (urb->status) { | 784 | switch (status) { |
782 | case -EPIPE: | 785 | case -EPIPE: |
783 | /* FIXME schedule_work() to clear the tx halt */ | 786 | /* FIXME schedule_work() to clear the tx halt */ |
784 | netif_stop_queue(net); | 787 | netif_stop_queue(net); |
@@ -790,11 +793,11 @@ static void write_bulk_callback(struct urb *urb) | |||
790 | case -ECONNRESET: | 793 | case -ECONNRESET: |
791 | case -ESHUTDOWN: | 794 | case -ESHUTDOWN: |
792 | if (netif_msg_ifdown(pegasus)) | 795 | if (netif_msg_ifdown(pegasus)) |
793 | pr_debug("%s: tx unlink, %d\n", net->name, urb->status); | 796 | pr_debug("%s: tx unlink, %d\n", net->name, status); |
794 | return; | 797 | return; |
795 | default: | 798 | default: |
796 | if (netif_msg_tx_err(pegasus)) | 799 | if (netif_msg_tx_err(pegasus)) |
797 | pr_info("%s: TX status %d\n", net->name, urb->status); | 800 | pr_info("%s: TX status %d\n", net->name, status); |
798 | /* FALL THROUGH */ | 801 | /* FALL THROUGH */ |
799 | case 0: | 802 | case 0: |
800 | break; | 803 | break; |
@@ -808,13 +811,13 @@ static void intr_callback(struct urb *urb) | |||
808 | { | 811 | { |
809 | pegasus_t *pegasus = urb->context; | 812 | pegasus_t *pegasus = urb->context; |
810 | struct net_device *net; | 813 | struct net_device *net; |
811 | int status; | 814 | int res, status = urb->status; |
812 | 815 | ||
813 | if (!pegasus) | 816 | if (!pegasus) |
814 | return; | 817 | return; |
815 | net = pegasus->net; | 818 | net = pegasus->net; |
816 | 819 | ||
817 | switch (urb->status) { | 820 | switch (status) { |
818 | case 0: | 821 | case 0: |
819 | break; | 822 | break; |
820 | case -ECONNRESET: /* unlink */ | 823 | case -ECONNRESET: /* unlink */ |
@@ -827,7 +830,7 @@ static void intr_callback(struct urb *urb) | |||
827 | */ | 830 | */ |
828 | if (netif_msg_timer(pegasus)) | 831 | if (netif_msg_timer(pegasus)) |
829 | pr_debug("%s: intr status %d\n", net->name, | 832 | pr_debug("%s: intr status %d\n", net->name, |
830 | urb->status); | 833 | status); |
831 | } | 834 | } |
832 | 835 | ||
833 | if (urb->actual_length >= 6) { | 836 | if (urb->actual_length >= 6) { |
@@ -854,12 +857,12 @@ static void intr_callback(struct urb *urb) | |||
854 | pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4]; | 857 | pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4]; |
855 | } | 858 | } |
856 | 859 | ||
857 | status = usb_submit_urb(urb, GFP_ATOMIC); | 860 | res = usb_submit_urb(urb, GFP_ATOMIC); |
858 | if (status == -ENODEV) | 861 | if (res == -ENODEV) |
859 | netif_device_detach(pegasus->net); | 862 | netif_device_detach(pegasus->net); |
860 | if (status && netif_msg_timer(pegasus)) | 863 | if (res && netif_msg_timer(pegasus)) |
861 | printk(KERN_ERR "%s: can't resubmit interrupt urb, %d\n", | 864 | printk(KERN_ERR "%s: can't resubmit interrupt urb, %d\n", |
862 | net->name, status); | 865 | net->name, res); |
863 | } | 866 | } |
864 | 867 | ||
865 | static void pegasus_tx_timeout(struct net_device *net) | 868 | static void pegasus_tx_timeout(struct net_device *net) |
diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c index 6133401ebc67..d8664bf18c00 100644 --- a/drivers/net/usb/rtl8150.c +++ b/drivers/net/usb/rtl8150.c | |||
@@ -212,8 +212,9 @@ static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data) | |||
212 | static void ctrl_callback(struct urb *urb) | 212 | static void ctrl_callback(struct urb *urb) |
213 | { | 213 | { |
214 | rtl8150_t *dev; | 214 | rtl8150_t *dev; |
215 | int status = urb->status; | ||
215 | 216 | ||
216 | switch (urb->status) { | 217 | switch (status) { |
217 | case 0: | 218 | case 0: |
218 | break; | 219 | break; |
219 | case -EINPROGRESS: | 220 | case -EINPROGRESS: |
@@ -221,7 +222,7 @@ static void ctrl_callback(struct urb *urb) | |||
221 | case -ENOENT: | 222 | case -ENOENT: |
222 | break; | 223 | break; |
223 | default: | 224 | default: |
224 | dev_warn(&urb->dev->dev, "ctrl urb status %d\n", urb->status); | 225 | dev_warn(&urb->dev->dev, "ctrl urb status %d\n", status); |
225 | } | 226 | } |
226 | dev = urb->context; | 227 | dev = urb->context; |
227 | clear_bit(RX_REG_SET, &dev->flags); | 228 | clear_bit(RX_REG_SET, &dev->flags); |
@@ -424,7 +425,8 @@ static void read_bulk_callback(struct urb *urb) | |||
424 | struct sk_buff *skb; | 425 | struct sk_buff *skb; |
425 | struct net_device *netdev; | 426 | struct net_device *netdev; |
426 | u16 rx_stat; | 427 | u16 rx_stat; |
427 | int status; | 428 | int status = urb->status; |
429 | int result; | ||
428 | 430 | ||
429 | dev = urb->context; | 431 | dev = urb->context; |
430 | if (!dev) | 432 | if (!dev) |
@@ -435,7 +437,7 @@ static void read_bulk_callback(struct urb *urb) | |||
435 | if (!netif_device_present(netdev)) | 437 | if (!netif_device_present(netdev)) |
436 | return; | 438 | return; |
437 | 439 | ||
438 | switch (urb->status) { | 440 | switch (status) { |
439 | case 0: | 441 | case 0: |
440 | break; | 442 | break; |
441 | case -ENOENT: | 443 | case -ENOENT: |
@@ -444,7 +446,7 @@ static void read_bulk_callback(struct urb *urb) | |||
444 | dev_warn(&urb->dev->dev, "may be reset is needed?..\n"); | 446 | dev_warn(&urb->dev->dev, "may be reset is needed?..\n"); |
445 | goto goon; | 447 | goto goon; |
446 | default: | 448 | default: |
447 | dev_warn(&urb->dev->dev, "Rx status %d\n", urb->status); | 449 | dev_warn(&urb->dev->dev, "Rx status %d\n", status); |
448 | goto goon; | 450 | goto goon; |
449 | } | 451 | } |
450 | 452 | ||
@@ -474,10 +476,10 @@ static void read_bulk_callback(struct urb *urb) | |||
474 | goon: | 476 | goon: |
475 | usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1), | 477 | usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1), |
476 | dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev); | 478 | dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev); |
477 | status = usb_submit_urb(dev->rx_urb, GFP_ATOMIC); | 479 | result = usb_submit_urb(dev->rx_urb, GFP_ATOMIC); |
478 | if (status == -ENODEV) | 480 | if (result == -ENODEV) |
479 | netif_device_detach(dev->netdev); | 481 | netif_device_detach(dev->netdev); |
480 | else if (status) { | 482 | else if (result) { |
481 | set_bit(RX_URB_FAIL, &dev->flags); | 483 | set_bit(RX_URB_FAIL, &dev->flags); |
482 | goto resched; | 484 | goto resched; |
483 | } else { | 485 | } else { |
@@ -530,6 +532,7 @@ tlsched: | |||
530 | static void write_bulk_callback(struct urb *urb) | 532 | static void write_bulk_callback(struct urb *urb) |
531 | { | 533 | { |
532 | rtl8150_t *dev; | 534 | rtl8150_t *dev; |
535 | int status = urb->status; | ||
533 | 536 | ||
534 | dev = urb->context; | 537 | dev = urb->context; |
535 | if (!dev) | 538 | if (!dev) |
@@ -537,9 +540,9 @@ static void write_bulk_callback(struct urb *urb) | |||
537 | dev_kfree_skb_irq(dev->tx_skb); | 540 | dev_kfree_skb_irq(dev->tx_skb); |
538 | if (!netif_device_present(dev->netdev)) | 541 | if (!netif_device_present(dev->netdev)) |
539 | return; | 542 | return; |
540 | if (urb->status) | 543 | if (status) |
541 | dev_info(&urb->dev->dev, "%s: Tx status %d\n", | 544 | dev_info(&urb->dev->dev, "%s: Tx status %d\n", |
542 | dev->netdev->name, urb->status); | 545 | dev->netdev->name, status); |
543 | dev->netdev->trans_start = jiffies; | 546 | dev->netdev->trans_start = jiffies; |
544 | netif_wake_queue(dev->netdev); | 547 | netif_wake_queue(dev->netdev); |
545 | } | 548 | } |
@@ -548,12 +551,13 @@ static void intr_callback(struct urb *urb) | |||
548 | { | 551 | { |
549 | rtl8150_t *dev; | 552 | rtl8150_t *dev; |
550 | __u8 *d; | 553 | __u8 *d; |
551 | int status; | 554 | int status = urb->status; |
555 | int res; | ||
552 | 556 | ||
553 | dev = urb->context; | 557 | dev = urb->context; |
554 | if (!dev) | 558 | if (!dev) |
555 | return; | 559 | return; |
556 | switch (urb->status) { | 560 | switch (status) { |
557 | case 0: /* success */ | 561 | case 0: /* success */ |
558 | break; | 562 | break; |
559 | case -ECONNRESET: /* unlink */ | 563 | case -ECONNRESET: /* unlink */ |
@@ -563,7 +567,7 @@ static void intr_callback(struct urb *urb) | |||
563 | /* -EPIPE: should clear the halt */ | 567 | /* -EPIPE: should clear the halt */ |
564 | default: | 568 | default: |
565 | dev_info(&urb->dev->dev, "%s: intr status %d\n", | 569 | dev_info(&urb->dev->dev, "%s: intr status %d\n", |
566 | dev->netdev->name, urb->status); | 570 | dev->netdev->name, status); |
567 | goto resubmit; | 571 | goto resubmit; |
568 | } | 572 | } |
569 | 573 | ||
@@ -591,13 +595,13 @@ static void intr_callback(struct urb *urb) | |||
591 | } | 595 | } |
592 | 596 | ||
593 | resubmit: | 597 | resubmit: |
594 | status = usb_submit_urb (urb, GFP_ATOMIC); | 598 | res = usb_submit_urb (urb, GFP_ATOMIC); |
595 | if (status == -ENODEV) | 599 | if (res == -ENODEV) |
596 | netif_device_detach(dev->netdev); | 600 | netif_device_detach(dev->netdev); |
597 | else if (status) | 601 | else if (res) |
598 | err ("can't resubmit intr, %s-%s/input0, status %d", | 602 | err ("can't resubmit intr, %s-%s/input0, status %d", |
599 | dev->udev->bus->bus_name, | 603 | dev->udev->bus->bus_name, |
600 | dev->udev->devpath, status); | 604 | dev->udev->devpath, res); |
601 | } | 605 | } |
602 | 606 | ||
603 | static int rtl8150_suspend(struct usb_interface *intf, pm_message_t message) | 607 | static int rtl8150_suspend(struct usb_interface *intf, pm_message_t message) |
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index fed22ffedd57..5574abe29c73 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c | |||
@@ -311,9 +311,10 @@ static void smsc95xx_async_cmd_callback(struct urb *urb, struct pt_regs *regs) | |||
311 | { | 311 | { |
312 | struct usb_context *usb_context = urb->context; | 312 | struct usb_context *usb_context = urb->context; |
313 | struct usbnet *dev = usb_context->dev; | 313 | struct usbnet *dev = usb_context->dev; |
314 | int status = urb->status; | ||
314 | 315 | ||
315 | if (urb->status < 0) | 316 | if (status < 0) |
316 | devwarn(dev, "async callback failed with %d", urb->status); | 317 | devwarn(dev, "async callback failed with %d", status); |
317 | 318 | ||
318 | complete(&usb_context->notify); | 319 | complete(&usb_context->notify); |
319 | 320 | ||