summaryrefslogtreecommitdiffstats
path: root/net/ncsi/ncsi-manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ncsi/ncsi-manage.c')
-rw-r--r--net/ncsi/ncsi-manage.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c
index 091284760d21..6aa0614d2d28 100644
--- a/net/ncsi/ncsi-manage.c
+++ b/net/ncsi/ncsi-manage.c
@@ -19,6 +19,7 @@
19#include <net/addrconf.h> 19#include <net/addrconf.h>
20#include <net/ipv6.h> 20#include <net/ipv6.h>
21#include <net/if_inet6.h> 21#include <net/if_inet6.h>
22#include <net/genetlink.h>
22 23
23#include "internal.h" 24#include "internal.h"
24#include "ncsi-pkt.h" 25#include "ncsi-pkt.h"
@@ -406,6 +407,9 @@ static void ncsi_request_timeout(struct timer_list *t)
406{ 407{
407 struct ncsi_request *nr = from_timer(nr, t, timer); 408 struct ncsi_request *nr = from_timer(nr, t, timer);
408 struct ncsi_dev_priv *ndp = nr->ndp; 409 struct ncsi_dev_priv *ndp = nr->ndp;
410 struct ncsi_cmd_pkt *cmd;
411 struct ncsi_package *np;
412 struct ncsi_channel *nc;
409 unsigned long flags; 413 unsigned long flags;
410 414
411 /* If the request already had associated response, 415 /* If the request already had associated response,
@@ -419,6 +423,18 @@ static void ncsi_request_timeout(struct timer_list *t)
419 } 423 }
420 spin_unlock_irqrestore(&ndp->lock, flags); 424 spin_unlock_irqrestore(&ndp->lock, flags);
421 425
426 if (nr->flags == NCSI_REQ_FLAG_NETLINK_DRIVEN) {
427 if (nr->cmd) {
428 /* Find the package */
429 cmd = (struct ncsi_cmd_pkt *)
430 skb_network_header(nr->cmd);
431 ncsi_find_package_and_channel(ndp,
432 cmd->cmd.common.channel,
433 &np, &nc);
434 ncsi_send_netlink_timeout(nr, np, nc);
435 }
436 }
437
422 /* Release the request */ 438 /* Release the request */
423 ncsi_free_request(nr); 439 ncsi_free_request(nr);
424} 440}