summaryrefslogtreecommitdiff
path: root/net/ncsi/internal.h
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2016-07-19 04:54:17 +0300
committerDavid S. Miller <davem@davemloft.net>2016-07-20 06:49:16 +0300
commit6389eaa7fa9c3ee6c7d39f6087b86660d17236ac (patch)
tree5c915baea8427248f016c7c4630852ee37e3f538 /net/ncsi/internal.h
parent2d283bdd079c0ad4da020bbc9e9c2a4280823098 (diff)
downloadlinux-6389eaa7fa9c3ee6c7d39f6087b86660d17236ac.tar.xz
net/ncsi: NCSI command packet handler
The NCSI command packets are sent from MC (Management Controller) to remote end. They are used for multiple purposes: probe existing NCSI package/channel, retrieve NCSI channel's capability, configure NCSI channel etc. This defines struct to represent NCSI command packets and introduces function ncsi_xmit_cmd(), which will be used to transmit NCSI command packet according to the request. The request is represented by struct ncsi_cmd_arg. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Acked-by: Joel Stanley <joel@jms.id.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ncsi/internal.h')
-rw-r--r--net/ncsi/internal.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/net/ncsi/internal.h b/net/ncsi/internal.h
index 89028e1f83cd..3d81697a97d0 100644
--- a/net/ncsi/internal.h
+++ b/net/ncsi/internal.h
@@ -220,6 +220,21 @@ struct ncsi_dev_priv {
struct list_head node; /* Form NCSI device list */
};
+struct ncsi_cmd_arg {
+ struct ncsi_dev_priv *ndp; /* Associated NCSI device */
+ unsigned char type; /* Command in the NCSI packet */
+ unsigned char id; /* Request ID (sequence number) */
+ 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? */
+ union {
+ unsigned char bytes[16]; /* Command packet specific data */
+ unsigned short words[8];
+ unsigned int dwords[4];
+ };
+};
+
extern struct list_head ncsi_dev_list;
extern spinlock_t ncsi_dev_lock;
@@ -253,4 +268,8 @@ struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, bool driven);
void ncsi_free_request(struct ncsi_request *nr);
struct ncsi_dev *ncsi_find_dev(struct net_device *dev);
+/* Packet handlers */
+u32 ncsi_calculate_checksum(unsigned char *data, int len);
+int ncsi_xmit_cmd(struct ncsi_cmd_arg *nca);
+
#endif /* __NCSI_INTERNAL_H__ */