aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/net/intelxl.c
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2022-08-08 15:02:44 +0100
committerMichael Brown <mcb30@ipxe.org>2022-08-12 16:15:17 +0100
commitcad1cc6b449b63415ffdad8e12f13df4256106fb (patch)
tree3eee6a3efda0cb709e632f209073cffb19cc2192 /src/drivers/net/intelxl.c
parent6871a7de705b6f6a4046f0d19da9bcd689c3bc8e (diff)
downloadipxe-cad1cc6b449b63415ffdad8e12f13df4256106fb.tar.gz
[intelxl] Add driver for Intel 100 Gigabit Ethernet NICs
Add a driver for the E810 family of 100 Gigabit Ethernet NICs. The core datapath is identical to that of the 40 Gigabit XL710, and this part of the code is shared between both drivers. The admin queue mechanism is sufficiently similar to make it worth reusing substantial portions of the code, with separate implementations for several commands to handle the (unnecessarily) breaking changes in data structure layouts. The major differences are in the mechanisms for programming queue contexts (where the E810 abandons TX/RX symmetry) and for configuring the transmit scheduler and receive filters: these portions are sufficiently different to justify a separate driver. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/intelxl.c')
-rw-r--r--src/drivers/net/intelxl.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/drivers/net/intelxl.c b/src/drivers/net/intelxl.c
index c8c527d53..82b07833c 100644
--- a/src/drivers/net/intelxl.c
+++ b/src/drivers/net/intelxl.c
@@ -123,7 +123,7 @@ void intelxl_msix_disable ( struct intelxl_nic *intelxl,
*/
/** Admin queue register offsets */
-static const struct intelxl_admin_offsets intelxl_admin_offsets = {
+const struct intelxl_admin_offsets intelxl_admin_offsets = {
.bal = INTELXL_ADMIN_BAL,
.bah = INTELXL_ADMIN_BAH,
.len = INTELXL_ADMIN_LEN,
@@ -575,7 +575,7 @@ static int intelxl_admin_mac_write ( struct net_device *netdev ) {
* @v intelxl Intel device
* @ret rc Return status code
*/
-static int intelxl_admin_clear_pxe ( struct intelxl_nic *intelxl ) {
+int intelxl_admin_clear_pxe ( struct intelxl_nic *intelxl ) {
struct intelxl_admin_descriptor *cmd;
struct intelxl_admin_clear_pxe_params *pxe;
int rc;
@@ -726,7 +726,7 @@ static int intelxl_admin_promisc ( struct intelxl_nic *intelxl ) {
* @v intelxl Intel device
* @ret rc Return status code
*/
-static int intelxl_admin_mac_config ( struct intelxl_nic *intelxl ) {
+int intelxl_admin_mac_config ( struct intelxl_nic *intelxl ) {
struct intelxl_admin_descriptor *cmd;
struct intelxl_admin_mac_config_params *config;
int rc;
@@ -1280,8 +1280,8 @@ static int intelxl_disable_ring ( struct intelxl_nic *intelxl,
* @v ring Descriptor ring
* @ret rc Return status code
*/
-static int intelxl_create_ring ( struct intelxl_nic *intelxl,
- struct intelxl_ring *ring ) {
+int intelxl_create_ring ( struct intelxl_nic *intelxl,
+ struct intelxl_ring *ring ) {
physaddr_t address;
int rc;
@@ -1314,8 +1314,8 @@ static int intelxl_create_ring ( struct intelxl_nic *intelxl,
* @v intelxl Intel device
* @v ring Descriptor ring
*/
-static void intelxl_destroy_ring ( struct intelxl_nic *intelxl,
- struct intelxl_ring *ring ) {
+void intelxl_destroy_ring ( struct intelxl_nic *intelxl,
+ struct intelxl_ring *ring ) {
int rc;
/* Disable ring */