Commit fb136c070bfdde11dc79758674f54fb26bba1a2f

Authored by Auke Kok
Committed by Jeff Garzik
1 parent 4a79a04e4c

ixgb: don't print error if pci_enable_msi() fails, cleanup minor leak

pci_enable_msi calls can fail for normal operational reasons. Driver
should not print an error message in that case. Fix a leak that leaves
msi enabled if pci_request_irq fails. We can remove CONFIG_PCI_MSI
ifdefs alltogether

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>

Showing 2 changed files with 15 additions and 23 deletions Side-by-side Diff

drivers/net/ixgb/ixgb.h
... ... @@ -193,9 +193,7 @@
193 193 u16 msg_enable;
194 194 struct ixgb_hw_stats stats;
195 195 uint32_t alloc_rx_buff_failed;
196   -#ifdef CONFIG_PCI_MSI
197 196 boolean_t have_msi;
198   -#endif
199 197 };
200 198 #endif /* _IXGB_H_ */
drivers/net/ixgb/ixgb_main.c
... ... @@ -227,7 +227,7 @@
227 227 ixgb_up(struct ixgb_adapter *adapter)
228 228 {
229 229 struct net_device *netdev = adapter->netdev;
230   - int err;
  230 + int err, irq_flags = IRQF_SHARED;
231 231 int max_frame = netdev->mtu + ENET_HEADER_SIZE + ENET_FCS_LENGTH;
232 232 struct ixgb_hw *hw = &adapter->hw;
233 233  
234 234  
235 235  
... ... @@ -246,26 +246,21 @@
246 246 /* disable interrupts and get the hardware into a known state */
247 247 IXGB_WRITE_REG(&adapter->hw, IMC, 0xffffffff);
248 248  
249   -#ifdef CONFIG_PCI_MSI
250   - {
251   - boolean_t pcix = (IXGB_READ_REG(&adapter->hw, STATUS) &
252   - IXGB_STATUS_PCIX_MODE) ? TRUE : FALSE;
253   - adapter->have_msi = TRUE;
254   -
255   - if (!pcix)
256   - adapter->have_msi = FALSE;
257   - else if((err = pci_enable_msi(adapter->pdev))) {
258   - DPRINTK(PROBE, ERR,
259   - "Unable to allocate MSI interrupt Error: %d\n", err);
260   - adapter->have_msi = FALSE;
  249 + /* only enable MSI if bus is in PCI-X mode */
  250 + if (IXGB_READ_REG(&adapter->hw, STATUS) & IXGB_STATUS_PCIX_MODE) {
  251 + err = pci_enable_msi(adapter->pdev);
  252 + if (!err) {
  253 + adapter->have_msi = 1;
  254 + irq_flags = 0;
  255 + }
261 256 /* proceed to try to request regular interrupt */
262 257 }
263   - }
264 258  
265   -#endif
266   - if((err = request_irq(adapter->pdev->irq, &ixgb_intr,
267   - IRQF_SHARED | IRQF_SAMPLE_RANDOM,
268   - netdev->name, netdev))) {
  259 + err = request_irq(adapter->pdev->irq, &ixgb_intr, irq_flags,
  260 + netdev->name, netdev);
  261 + if (err) {
  262 + if (adapter->have_msi)
  263 + pci_disable_msi(adapter->pdev);
269 264 DPRINTK(PROBE, ERR,
270 265 "Unable to allocate interrupt Error: %d\n", err);
271 266 return err;
272 267  
... ... @@ -307,11 +302,10 @@
307 302  
308 303 ixgb_irq_disable(adapter);
309 304 free_irq(adapter->pdev->irq, netdev);
310   -#ifdef CONFIG_PCI_MSI
311   - if(adapter->have_msi == TRUE)
  305 +
  306 + if (adapter->have_msi)
312 307 pci_disable_msi(adapter->pdev);
313 308  
314   -#endif
315 309 if(kill_watchdog)
316 310 del_timer_sync(&adapter->watchdog_timer);
317 311 #ifdef CONFIG_IXGB_NAPI