[SCSI] cxgb3i: fixed connection problem with iscsi private ip
authorkxie@chelsio.com <kxie@chelsio.com>
Tue, 11 Jan 2011 00:45:07 +0000 (16:45 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Mon, 24 Jan 2011 17:45:17 +0000 (11:45 -0600)
fixed the connection problem when the private iscsi ipv4 address is
provisioned on the interface.

Signed-off-by: Karen Xie <kxie@chelsio.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/cxgbi/cxgb3i/cxgb3i.h

index 5f5e339..20593fd 100644 (file)
 
 extern cxgb3_cpl_handler_func cxgb3i_cpl_handlers[NUM_CPL_CMDS];
 
-#define cxgb3i_get_private_ipv4addr(ndev) \
-       (((struct port_info *)(netdev_priv(ndev)))->iscsi_ipv4addr)
-#define cxgb3i_set_private_ipv4addr(ndev, addr) \
-       (((struct port_info *)(netdev_priv(ndev)))->iscsi_ipv4addr) = addr
+static inline unsigned int cxgb3i_get_private_ipv4addr(struct net_device *ndev)
+{
+       return ((struct port_info *)(netdev_priv(ndev)))->iscsi_ipv4addr;
+}
+
+static inline void cxgb3i_set_private_ipv4addr(struct net_device *ndev,
+                                               unsigned int addr)
+{
+       struct port_info *pi =  (struct port_info *)netdev_priv(ndev);
+
+       pi->iscsic.flags = addr ? 1 : 0;
+       pi->iscsi_ipv4addr = addr;
+       if (addr)
+               memcpy(pi->iscsic.mac_addr, ndev->dev_addr, ETH_ALEN);
+}
 
 struct cpl_iscsi_hdr_norss {
        union opcode_tid ot;