diff options
| -rw-r--r-- | net/ncsi/internal.h | 8 | ||||
| -rw-r--r-- | net/ncsi/ncsi-cmd.c | 2 | ||||
| -rw-r--r-- | net/ncsi/ncsi-manage.c | 19 | ||||
| -rw-r--r-- | net/ncsi/ncsi-rsp.c | 2 | 
4 files changed, 17 insertions, 14 deletions
diff --git a/net/ncsi/internal.h b/net/ncsi/internal.h index c956fe8d80c3..26e929595b5e 100644 --- a/net/ncsi/internal.h +++ b/net/ncsi/internal.h @@ -207,7 +207,8 @@ struct ncsi_package {  struct ncsi_request {  	unsigned char        id;      /* Request ID - 0 to 255           */  	bool                 used;    /* Request that has been assigned  */ -	bool                 driven;  /* Drive state machine             */ +	unsigned int         flags;   /* NCSI request property           */ +#define NCSI_REQ_FLAG_EVENT_DRIVEN	1  	struct ncsi_dev_priv *ndp;    /* Associated NCSI device          */  	struct sk_buff       *cmd;    /* Associated NCSI command packet  */  	struct sk_buff       *rsp;    /* Associated NCSI response packet */ @@ -276,7 +277,7 @@ struct ncsi_cmd_arg {  	unsigned char        package;     /* Destination package ID        */  	unsigned char        channel;     /* Detination channel ID or 0x1f */  	unsigned short       payload;     /* Command packet payload length */ -	bool                 driven;      /* Drive the state machine?      */ +	unsigned int         req_flags;   /* NCSI request properties       */  	union {  		unsigned char  bytes[16]; /* Command packet specific data  */  		unsigned short words[8]; @@ -315,7 +316,8 @@ void ncsi_find_package_and_channel(struct ncsi_dev_priv *ndp,  				   unsigned char id,  				   struct ncsi_package **np,  				   struct ncsi_channel **nc); -struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, bool driven); +struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, +					unsigned int req_flags);  void ncsi_free_request(struct ncsi_request *nr);  struct ncsi_dev *ncsi_find_dev(struct net_device *dev);  int ncsi_process_next_channel(struct ncsi_dev_priv *ndp); diff --git a/net/ncsi/ncsi-cmd.c b/net/ncsi/ncsi-cmd.c index 21057a8ceeac..db7083bfd476 100644 --- a/net/ncsi/ncsi-cmd.c +++ b/net/ncsi/ncsi-cmd.c @@ -272,7 +272,7 @@ static struct ncsi_request *ncsi_alloc_command(struct ncsi_cmd_arg *nca)  	struct sk_buff *skb;  	struct ncsi_request *nr; -	nr = ncsi_alloc_request(ndp, nca->driven); +	nr = ncsi_alloc_request(ndp, nca->req_flags);  	if (!nr)  		return NULL; diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c index 00ce2c7fdb15..adf5401817c2 100644 --- a/net/ncsi/ncsi-manage.c +++ b/net/ncsi/ncsi-manage.c @@ -194,7 +194,7 @@ static void ncsi_channel_monitor(unsigned long data)  		nca.package = np->id;  		nca.channel = nc->id;  		nca.type = NCSI_PKT_CMD_GLS; -		nca.driven = false; +		nca.req_flags = 0;  		ret = ncsi_xmit_cmd(&nca);  		if (ret) {  			netdev_err(ndp->ndev.dev, "Error %d sending GLS\n", @@ -419,7 +419,8 @@ void ncsi_find_package_and_channel(struct ncsi_dev_priv *ndp,   * be same. Otherwise, the bogus response might be replied. So   * the available IDs are allocated in round-robin fashion.   */ -struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, bool driven) +struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, +					unsigned int req_flags)  {  	struct ncsi_request *nr = NULL;  	int i, limit = ARRAY_SIZE(ndp->requests); @@ -433,7 +434,7 @@ struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, bool driven)  		nr = &ndp->requests[i];  		nr->used = true; -		nr->driven = driven; +		nr->flags = req_flags;  		ndp->request_id = i + 1;  		goto found;  	} @@ -445,7 +446,7 @@ struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, bool driven)  		nr = &ndp->requests[i];  		nr->used = true; -		nr->driven = driven; +		nr->flags = req_flags;  		ndp->request_id = i + 1;  		goto found;  	} @@ -473,7 +474,7 @@ void ncsi_free_request(struct ncsi_request *nr)  	nr->cmd = NULL;  	nr->rsp = NULL;  	nr->used = false; -	driven = nr->driven; +	driven = !!(nr->flags & NCSI_REQ_FLAG_EVENT_DRIVEN);  	spin_unlock_irqrestore(&ndp->lock, flags);  	if (driven && cmd && --ndp->pending_req_num == 0) @@ -527,7 +528,7 @@ static void ncsi_suspend_channel(struct ncsi_dev_priv *ndp)  	int ret;  	nca.ndp = ndp; -	nca.driven = true; +	nca.req_flags = NCSI_REQ_FLAG_EVENT_DRIVEN;  	switch (nd->state) {  	case ncsi_dev_state_suspend:  		nd->state = ncsi_dev_state_suspend_select; @@ -596,7 +597,7 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)  	int ret;  	nca.ndp = ndp; -	nca.driven = true; +	nca.req_flags = NCSI_REQ_FLAG_EVENT_DRIVEN;  	switch (nd->state) {  	case ncsi_dev_state_config:  	case ncsi_dev_state_config_sp: @@ -825,7 +826,7 @@ static void ncsi_probe_channel(struct ncsi_dev_priv *ndp)  	int ret;  	nca.ndp = ndp; -	nca.driven = true; +	nca.req_flags = NCSI_REQ_FLAG_EVENT_DRIVEN;  	switch (nd->state) {  	case ncsi_dev_state_probe:  		nd->state = ncsi_dev_state_probe_deselect; @@ -1101,7 +1102,7 @@ static int ncsi_inet6addr_event(struct notifier_block *this,  		return NOTIFY_OK;  	nca.ndp = ndp; -	nca.driven = false; +	nca.req_flags = 0;  	nca.package = np->id;  	nca.channel = nc->id;  	nca.dwords[0] = nc->caps[NCSI_CAP_MC].cap; diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c index af84389a6bf1..86cdaebd8d9e 100644 --- a/net/ncsi/ncsi-rsp.c +++ b/net/ncsi/ncsi-rsp.c @@ -317,7 +317,7 @@ static int ncsi_rsp_handler_gls(struct ncsi_request *nr)  	ncm->data[3] = ntohl(rsp->other);  	ncm->data[4] = ntohl(rsp->oem_status); -	if (nr->driven) +	if (nr->flags & NCSI_REQ_FLAG_EVENT_DRIVEN)  		return 0;  	/* Reset the channel monitor if it has been enabled */  | 
