OSDN Git Service

cxgb4: Print adapter VPD Part Number instead of Engineering Change field
authorKumar Sanghvi <kumaras@chelsio.com>
Tue, 18 Feb 2014 12:26:09 +0000 (17:56 +0530)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 Feb 2014 21:23:00 +0000 (16:23 -0500)
When we attach to adapter, print VPD Part Number instead of Engineering Change field.
Based on original work by Casey Leedom <leedom@chelsio.com>

Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c

index 0c4edd1..028b5e5 100644 (file)
@@ -66,6 +66,7 @@ enum {
        SERNUM_LEN = 24,    /* Serial # length */
        EC_LEN     = 16,    /* E/C length */
        ID_LEN     = 16,    /* ID length */
+       PN_LEN     = 16,    /* Part Number length */
 };
 
 enum {
@@ -254,6 +255,7 @@ struct vpd_params {
        u8 ec[EC_LEN + 1];
        u8 sn[SERNUM_LEN + 1];
        u8 id[ID_LEN + 1];
+       u8 pn[PN_LEN + 1];
 };
 
 struct pci_params {
index 1da4adb..809685d 100644 (file)
@@ -5839,8 +5839,8 @@ static void print_port_info(const struct net_device *dev)
                    is_offload(adap) ? "R" : "", adap->params.pci.width, spd,
                    (adap->flags & USING_MSIX) ? " MSI-X" :
                    (adap->flags & USING_MSI) ? " MSI" : "");
-       netdev_info(dev, "S/N: %s, E/C: %s\n",
-                   adap->params.vpd.sn, adap->params.vpd.ec);
+       netdev_info(dev, "S/N: %s, P/N: %s\n",
+                   adap->params.vpd.sn, adap->params.vpd.pn);
 }
 
 static void enable_pcie_relaxed_ordering(struct pci_dev *dev)
index 514c525..7ae756d 100644 (file)
@@ -573,7 +573,7 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
 {
        u32 cclk_param, cclk_val;
        int i, ret, addr;
-       int ec, sn;
+       int ec, sn, pn;
        u8 *vpd, csum;
        unsigned int vpdr_len, kw_offset, id_len;
 
@@ -638,6 +638,7 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
 
        FIND_VPD_KW(ec, "EC");
        FIND_VPD_KW(sn, "SN");
+       FIND_VPD_KW(pn, "PN");
 #undef FIND_VPD_KW
 
        memcpy(p->id, vpd + PCI_VPD_LRDT_TAG_SIZE, id_len);
@@ -647,6 +648,8 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
        i = pci_vpd_info_field_size(vpd + sn - PCI_VPD_INFO_FLD_HDR_SIZE);
        memcpy(p->sn, vpd + sn, min(i, SERNUM_LEN));
        strim(p->sn);
+       memcpy(p->pn, vpd + pn, min(i, PN_LEN));
+       strim(p->pn);
 
        /*
         * Ask firmware for the Core Clock since it knows how to translate the