]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/cxgb3/cxgb3_main.c
drivers/net: Move && and || to end of previous line
[net-next-2.6.git] / drivers / net / cxgb3 / cxgb3_main.c
index 34e776c5f06b4391e1a7bf42ff1cffb72c8b9ce7..cef3f882e2b66fd8340c7431291a60db3c61053b 100644 (file)
@@ -44,6 +44,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/firmware.h>
 #include <linux/log2.h>
+#include <linux/stringify.h>
 #include <asm/uaccess.h>
 
 #include "common.h"
@@ -344,8 +345,10 @@ static void link_start(struct net_device *dev)
 
        init_rx_mode(&rm, dev, dev->mc_list);
        t3_mac_reset(mac);
+       t3_mac_set_num_ucast(mac, MAX_MAC_IDX);
        t3_mac_set_mtu(mac, dev->mtu);
-       t3_mac_set_address(mac, 0, dev->dev_addr);
+       t3_mac_set_address(mac, LAN_MAC_IDX, dev->dev_addr);
+       t3_mac_set_address(mac, SAN_MAC_IDX, pi->iscsic.mac_addr);
        t3_mac_set_rx_mode(mac, &rm);
        t3_link_start(&pi->phy, mac, &pi->link_config);
        t3_mac_enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
@@ -903,6 +906,7 @@ static inline int offload_tx(struct t3cdev *tdev, struct sk_buff *skb)
 static int write_smt_entry(struct adapter *adapter, int idx)
 {
        struct cpl_smt_write_req *req;
+       struct port_info *pi = netdev_priv(adapter->port[idx]);
        struct sk_buff *skb = alloc_skb(sizeof(*req), GFP_KERNEL);
 
        if (!skb)
@@ -913,8 +917,8 @@ static int write_smt_entry(struct adapter *adapter, int idx)
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SMT_WRITE_REQ, idx));
        req->mtu_idx = NMTUS - 1;       /* should be 0 but there's a T3 bug */
        req->iff = idx;
-       memset(req->src_mac1, 0, sizeof(req->src_mac1));
        memcpy(req->src_mac0, adapter->port[idx]->dev_addr, ETH_ALEN);
+       memcpy(req->src_mac1, pi->iscsic.mac_addr, ETH_ALEN);
        skb->priority = 1;
        offload_tx(&adapter->tdev, skb);
        return 0;
@@ -989,11 +993,21 @@ static int bind_qsets(struct adapter *adap)
        return err;
 }
 
-#define FW_FNAME "cxgb3/t3fw-%d.%d.%d.bin"
-#define TPSRAM_NAME "cxgb3/t3%c_psram-%d.%d.%d.bin"
+#define FW_VERSION __stringify(FW_VERSION_MAJOR) "."                   \
+       __stringify(FW_VERSION_MINOR) "." __stringify(FW_VERSION_MICRO)
+#define FW_FNAME "cxgb3/t3fw-" FW_VERSION ".bin"
+#define TPSRAM_VERSION __stringify(TP_VERSION_MAJOR) "."               \
+       __stringify(TP_VERSION_MINOR) "." __stringify(TP_VERSION_MICRO)
+#define TPSRAM_NAME "cxgb3/t3%c_psram-" TPSRAM_VERSION ".bin"
 #define AEL2005_OPT_EDC_NAME "cxgb3/ael2005_opt_edc.bin"
 #define AEL2005_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
 #define AEL2020_TWX_EDC_NAME "cxgb3/ael2020_twx_edc.bin"
+MODULE_FIRMWARE(FW_FNAME);
+MODULE_FIRMWARE("cxgb3/t3b_psram-" TPSRAM_VERSION ".bin");
+MODULE_FIRMWARE("cxgb3/t3c_psram-" TPSRAM_VERSION ".bin");
+MODULE_FIRMWARE(AEL2005_OPT_EDC_NAME);
+MODULE_FIRMWARE(AEL2005_TWX_EDC_NAME);
+MODULE_FIRMWARE(AEL2020_TWX_EDC_NAME);
 
 static inline const char *get_edc_fw_name(int edc_idx)
 {
@@ -1064,16 +1078,13 @@ int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)
 static int upgrade_fw(struct adapter *adap)
 {
        int ret;
-       char buf[64];
        const struct firmware *fw;
        struct device *dev = &adap->pdev->dev;
 
-       snprintf(buf, sizeof(buf), FW_FNAME, FW_VERSION_MAJOR,
-                FW_VERSION_MINOR, FW_VERSION_MICRO);
-       ret = request_firmware(&fw, buf, dev);
+       ret = request_firmware(&fw, FW_FNAME, dev);
        if (ret < 0) {
                dev_err(dev, "could not upgrade firmware: unable to load %s\n",
-                       buf);
+                       FW_FNAME);
                return ret;
        }
        ret = t3_load_fw(adap, fw->data, fw->size);
