S2IO: Save/Restore unused buffer mappings in 2/3 buffer mode
- Save/Restore unused buffer mappings in 2/3 buffer mode to avoid frequent mapping - Save/Restore adapter reset count during adapter reset (Resending; forgot to cc netdev) Signed-off-by: Santosh Rastapur <santosh.rastapur@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
Родитель
dcd01faf66
Коммит
363dc36733
|
@ -84,7 +84,7 @@
|
||||||
#include "s2io.h"
|
#include "s2io.h"
|
||||||
#include "s2io-regs.h"
|
#include "s2io-regs.h"
|
||||||
|
|
||||||
#define DRV_VERSION "2.0.17.1"
|
#define DRV_VERSION "2.0.19.1"
|
||||||
|
|
||||||
/* S2io Driver name & version. */
|
/* S2io Driver name & version. */
|
||||||
static char s2io_driver_name[] = "Neterion";
|
static char s2io_driver_name[] = "Neterion";
|
||||||
|
@ -2242,6 +2242,7 @@ static int fill_rx_buffers(struct s2io_nic *nic, int ring_no)
|
||||||
struct buffAdd *ba;
|
struct buffAdd *ba;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct RxD_t *first_rxdp = NULL;
|
struct RxD_t *first_rxdp = NULL;
|
||||||
|
u64 Buffer0_ptr = 0, Buffer1_ptr = 0;
|
||||||
|
|
||||||
mac_control = &nic->mac_control;
|
mac_control = &nic->mac_control;
|
||||||
config = &nic->config;
|
config = &nic->config;
|
||||||
|
@ -2342,7 +2343,14 @@ static int fill_rx_buffers(struct s2io_nic *nic, int ring_no)
|
||||||
* payload
|
* payload
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* save the buffer pointers to avoid frequent dma mapping */
|
||||||
|
Buffer0_ptr = ((struct RxD3*)rxdp)->Buffer0_ptr;
|
||||||
|
Buffer1_ptr = ((struct RxD3*)rxdp)->Buffer1_ptr;
|
||||||
memset(rxdp, 0, sizeof(struct RxD3));
|
memset(rxdp, 0, sizeof(struct RxD3));
|
||||||
|
/* restore the buffer pointers for dma sync*/
|
||||||
|
((struct RxD3*)rxdp)->Buffer0_ptr = Buffer0_ptr;
|
||||||
|
((struct RxD3*)rxdp)->Buffer1_ptr = Buffer1_ptr;
|
||||||
|
|
||||||
ba = &mac_control->rings[ring_no].ba[block_no][off];
|
ba = &mac_control->rings[ring_no].ba[block_no][off];
|
||||||
skb_reserve(skb, BUF0_LEN);
|
skb_reserve(skb, BUF0_LEN);
|
||||||
tmp = (u64)(unsigned long) skb->data;
|
tmp = (u64)(unsigned long) skb->data;
|
||||||
|
@ -3307,6 +3315,7 @@ static void s2io_reset(struct s2io_nic * sp)
|
||||||
u16 subid, pci_cmd;
|
u16 subid, pci_cmd;
|
||||||
int i;
|
int i;
|
||||||
u16 val16;
|
u16 val16;
|
||||||
|
unsigned long long reset_cnt = 0;
|
||||||
DBG_PRINT(INIT_DBG,"%s - Resetting XFrame card %s\n",
|
DBG_PRINT(INIT_DBG,"%s - Resetting XFrame card %s\n",
|
||||||
__FUNCTION__, sp->dev->name);
|
__FUNCTION__, sp->dev->name);
|
||||||
|
|
||||||
|
@ -3372,6 +3381,11 @@ new_way:
|
||||||
|
|
||||||
/* Reset device statistics maintained by OS */
|
/* Reset device statistics maintained by OS */
|
||||||
memset(&sp->stats, 0, sizeof (struct net_device_stats));
|
memset(&sp->stats, 0, sizeof (struct net_device_stats));
|
||||||
|
/* save reset count */
|
||||||
|
reset_cnt = sp->mac_control.stats_info->sw_stat.soft_reset_cnt;
|
||||||
|
memset(sp->mac_control.stats_info, 0, sizeof(struct stat_block));
|
||||||
|
/* restore reset count */
|
||||||
|
sp->mac_control.stats_info->sw_stat.soft_reset_cnt = reset_cnt;
|
||||||
|
|
||||||
/* SXE-002: Configure link and activity LED to turn it off */
|
/* SXE-002: Configure link and activity LED to turn it off */
|
||||||
subid = sp->pdev->subsystem_device;
|
subid = sp->pdev->subsystem_device;
|
||||||
|
@ -4279,9 +4293,7 @@ static void s2io_updt_stats(struct s2io_nic *sp)
|
||||||
if (cnt == 5)
|
if (cnt == 5)
|
||||||
break; /* Updt failed */
|
break; /* Updt failed */
|
||||||
} while(1);
|
} while(1);
|
||||||
} else {
|
}
|
||||||
memset(sp->mac_control.stats_info, 0, sizeof(struct stat_block));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Загрузка…
Ссылка в новой задаче