-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net: ethernet: aquantia: Common functions and definitions
Add files containing the functions and definitions used in common in different functional areas. Signed-off-by: Alexander Loktionov <Alexander.Loktionov@aquantia.com> Signed-off-by: Dmitrii Tarakanov <Dmitrii.Tarakanov@aquantia.com> Signed-off-by: Pavel Belous <Pavel.Belous@aquantia.com> Signed-off-by: Dmitry Bezrukov <Dmitry.Bezrukov@aquantia.com> Signed-off-by: David M. VomLehn <vomlehn@texas.net> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
David VomLehn
authored and
David S. Miller
committed
Jan 24, 2017
1 parent
5015024
commit 3a35780
Showing
3 changed files
with
150 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/* | ||
* aQuantia Corporation Network Driver | ||
* Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms and conditions of the GNU General Public License, | ||
* version 2, as published by the Free Software Foundation. | ||
*/ | ||
|
||
/* File aq_cfg.h: Definition of configuration parameters and constants. */ | ||
|
||
#ifndef AQ_CFG_H | ||
#define AQ_CFG_H | ||
|
||
#define AQ_CFG_VECS_DEF 4U | ||
#define AQ_CFG_TCS_DEF 1U | ||
|
||
#define AQ_CFG_TXDS_DEF 4096U | ||
#define AQ_CFG_RXDS_DEF 1024U | ||
|
||
#define AQ_CFG_IS_POLLING_DEF 0U | ||
|
||
#define AQ_CFG_FORCE_LEGACY_INT 0U | ||
|
||
#define AQ_CFG_IS_INTERRUPT_MODERATION_DEF 1U | ||
#define AQ_CFG_INTERRUPT_MODERATION_RATE_DEF 0xFFFFU | ||
#define AQ_CFG_IRQ_MASK 0x1FFU | ||
|
||
#define AQ_CFG_VECS_MAX 8U | ||
#define AQ_CFG_TCS_MAX 8U | ||
|
||
#define AQ_CFG_TX_FRAME_MAX (16U * 1024U) | ||
#define AQ_CFG_RX_FRAME_MAX (4U * 1024U) | ||
|
||
/* LRO */ | ||
#define AQ_CFG_IS_LRO_DEF 1U | ||
|
||
/* RSS */ | ||
#define AQ_CFG_RSS_INDIRECTION_TABLE_MAX 128U | ||
#define AQ_CFG_RSS_HASHKEY_SIZE 320U | ||
|
||
#define AQ_CFG_IS_RSS_DEF 1U | ||
#define AQ_CFG_NUM_RSS_QUEUES_DEF AQ_CFG_VECS_DEF | ||
#define AQ_CFG_RSS_BASE_CPU_NUM_DEF 0U | ||
|
||
#define AQ_CFG_PCI_FUNC_MSIX_IRQS 9U | ||
#define AQ_CFG_PCI_FUNC_PORTS 2U | ||
|
||
#define AQ_CFG_SERVICE_TIMER_INTERVAL (2 * HZ) | ||
#define AQ_CFG_POLLING_TIMER_INTERVAL ((unsigned int)(2 * HZ)) | ||
|
||
#define AQ_CFG_SKB_FRAGS_MAX 32U | ||
|
||
#define AQ_CFG_NAPI_WEIGHT 64U | ||
|
||
#define AQ_CFG_MULTICAST_ADDRESS_MAX 32U | ||
|
||
/*#define AQ_CFG_MAC_ADDR_PERMANENT {0x30, 0x0E, 0xE3, 0x12, 0x34, 0x56}*/ | ||
|
||
#define AQ_CFG_FC_MODE 3U | ||
|
||
#define AQ_CFG_SPEED_MSK 0xFFFFU /* 0xFFFFU==auto_neg */ | ||
|
||
#define AQ_CFG_IS_AUTONEG_DEF 1U | ||
#define AQ_CFG_MTU_DEF 1514U | ||
|
||
#define AQ_CFG_LOCK_TRYS 100U | ||
|
||
#define AQ_CFG_DRV_AUTHOR "aQuantia" | ||
#define AQ_CFG_DRV_DESC "aQuantia Corporation(R) Network Driver" | ||
#define AQ_CFG_DRV_NAME "aquantia" | ||
#define AQ_CFG_DRV_VERSION __stringify(NIC_MAJOR_DRIVER_VERSION)"."\ | ||
__stringify(NIC_MINOR_DRIVER_VERSION)"."\ | ||
__stringify(NIC_BUILD_DRIVER_VERSION)"."\ | ||
__stringify(NIC_REVISION_DRIVER_VERSION) | ||
|
||
#endif /* AQ_CFG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* aQuantia Corporation Network Driver | ||
* Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms and conditions of the GNU General Public License, | ||
* version 2, as published by the Free Software Foundation. | ||
*/ | ||
|
||
/* File aq_common.h: Basic includes for all files in project. */ | ||
|
||
#ifndef AQ_COMMON_H | ||
#define AQ_COMMON_H | ||
|
||
#include <linux/etherdevice.h> | ||
#include <linux/pci.h> | ||
|
||
#include "ver.h" | ||
#include "aq_nic.h" | ||
#include "aq_cfg.h" | ||
#include "aq_utils.h" | ||
|
||
#endif /* AQ_COMMON_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* | ||
* aQuantia Corporation Network Driver | ||
* Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms and conditions of the GNU General Public License, | ||
* version 2, as published by the Free Software Foundation. | ||
*/ | ||
|
||
/* File aq_utils.h: Useful macro and structures used in all layers of driver. */ | ||
|
||
#ifndef AQ_UTILS_H | ||
#define AQ_UTILS_H | ||
|
||
#include "aq_common.h" | ||
|
||
#define AQ_DIMOF(_ARY_) ARRAY_SIZE(_ARY_) | ||
|
||
struct aq_obj_s { | ||
spinlock_t lock; /* spinlock for nic/rings processing */ | ||
atomic_t flags; | ||
atomic_t busy_count; | ||
}; | ||
|
||
static inline void aq_utils_obj_set(atomic_t *flags, u32 mask) | ||
{ | ||
unsigned long flags_old, flags_new; | ||
|
||
do { | ||
flags_old = atomic_read(flags); | ||
flags_new = flags_old | (mask); | ||
} while (atomic_cmpxchg(flags, flags_old, flags_new) != flags_old); | ||
} | ||
|
||
static inline void aq_utils_obj_clear(atomic_t *flags, u32 mask) | ||
{ | ||
unsigned long flags_old, flags_new; | ||
|
||
do { | ||
flags_old = atomic_read(flags); | ||
flags_new = flags_old & ~(mask); | ||
} while (atomic_cmpxchg(flags, flags_old, flags_new) != flags_old); | ||
} | ||
|
||
static inline bool aq_utils_obj_test(atomic_t *flags, u32 mask) | ||
{ | ||
return atomic_read(flags) & mask; | ||
} | ||
|
||
#endif /* AQ_UTILS_H */ |