|
@@ -452,6 +452,7 @@ static void chsc_process_sei_link_incident(struct chsc_sei_nt0_area *sei_area)
|
|
|
|
|
|
static void chsc_process_sei_res_acc(struct chsc_sei_nt0_area *sei_area)
|
|
|
{
|
|
|
+ struct channel_path *chp;
|
|
|
struct chp_link link;
|
|
|
struct chp_id chpid;
|
|
|
int status;
|
|
@@ -464,10 +465,17 @@ static void chsc_process_sei_res_acc(struct chsc_sei_nt0_area *sei_area)
|
|
|
chpid.id = sei_area->rsid;
|
|
|
/* allocate a new channel path structure, if needed */
|
|
|
status = chp_get_status(chpid);
|
|
|
- if (status < 0)
|
|
|
- chp_new(chpid);
|
|
|
- else if (!status)
|
|
|
+ if (!status)
|
|
|
return;
|
|
|
+
|
|
|
+ if (status < 0) {
|
|
|
+ chp_new(chpid);
|
|
|
+ } else {
|
|
|
+ chp = chpid_to_chp(chpid);
|
|
|
+ mutex_lock(&chp->lock);
|
|
|
+ chp_update_desc(chp);
|
|
|
+ mutex_unlock(&chp->lock);
|
|
|
+ }
|
|
|
memset(&link, 0, sizeof(struct chp_link));
|
|
|
link.chpid = chpid;
|
|
|
if ((sei_area->vf & 0xc0) != 0) {
|