qede: Add basic Network driver
[deliverable/linux.git] / drivers / net / ethernet / qlogic / qed / qed_l2.c
CommitLineData
25c089d7
YM
1/* QLogic qed NIC Driver
2 * Copyright (c) 2015 QLogic Corporation
3 *
4 * This software is available under the terms of the GNU General Public License
5 * (GPL) Version 2, available from the file COPYING in the main directory of
6 * this source tree.
7 */
8
9#include <linux/types.h>
10#include <asm/byteorder.h>
11#include <asm/param.h>
12#include <linux/delay.h>
13#include <linux/dma-mapping.h>
14#include <linux/etherdevice.h>
15#include <linux/interrupt.h>
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/pci.h>
19#include <linux/slab.h>
20#include <linux/stddef.h>
21#include <linux/string.h>
22#include <linux/version.h>
23#include <linux/workqueue.h>
24#include <linux/bitops.h>
25#include <linux/bug.h>
26#include "qed.h"
27#include <linux/qed/qed_chain.h>
28#include "qed_cxt.h"
29#include "qed_dev_api.h"
30#include <linux/qed/qed_eth_if.h>
31#include "qed_hsi.h"
32#include "qed_hw.h"
33#include "qed_int.h"
34#include "qed_reg_addr.h"
35#include "qed_sp.h"
36
37static int qed_fill_eth_dev_info(struct qed_dev *cdev,
38 struct qed_dev_eth_info *info)
39{
40 int i;
41
42 memset(info, 0, sizeof(*info));
43
44 info->num_tc = 1;
45
46 if (cdev->int_params.out.int_mode == QED_INT_MODE_MSIX) {
47 for_each_hwfn(cdev, i)
48 info->num_queues += FEAT_NUM(&cdev->hwfns[i],
49 QED_PF_L2_QUE);
50 if (cdev->int_params.fp_msix_cnt)
51 info->num_queues = min_t(u8, info->num_queues,
52 cdev->int_params.fp_msix_cnt);
53 } else {
54 info->num_queues = cdev->num_hwfns;
55 }
56
57 info->num_vlan_filters = RESC_NUM(&cdev->hwfns[0], QED_VLAN);
58 ether_addr_copy(info->port_mac,
59 cdev->hwfns[0].hw_info.hw_mac_addr);
60
61 qed_fill_dev_info(cdev, &info->common);
62
63 return 0;
64}
65
66static const struct qed_eth_ops qed_eth_ops_pass = {
67 .common = &qed_common_ops_pass,
68 .fill_dev_info = &qed_fill_eth_dev_info,
69};
70
71const struct qed_eth_ops *qed_get_eth_ops(u32 version)
72{
73 if (version != QED_ETH_INTERFACE_VERSION) {
74 pr_notice("Cannot supply ethtool operations [%08x != %08x]\n",
75 version, QED_ETH_INTERFACE_VERSION);
76 return NULL;
77 }
78
79 return &qed_eth_ops_pass;
80}
81EXPORT_SYMBOL(qed_get_eth_ops);
82
83void qed_put_eth_ops(void)
84{
85 /* TODO - reference count for module? */
86}
87EXPORT_SYMBOL(qed_put_eth_ops);
This page took 0.027354 seconds and 5 git commands to generate.