]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/benet/be.h
be2net: Adding PCI SRIOV support
[net-next-2.6.git] / drivers / net / benet / be.h
index 5bc74590c73e66a95eeadf924a47e329d16abc6b..20842c5fd8fb2aecde85020bf60c873c815edb7d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005 - 2009 ServerEngines
+ * Copyright (C) 2005 - 2010 ServerEngines
  * All rights reserved.
  *
  * This program is free software; you can redistribute it and/or
 
 #include "be_hw.h"
 
-#define DRV_VER                        "2.101.346u"
+#define DRV_VER                        "2.102.147u"
 #define DRV_NAME               "be2net"
 #define BE_NAME                        "ServerEngines BladeEngine2 10Gbps NIC"
 #define BE3_NAME               "ServerEngines BladeEngine3 10Gbps NIC"
 #define OC_NAME                        "Emulex OneConnect 10Gbps NIC"
 #define OC_NAME1               "Emulex OneConnect 10Gbps NIC (be3)"
-#define DRV_DESC               BE_NAME "Driver"
+#define DRV_DESC               "ServerEngines BladeEngine 10Gbps NIC Driver"
 
 #define BE_VENDOR_ID           0x19a2
 #define BE_DEVICE_ID1          0x211
 #define BE_DEVICE_ID2          0x221
 #define OC_DEVICE_ID1          0x700
-#define OC_DEVICE_ID2          0x701
-#define OC_DEVICE_ID3          0x710
+#define OC_DEVICE_ID2          0x710
 
 static inline char *nic_name(struct pci_dev *pdev)
 {
        switch (pdev->device) {
        case OC_DEVICE_ID1:
-       case OC_DEVICE_ID2:
                return OC_NAME;
-       case OC_DEVICE_ID3:
+       case OC_DEVICE_ID2:
                return OC_NAME1;
        case BE_DEVICE_ID2:
                return BE3_NAME;
@@ -85,6 +83,8 @@ static inline char *nic_name(struct pci_dev *pdev)
 
 #define FW_VER_LEN             32
 
+#define BE_MAX_VF              32
+
 struct be_dma_mem {
        void *va;
        dma_addr_t dma;
@@ -153,6 +153,7 @@ struct be_eq_obj {
 struct be_mcc_obj {
        struct be_queue_info q;
        struct be_queue_info cq;
+       bool rearm_cq;
 };
 
 struct be_drvr_stats {
@@ -165,6 +166,7 @@ struct be_drvr_stats {
        ulong be_tx_jiffies;
        u64 be_tx_bytes;
        u64 be_tx_bytes_prev;
+       u64 be_tx_pkts;
        u32 be_tx_rate;
 
        u32 cache_barrier[16];
@@ -176,6 +178,7 @@ struct be_drvr_stats {
        ulong be_rx_jiffies;
        u64 be_rx_bytes;
        u64 be_rx_bytes_prev;
+       u64 be_rx_pkts;
        u32 be_rx_rate;
        /* number of non ether type II frames dropped where
         * frame len > length field of Mac Hdr */
@@ -252,7 +255,8 @@ struct be_adapter {
        bool rx_post_starved;   /* Zero rx frags have been posted to BE */
 
        struct vlan_group *vlan_grp;
-       u16 num_vlans;
+       u16 vlans_added;
+       u16 max_vlans;  /* Number of vlans supported */
        u8 vlan_tag[VLAN_GROUP_ARRAY_LEN];
        struct be_dma_mem mc_cmd_mem;
 
@@ -266,6 +270,7 @@ struct be_adapter {
        u32 if_handle;          /* Used to configure filtering */
        u32 pmac_id;            /* MAC addr handle used by BE card */
 
+       bool eeh_err;
        bool link_up;
        u32 port_num;
        bool promiscuous;
@@ -277,8 +282,15 @@ struct be_adapter {
        u8 port_type;
        u8 transceiver;
        u8 generation;          /* BladeEngine ASIC generation */
+
+       bool sriov_enabled;
+       u32 vf_if_handle[BE_MAX_VF];
+       u32 vf_pmac_id[BE_MAX_VF];
+       u8 base_eq_id;
 };
 
+#define be_physfn(adapter) (!adapter->pdev->is_virtfn)
+
 /* BladeEngine Generation numbers */
 #define BE_GEN2 2
 #define BE_GEN3 3
@@ -287,11 +299,6 @@ extern const struct ethtool_ops be_ethtool_ops;
 
 #define drvr_stats(adapter)            (&adapter->stats.drvr_stats)
 
-static inline unsigned int be_pci_func(struct be_adapter *adapter)
-{
-       return PCI_FUNC(adapter->pdev->devfn);
-}
-
 #define BE_SET_NETDEV_OPS(netdev, ops) (netdev->netdev_ops = ops)
 
 #define PAGE_SHIFT_4K          12