@@ -1117,8 +1128,7 @@ static int update_tpsram(struct adapter *adap)
        if (!rev)
                return 0;
 
-       snprintf(buf, sizeof(buf), TPSRAM_NAME, rev,
-                TP_VERSION_MAJOR, TP_VERSION_MINOR, TP_VERSION_MICRO);
+       snprintf(buf, sizeof(buf), TPSRAM_NAME, rev);
 
        ret = request_firmware(&tpsram, buf, dev);
        if (ret < 0) {
@@ -2107,19 +2117,19 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
                if (t.qset_idx >= SGE_QSETS)
                        return -EINVAL;
                if (!in_range(t.intr_lat, 0, M_NEWTIMER) ||
-                       !in_range(t.cong_thres, 0, 255) ||
-                       !in_range(t.txq_size[0], MIN_TXQ_ENTRIES,
-                               MAX_TXQ_ENTRIES) ||
-                       !in_range(t.txq_size[1], MIN_TXQ_ENTRIES,
-                               MAX_TXQ_ENTRIES) ||
-                       !in_range(t.txq_size[2], MIN_CTRL_TXQ_ENTRIES,
-                               MAX_CTRL_TXQ_ENTRIES) ||
-                       !in_range(t.fl_size[0], MIN_FL_ENTRIES,
-                               MAX_RX_BUFFERS)
-                       || !in_range(t.fl_size[1], MIN_FL_ENTRIES,
-                                       MAX_RX_JUMBO_BUFFERS)
-                       || !in_range(t.rspq_size, MIN_RSPQ_ENTRIES,
-                                       MAX_RSPQ_ENTRIES))
+                   !in_range(t.cong_thres, 0, 255) ||
+                   !in_range(t.txq_size[0], MIN_TXQ_ENTRIES,
+                             MAX_TXQ_ENTRIES) ||
+                   !in_range(t.txq_size[1], MIN_TXQ_ENTRIES,
+                             MAX_TXQ_ENTRIES) ||
+                   !in_range(t.txq_size[2], MIN_CTRL_TXQ_ENTRIES,
+                             MAX_CTRL_TXQ_ENTRIES) ||
+                   !in_range(t.fl_size[0], MIN_FL_ENTRIES,
+                             MAX_RX_BUFFERS) ||
+                   !in_range(t.fl_size[1], MIN_FL_ENTRIES,
+                             MAX_RX_JUMBO_BUFFERS) ||
+                   !in_range(t.rspq_size, MIN_RSPQ_ENTRIES,
+                             MAX_RSPQ_ENTRIES))
                        return -EINVAL;
 
                if ((adapter->flags & FULL_INIT_DONE) && t.lro > 0)
@@ -2516,7 +2526,7 @@ static int cxgb_set_mac_addr(struct net_device *dev, void *p)
                return -EINVAL;
 
        memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
-       t3_mac_set_address(&pi->mac, 0, dev->dev_addr);
+       t3_mac_set_address(&pi->mac, LAN_MAC_IDX, dev->dev_addr);
        if (offload_running(adapter))
                write_smt_entry(adapter, pi->port_id);
        return 0;
@@ -2654,7 +2664,7 @@ static void check_t3b2_mac(struct adapter *adapter)
                        struct cmac *mac = &p->mac;
 
                        t3_mac_set_mtu(mac, dev->mtu);
-                       t3_mac_set_address(mac, 0, dev->dev_addr);
+                       t3_mac_set_address(mac, LAN_MAC_IDX, dev->dev_addr);
                        cxgb_set_rxmode(dev);
                        t3_link_start(&p->phy, mac, &p->link_config);
                        t3_mac_enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
@@ -3112,6 +3122,14 @@ static const struct net_device_ops cxgb_netdev_ops = {
 #endif
 };
 
+static void __devinit cxgb3_init_iscsi_mac(struct net_device *dev)
+{
+       struct port_info *pi = netdev_priv(dev);
+
+       memcpy(pi->iscsic.mac_addr, dev->dev_addr, ETH_ALEN);
+       pi->iscsic.mac_addr[3] |= 0x80;
+}
+
 static int __devinit init_one(struct pci_dev *pdev,
                              const struct pci_device_id *ent)
 {
@@ -3270,6 +3288,9 @@ static int __devinit init_one(struct pci_dev *pdev,
                goto out_free_dev;
        }
 
+       for_each_port(adapter, i)
+               cxgb3_init_iscsi_mac(adapter->port[i]);
+
        /* Driver's ready. Reflect it on LEDs */
        t3_led_ready(adapter);